public class org.jruby.runtime.MixedModeIRBlockBody extends org.jruby.runtime.IRBlockBody implements org.jruby.compiler.Compilable<org.jruby.runtime.CompiledIRBlockBody>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.runtime.MixedModeIRBlockBody
super_class: org.jruby.runtime.IRBlockBody
{
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
protected boolean pushScope;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
protected boolean reuseParentScope;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
private boolean displayedCFG;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.interpreter.InterpreterContext interpreterContext;
descriptor: Lorg/jruby/ir/interpreter/InterpreterContext;
flags: (0x0002) ACC_PRIVATE
private int callCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private volatile org.jruby.runtime.CompiledIRBlockBody jittedBody;
descriptor: Lorg/jruby/runtime/CompiledIRBlockBody;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/runtime/MixedModeIRBlockBody;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.jruby.runtime.MixedModeIRBlockBody.$assertionsDisabled:Z
3: ldc Lorg/jruby/runtime/MixedModeIRBlockBody;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.runtime.MixedModeIRBlockBody.LOG:Lorg/jruby/util/log/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.ir.IRClosure, org.jruby.runtime.Signature);
descriptor: (Lorg/jruby/ir/IRClosure;Lorg/jruby/runtime/Signature;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial org.jruby.runtime.IRBlockBody.<init>:(Lorg/jruby/ir/IRScope;Lorg/jruby/runtime/Signature;)V
1: aload 0
iconst_0
putfield org.jruby.runtime.MixedModeIRBlockBody.displayedCFG:Z
2: aload 0
iconst_0
putfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
3: aload 0
iconst_1
putfield org.jruby.runtime.MixedModeIRBlockBody.pushScope:Z
4: aload 0
iconst_0
putfield org.jruby.runtime.MixedModeIRBlockBody.reuseParentScope:Z
5: aload 1
invokevirtual org.jruby.ir.IRClosure.getManager:()Lorg/jruby/ir/IRManager;
invokevirtual org.jruby.ir.IRManager.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isJitEnabled:()Z
ifne 6
aload 0
iconst_m1
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.setCallCount:(I)V
6: StackMap locals: org.jruby.runtime.MixedModeIRBlockBody org.jruby.ir.IRClosure org.jruby.runtime.Signature
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 7 1 closure Lorg/jruby/ir/IRClosure;
0 7 2 signature Lorg/jruby/runtime/Signature;
MethodParameters:
Name Flags
closure
signature
public void setEvalType(org.jruby.EvalType);
descriptor: (Lorg/jruby/EvalType;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.jruby.runtime.IRBlockBody.setEvalType:(Lorg/jruby/EvalType;)V
1: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
ifnull 2
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
aload 1
invokevirtual org.jruby.runtime.CompiledIRBlockBody.setEvalType:(Lorg/jruby/EvalType;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 3 1 evalType Lorg/jruby/EvalType;
MethodParameters:
Name Flags
evalType
public boolean canCallDirect();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
ifnonnull 2
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
ifnull 1
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
invokevirtual org.jruby.ir.interpreter.InterpreterContext.hasExplicitCallProtocol:()Z
ifne 2
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
StackMap locals:
StackMap stack:
2: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
public void setCallCount(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
dup
astore 2
monitorenter
1: aload 0
iload 1
putfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
2: aload 2
monitorexit
3: goto 6
StackMap locals: org.jruby.runtime.MixedModeIRBlockBody int org.jruby.runtime.MixedModeIRBlockBody
StackMap stack: java.lang.Throwable
4: aload 2
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 7 1 callCount I
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
callCount
public void completeBuild(org.jruby.runtime.CompiledIRBlockBody);
descriptor: (Lorg/jruby/runtime/CompiledIRBlockBody;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iconst_m1
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.setCallCount:(I)V
1: aload 1
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.evalType:Ljava/lang/ThreadLocal;
putfield org.jruby.runtime.CompiledIRBlockBody.evalType:Ljava/lang/ThreadLocal;
2: aload 0
aload 1
putfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 4 1 blockBody Lorg/jruby/runtime/CompiledIRBlockBody;
MethodParameters:
Name Flags
blockBody
public org.jruby.ir.IRScope getIRScope();
descriptor: ()Lorg/jruby/ir/IRScope;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
public org.jruby.runtime.BlockBody getJittedBody();
descriptor: ()Lorg/jruby/runtime/BlockBody;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
public org.jruby.runtime.ArgumentDescriptor[] getArgumentDescriptors();
descriptor: ()[Lorg/jruby/runtime/ArgumentDescriptor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getArgumentDescriptors:()[Lorg/jruby/runtime/ArgumentDescriptor;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
public org.jruby.ir.interpreter.InterpreterContext ensureInstrsReady();
descriptor: ()Lorg/jruby/ir/interpreter/InterpreterContext;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: invokestatic org.jruby.ir.runtime.IRRuntimeHelpers.isDebug:()Z
ifeq 4
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.displayedCFG:Z
ifne 4
1: getstatic org.jruby.runtime.MixedModeIRBlockBody.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Executing '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' (pushScope="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.pushScope:Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
ldc ", reuseParentScope="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.reuseParentScope:Z
invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: getstatic org.jruby.runtime.MixedModeIRBlockBody.LOG:Lorg/jruby/util/log/Logger;
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.debugOutput:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
3: aload 0
iconst_1
putfield org.jruby.runtime.MixedModeIRBlockBody.displayedCFG:Z
4: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
ifnonnull 9
5: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getStaticScope:()Lorg/jruby/parser/StaticScope;
invokevirtual org.jruby.parser.StaticScope.getModule:()Lorg/jruby/RubyModule;
invokevirtual org.jruby.RubyModule.getRuntime:()Lorg/jruby/Ruby;
invokestatic org.jruby.ir.runtime.IRRuntimeHelpers.shouldPrintIR:(Lorg/jruby/Ruby;)Z
ifeq 8
6: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
iconst_0
invokestatic org.jruby.ir.persistence.IRDumper.printIR:(Lorg/jruby/ir/IRScope;Z)Ljava/io/ByteArrayOutputStream;
astore 1
start local 1 7: getstatic org.jruby.runtime.MixedModeIRBlockBody.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Printing simple IR for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getId:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 1 8: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getInterpreterContext:()Lorg/jruby/ir/interpreter/InterpreterContext;
putfield org.jruby.runtime.MixedModeIRBlockBody.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
7 8 1 baos Ljava/io/ByteArrayOutputStream;
public java.lang.String getName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getId:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
protected org.jruby.runtime.builtin.IRubyObject callDirect(org.jruby.runtime.ThreadContext, org.jruby.runtime.Block, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.jruby.runtime.MixedModeIRBlockBody.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
ifnonnull 1
new java.lang.AssertionError
dup
ldc "direct call in MixedModeIRBlockBody without jitted body"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
aload 1
aload 2
aload 3
aload 4
invokevirtual org.jruby.runtime.CompiledIRBlockBody.callDirect:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 2 1 context Lorg/jruby/runtime/ThreadContext;
0 2 2 block Lorg/jruby/runtime/Block;
0 2 3 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 2 4 blockArg Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
context
block
args
blockArg
protected org.jruby.runtime.builtin.IRubyObject yieldDirect(org.jruby.runtime.ThreadContext, org.jruby.runtime.Block, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.jruby.runtime.MixedModeIRBlockBody.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
ifnonnull 1
new java.lang.AssertionError
dup
ldc "direct yield in MixedModeIRBlockBody without jitted body"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.jittedBody:Lorg/jruby/runtime/CompiledIRBlockBody;
aload 1
aload 2
aload 3
aload 4
invokevirtual org.jruby.runtime.CompiledIRBlockBody.yieldDirect:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 2 1 context Lorg/jruby/runtime/ThreadContext;
0 2 2 block Lorg/jruby/runtime/Block;
0 2 3 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 2 4 self Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
block
args
self
protected org.jruby.runtime.builtin.IRubyObject commonYieldPath(org.jruby.runtime.ThreadContext, org.jruby.runtime.Block, org.jruby.runtime.Block$Type, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;Lorg/jruby/runtime/Block$Type;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=14, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
iflt 1
aload 0
aload 1
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.promoteToFullBuild:(Lorg/jruby/runtime/ThreadContext;)V
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.ensureInstrsReady:()Lorg/jruby/ir/interpreter/InterpreterContext;
astore 7
start local 7 2: aload 2
invokevirtual org.jruby.runtime.Block.getBinding:()Lorg/jruby/runtime/Binding;
astore 8
start local 8 3: aload 8
invokevirtual org.jruby.runtime.Binding.getFrame:()Lorg/jruby/runtime/Frame;
invokevirtual org.jruby.runtime.Frame.getVisibility:()Lorg/jruby/runtime/Visibility;
astore 9
start local 9 4: aload 1
aload 8
invokevirtual org.jruby.runtime.ThreadContext.preYieldNoScope:(Lorg/jruby/runtime/Binding;)Lorg/jruby/runtime/Frame;
astore 10
start local 10 5: aload 8
invokevirtual org.jruby.runtime.Binding.getDynamicScope:()Lorg/jruby/runtime/DynamicScope;
astore 11
start local 11 6: aload 7
invokevirtual org.jruby.ir.interpreter.InterpreterContext.pushNewDynScope:()Z
ifeq 9
7: aload 1
aload 2
aload 11
invokevirtual org.jruby.runtime.Block.allocScope:(Lorg/jruby/runtime/DynamicScope;)Lorg/jruby/runtime/DynamicScope;
invokevirtual org.jruby.runtime.ThreadContext.pushScope:(Lorg/jruby/runtime/DynamicScope;)V
8: goto 11
StackMap locals: org.jruby.runtime.MixedModeIRBlockBody org.jruby.runtime.ThreadContext org.jruby.runtime.Block org.jruby.runtime.Block$Type org.jruby.runtime.builtin.IRubyObject[] org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.Block org.jruby.ir.interpreter.InterpreterContext org.jruby.runtime.Binding org.jruby.runtime.Visibility org.jruby.runtime.Frame org.jruby.runtime.DynamicScope
StackMap stack:
9: aload 7
invokevirtual org.jruby.ir.interpreter.InterpreterContext.reuseParentDynScope:()Z
ifeq 11
10: aload 1
aload 11
invokevirtual org.jruby.runtime.ThreadContext.pushScope:(Lorg/jruby/runtime/DynamicScope;)V
11: StackMap locals:
StackMap stack:
aload 2
aload 5
invokestatic org.jruby.ir.runtime.IRRuntimeHelpers.updateBlockState:(Lorg/jruby/runtime/Block;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 5
12: aload 1
aload 2
aload 5
aload 7
aload 4
aload 8
invokevirtual org.jruby.runtime.Binding.getMethod:()Ljava/lang/String;
aload 6
invokestatic org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ir/interpreter/InterpreterContext;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/lang/String;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 13
13: aload 1
aload 7
aload 8
aload 9
aload 10
invokestatic org.jruby.runtime.MixedModeIRBlockBody.postYield:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ir/interpreter/InterpreterContext;Lorg/jruby/runtime/Binding;Lorg/jruby/runtime/Visibility;Lorg/jruby/runtime/Frame;)V
14: aload 13
areturn
15: StackMap locals:
StackMap stack: java.lang.Throwable
astore 12
16: aload 1
aload 7
aload 8
aload 9
aload 10
invokestatic org.jruby.runtime.MixedModeIRBlockBody.postYield:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ir/interpreter/InterpreterContext;Lorg/jruby/runtime/Binding;Lorg/jruby/runtime/Visibility;Lorg/jruby/runtime/Frame;)V
17: aload 12
athrow
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 18 1 context Lorg/jruby/runtime/ThreadContext;
0 18 2 block Lorg/jruby/runtime/Block;
0 18 3 type Lorg/jruby/runtime/Block$Type;
0 18 4 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 18 5 self Lorg/jruby/runtime/builtin/IRubyObject;
0 18 6 blockArg Lorg/jruby/runtime/Block;
2 18 7 ic Lorg/jruby/ir/interpreter/InterpreterContext;
3 18 8 binding Lorg/jruby/runtime/Binding;
4 18 9 oldVis Lorg/jruby/runtime/Visibility;
5 18 10 prevFrame Lorg/jruby/runtime/Frame;
6 18 11 actualScope Lorg/jruby/runtime/DynamicScope;
Exception table:
from to target type
12 13 15 any
MethodParameters:
Name Flags
context
block
type
args
self
blockArg
private void promoteToFullBuild(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
astore 2
start local 2 1: aload 2
invokevirtual org.jruby.Ruby.isBooting:()Z
ifeq 2
getstatic org.jruby.util.cli.Options.JIT_KERNEL:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 2
return
2: StackMap locals: org.jruby.Ruby
StackMap stack:
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
ifge 3
return
3: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
dup_x1
iconst_1
iadd
putfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
aload 2
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getJitThreshold:()I
if_icmplt 19
4: aload 0
dup
astore 3
monitorenter
5: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
iflt 15
6: aload 0
ldc -2147483648
putfield org.jruby.runtime.MixedModeIRBlockBody.callCount:I
7: aload 0
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.ensureInstrsReady:()Lorg/jruby/ir/interpreter/InterpreterContext;
pop
8: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getNearestTopLocalVariableScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.prepareForCompilation:()[Lorg/jruby/ir/representations/BasicBlock;
pop
9: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.hasExplicitCallProtocol:()Z
ifne 14
10: getstatic org.jruby.util.cli.Options.JIT_LOGGING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 12
11: getstatic org.jruby.runtime.MixedModeIRBlockBody.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "JIT failed; no protocol found in block: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
12: StackMap locals: org.jruby.runtime.MixedModeIRBlockBody
StackMap stack:
aload 3
monitorexit
13: return
14: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.jruby.Ruby.getJITCompiler:()Lorg/jruby/compiler/JITCompiler;
aload 1
aload 0
invokevirtual org.jruby.compiler.JITCompiler.buildThresholdReached:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/compiler/Compilable;)V
15: StackMap locals:
StackMap stack:
aload 3
monitorexit
16: goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
17: aload 3
monitorexit
18: athrow
19: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
0 20 1 context Lorg/jruby/runtime/ThreadContext;
1 20 2 runtime Lorg/jruby/Ruby;
Exception table:
from to target type
5 13 17 any
14 16 17 any
17 18 17 any
MethodParameters:
Name Flags
context
public org.jruby.RubyModule getImplementationClass();
descriptor: ()Lorg/jruby/RubyModule;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.runtime.MixedModeIRBlockBody.closure:Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRClosure.getStaticScope:()Lorg/jruby/parser/StaticScope;
invokevirtual org.jruby.parser.StaticScope.getModule:()Lorg/jruby/RubyModule;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/runtime/MixedModeIRBlockBody;
public void completeBuild(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast org.jruby.runtime.CompiledIRBlockBody
invokevirtual org.jruby.runtime.MixedModeIRBlockBody.completeBuild:(Lorg/jruby/runtime/CompiledIRBlockBody;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lorg/jruby/runtime/IRBlockBody;Lorg/jruby/compiler/Compilable<Lorg/jruby/runtime/CompiledIRBlockBody;>;
SourceFile: "MixedModeIRBlockBody.java"
InnerClasses:
public final Type = org.jruby.runtime.Block$Type of org.jruby.runtime.Block