Top Description Fields Constructors Methods
org.jruby.ir.targets

public Class JVMVisitor

extends IRVisitor
Class Inheritance
Imports
com.headius.invokebinder.Signature, org.jruby.Ruby, .RubyArray, .RubyBoolean, .RubyClass, .RubyComplex, .RubyFixnum, .RubyFloat, .RubyHash, .RubyModule, .RubyProc, .RubyRange, .RubyRational, .RubyString, .RubySymbol, org.jruby.compiler.NotCompilableException, org.jruby.compiler.impl.SkinnyMethodAdapter, org.jruby.exceptions.RaiseException, org.jruby.internal.runtime.methods.DynamicMethod, org.jruby.ir.IRClassBody, .IRClosure, .IRFlags, .IRMethod, .IRModuleBody, .IRScope, .IRScriptBody, .IRVisitor, .Operation, org.jruby.ir.instructions.*, org.jruby.ir.instructions.boxing.AluInstr, .BoxBooleanInstr, .BoxFixnumInstr, .BoxFloatInstr, .UnboxBooleanInstr, .UnboxFixnumInstr, .UnboxFloatInstr, org.jruby.ir.instructions.defined.GetErrorInfoInstr, .RestoreErrorInfoInstr, org.jruby.ir.instructions.specialized.OneFixnumArgNoBlockCallInstr, .OneFloatArgNoBlockCallInstr, org.jruby.ir.interpreter.FullInterpreterContext, org.jruby.ir.operands.Boolean, .Float, org.jruby.ir.operands.*, .Integer, org.jruby.ir.persistence.IRDumper, org.jruby.ir.representations.BasicBlock, org.jruby.ir.runtime.IRRuntimeHelpers, org.jruby.ir.targets.IRBytecodeAdapter.BlockPassType, .ValueCompiler.DStringElement, .ValueCompiler.DStringElementType, org.jruby.ir.targets.indy.CallTraceSite, .CoverageSite, .MetaClassBootstrap, org.jruby.parser.StaticScope, org.jruby.runtime.ArgumentDescriptor, .Block, .CallType, .DynamicScope, .Frame, .Helpers, .ThreadContext, .Visibility, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.scope.DynamicScopeGenerator, org.jruby.util.ClassDefiningClassLoader, .JavaNameMangler, .KeyValuePair, .RegexpOptions, org.jruby.util.cli.Options, org.jruby.util.collections.IntHashMap, org.jruby.util.log.Logger, .LoggerFactory, org.objectweb.asm.Handle, .Opcodes, .Type, org.objectweb.asm.commons.Method, java.io.ByteArrayOutputStream, java.lang.invoke.MethodType, java.util.ArrayList, .Arrays, .HashMap, .Iterator, .List, .Map, java.util.stream.Stream

Implementation of IRCompiler for the JVM.

Field Summary

Modifier and TypeField and Description
public static final String
public static final String
private final BytecodeMode
public static final Signature
private final Map<IRClosure, Handle>
private static final boolean
public static final String
private String
private final JVM
private static final Logger
private static final int
private static final Signature
private static final Signature
private int
private Instr
private boolean
private static final Signature
private final Ruby
pack-priv final Map<StaticScope, String>
public static final String
pack-priv final Map<String, String>
pack-priv final Map<String, StaticScope>
public static final String

Constructor Summary

AccessConstructor and Description
pack-priv
JVMVisitor(Ruby runtime, BytecodeMode bytecodeMode)

Method Summary

Modifier and TypeMethod and Description
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
private boolean
public void
private void
checkArity(int required, int opt, boolean rest, int restKey)

private void
checkArity(Operand keywords, int required, int opt, boolean rest, int restKey)

public void
public void
public void
public void
public void
public byte[]
code()

protected void
public Class<T>
compile(IRScope scope, ClassDefiningClassLoader jrubyClassLoader)

private void
public byte[]
public void
public void
public void
public void
public void
public Class<T>
defineFromBytecode(IRScope scope, byte[] code, ClassDefiningClassLoader jrubyClassLoader)

Define a scope's compiled class from bytecode.

public Class<T>
defineFromBytecode(IRScope scope, byte[] code, ClassDefiningClassLoader jrubyClassLoader, boolean setScopes)

public void
public void
public void
private void
defineRunMethod(IRScriptBody script, String scopeName, String scopeField, String clsName, Signature signature)

public Class<T>
defineScriptFromBytecode(IRScope scope, byte[] code, ClassDefiningClassLoader jrubyClassLoader)

Define a class from a top-level script's bytecode.

public void
protected void
protected Handle
emitClosure(IRClosure closure, boolean print)

private void
emitClosures(IRScope s, boolean print)

protected void
protected void
protected Handle
protected Handle
protected void
emitScope(IRScope scope, String name, Signature signature, boolean specificArity, boolean print)

protected void
protected void
emitVarargsMethodWrapper(IRScope scope, String variableName, String specificName, Signature variableSignature, Signature specificSignature)

private void
public void
public void
public void
public void
public void
public void
public void
public void
private void
genSetValue(LocalVariable localvariable)

public BytecodeMode
public void
public void
public void
public void
public void
public void
private Label
private int
private int
public void
private void
public void
public void
public void
public void
public void
public void
private SkinnyMethodAdapter
private void
private void
jvmLoadLocal(String specialVar)

private IRBytecodeAdapter
private void
private void
jvmStoreLocal(Runnable source, Variable variable)

private void
jvmStoreLocal(String specialVar)

public void
public void
public void
public void
private void
private void
private void
public void
public void
public void
public void
public void
public void
public void
public static JVMVisitor
newForAOT(Ruby runtime)

public static JVMVisitor
newForJIT(Ruby runtime)

public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
private String
pushHandlesForDef(String variableName, String specificName, IntHashMap<MethodType> signaturesExceptVariable, MethodType variable, String variableOnly, String variableAndSpecific)

public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
private StaticScope
registerScopeField(IRScope scope, String scopeField)

public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
private void
setupCallInfo(int flags)

protected static final Signature
signatureFor(IRScope method, boolean aritySplit)

public void
public void
private void
storeHeapOrStack(final Operand value, final Variable res)

public void
private void
superCommon(String name, CallInstr instr, Operand[] args, Operand definingModule, boolean[] splatMap, Operand closure)

public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
Inherited from org.jruby.ir.IRVisitor:
GlobalVariableInstrIRExceptionLabelOneFixnumArgNoBlockCallInstrOneFloatArgNoBlockCallInstrOneOperandArgNoBlockCallInstrRaiseArgumentErrorInstrZeroOperandArgNoBlockCallInstr