public abstract class org.jruby.internal.runtime.AbstractIRMethod extends org.jruby.internal.runtime.methods.DynamicMethod implements org.jruby.internal.runtime.methods.IRMethodArgs, org.jruby.runtime.PositionAware, java.lang.Cloneable
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.jruby.internal.runtime.AbstractIRMethod
super_class: org.jruby.internal.runtime.methods.DynamicMethod
{
protected final org.jruby.runtime.Signature signature;
descriptor: Lorg/jruby/runtime/Signature;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final org.jruby.ir.IRScope method;
descriptor: Lorg/jruby/ir/IRScope;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final org.jruby.parser.StaticScope staticScope;
descriptor: Lorg/jruby/parser/StaticScope;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected int callCount;
descriptor: I
flags: (0x0004) ACC_PROTECTED
protected transient org.jruby.ir.interpreter.InterpreterContext interpreterContext;
descriptor: Lorg/jruby/ir/interpreter/InterpreterContext;
flags: (0x0084) ACC_PROTECTED, ACC_TRANSIENT
private transient org.jruby.runtime.ivars.MethodData methodData;
descriptor: Lorg/jruby/runtime/ivars/MethodData;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
public void <init>(org.jruby.ir.IRScope, org.jruby.runtime.Visibility, org.jruby.RubyModule);
descriptor: (Lorg/jruby/ir/IRScope;Lorg/jruby/runtime/Visibility;Lorg/jruby/RubyModule;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 3
aload 2
aload 1
invokevirtual org.jruby.ir.IRScope.getId:()Ljava/lang/String;
invokespecial org.jruby.internal.runtime.methods.DynamicMethod.<init>:(Lorg/jruby/RubyModule;Lorg/jruby/runtime/Visibility;Ljava/lang/String;)V
1: aload 0
iconst_0
putfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
2: aload 0
aload 1
putfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
3: aload 0
aload 1
invokevirtual org.jruby.ir.IRScope.getStaticScope:()Lorg/jruby/parser/StaticScope;
putfield org.jruby.internal.runtime.AbstractIRMethod.staticScope:Lorg/jruby/parser/StaticScope;
4: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.staticScope:Lorg/jruby/parser/StaticScope;
invokevirtual org.jruby.parser.StaticScope.determineModule:()Lorg/jruby/RubyModule;
pop
5: aload 0
aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.staticScope:Lorg/jruby/parser/StaticScope;
invokevirtual org.jruby.parser.StaticScope.getSignature:()Lorg/jruby/runtime/Signature;
putfield org.jruby.internal.runtime.AbstractIRMethod.signature:Lorg/jruby/runtime/Signature;
6: aload 3
invokevirtual org.jruby.RubyModule.getRuntime:()Lorg/jruby/Ruby;
astore 4
start local 4 7: aload 4
invokestatic org.jruby.ir.runtime.IRRuntimeHelpers.shouldPrintIR:(Lorg/jruby/Ruby;)Z
ifeq 9
8: aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.ensureInstrsReady:()Lorg/jruby/ir/interpreter/InterpreterContext;
pop
9: StackMap locals: org.jruby.internal.runtime.AbstractIRMethod org.jruby.ir.IRScope org.jruby.runtime.Visibility org.jruby.RubyModule org.jruby.Ruby
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
0 10 1 method Lorg/jruby/ir/IRScope;
0 10 2 visibility Lorg/jruby/runtime/Visibility;
0 10 3 implementationClass Lorg/jruby/RubyModule;
7 10 4 runtime Lorg/jruby/Ruby;
MethodParameters:
Name Flags
method
visibility
implementationClass
public static <T extends org.jruby.internal.runtime.AbstractIRMethod extends org.jruby.compiler.Compilable> void tryJit(org.jruby.runtime.ThreadContext, );
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/internal/runtime/AbstractIRMethod;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
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 1
getfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
ifge 3
return
3: StackMap locals:
StackMap stack:
aload 1
dup
getfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
dup_x1
iconst_1
iadd
putfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
aload 2
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getJitThreshold:()I
if_icmplt 12
4: aload 1
dup
astore 3
monitorenter
5: aload 1
getfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
iflt 8
6: aload 1
ldc -2147483648
putfield org.jruby.internal.runtime.AbstractIRMethod.callCount:I
7: aload 2
invokevirtual org.jruby.Ruby.getJITCompiler:()Lorg/jruby/compiler/JITCompiler;
aload 0
aload 1
checkcast org.jruby.compiler.Compilable
invokevirtual org.jruby.compiler.JITCompiler.buildThresholdReached:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/compiler/Compilable;)V
8: StackMap locals: org.jruby.internal.runtime.AbstractIRMethod
StackMap stack:
aload 3
monitorexit
9: goto 12
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 3
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 context Lorg/jruby/runtime/ThreadContext;
0 13 1 self TT;
1 13 2 runtime Lorg/jruby/Ruby;
Exception table:
from to target type
5 9 10 any
10 11 10 any
Signature: <T:Lorg/jruby/internal/runtime/AbstractIRMethod;:Lorg/jruby/compiler/Compilable;>(Lorg/jruby/runtime/ThreadContext;TT;)V
MethodParameters:
Name Flags
context
self
public final void setCallCount(int);
descriptor: (I)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
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.internal.runtime.AbstractIRMethod.callCount:I
2: aload 2
monitorexit
3: goto 6
StackMap locals: org.jruby.internal.runtime.AbstractIRMethod int org.jruby.internal.runtime.AbstractIRMethod
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/internal/runtime/AbstractIRMethod;
0 7 1 callCount I
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
callCount
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.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public org.jruby.parser.StaticScope getStaticScope();
descriptor: ()Lorg/jruby/parser/StaticScope;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.staticScope:Lorg/jruby/parser/StaticScope;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
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
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.ensureInstrsReady:()Lorg/jruby/ir/interpreter/InterpreterContext;
pop
1: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
checkcast org.jruby.ir.IRMethod
invokevirtual org.jruby.ir.IRMethod.getArgumentDescriptors:()[Lorg/jruby/runtime/ArgumentDescriptor;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public org.jruby.ir.interpreter.InterpreterContext ensureInstrsReady();
descriptor: ()Lorg/jruby/ir/interpreter/InterpreterContext;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aload 0
aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.retrieveInterpreterContext:()Lorg/jruby/ir/interpreter/InterpreterContext;
dup_x1
putfield org.jruby.internal.runtime.AbstractIRMethod.interpreterContext:Lorg/jruby/ir/interpreter/InterpreterContext;
areturn
3: StackMap locals: org.jruby.ir.interpreter.InterpreterContext
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
1 4 1 interpreterContext Lorg/jruby/ir/interpreter/InterpreterContext;
private org.jruby.ir.interpreter.InterpreterContext retrieveInterpreterContext();
descriptor: ()Lorg/jruby/ir/interpreter/InterpreterContext;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
instanceof org.jruby.ir.IRMethod
ifeq 3
1: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
checkcast org.jruby.ir.IRMethod
invokevirtual org.jruby.ir.IRMethod.lazilyAcquireInterpreterContext:()Lorg/jruby/ir/interpreter/InterpreterContext;
astore 1
start local 1 2: goto 4
end local 1 3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getInterpreterContext:()Lorg/jruby/ir/interpreter/InterpreterContext;
astore 1
start local 1 4: StackMap locals: org.jruby.ir.interpreter.InterpreterContext
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.implementationClass:Lorg/jruby/RubyModule;
invokevirtual org.jruby.RubyModule.getRuntime:()Lorg/jruby/Ruby;
invokestatic org.jruby.ir.runtime.IRRuntimeHelpers.shouldPrintIR:(Lorg/jruby/Ruby;)Z
ifeq 5
aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.printMethodIR:()V
5: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
2 3 1 interpreterContext Lorg/jruby/ir/interpreter/InterpreterContext;
4 6 1 interpreterContext Lorg/jruby/ir/interpreter/InterpreterContext;
protected abstract void printMethodIR();
descriptor: ()V
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
public org.jruby.runtime.Signature getSignature();
descriptor: ()Lorg/jruby/runtime/Signature;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.signature:Lorg/jruby/runtime/Signature;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public org.jruby.runtime.Arity getArity();
descriptor: ()Lorg/jruby/runtime/Arity;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.signature:Lorg/jruby/runtime/Signature;
invokevirtual org.jruby.runtime.Signature.arity:()Lorg/jruby/runtime/Arity;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public org.jruby.internal.runtime.methods.DynamicMethod dup();
descriptor: ()Lorg/jruby/internal/runtime/methods/DynamicMethod;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.clone:()Ljava/lang/Object;
checkcast org.jruby.internal.runtime.methods.DynamicMethod
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public java.lang.Object clone();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.clone:()Ljava/lang/Object;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.CloneNotSupportedException
pop
3: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "not cloneable: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
Exception table:
from to target type
0 1 2 Class java.lang.CloneNotSupportedException
public java.lang.String getFile();
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.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getFile:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public int getLine();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getLine:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public org.jruby.runtime.ivars.MethodData getMethodData();
descriptor: ()Lorg/jruby/runtime/ivars/MethodData;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.methodData:Lorg/jruby/runtime/ivars/MethodData;
ifnonnull 2
1: aload 0
aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.getIRScope:()Lorg/jruby/ir/IRScope;
checkcast org.jruby.ir.IRMethod
invokevirtual org.jruby.ir.IRMethod.getMethodData:()Lorg/jruby/runtime/ivars/MethodData;
putfield org.jruby.internal.runtime.AbstractIRMethod.methodData:Lorg/jruby/runtime/ivars/MethodData;
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.methodData:Lorg/jruby/runtime/ivars/MethodData;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
bipush 64
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 32
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.internal.runtime.AbstractIRMethod.method:Lorg/jruby/ir/IRScope;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
bipush 32
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.internal.runtime.AbstractIRMethod.getSignature:()Lorg/jruby/runtime/Signature;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/AbstractIRMethod;
}
SourceFile: "AbstractIRMethod.java"