public abstract class org.jruby.ir.targets.InvokeSite extends java.lang.invoke.MutableCallSite
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.jruby.ir.targets.InvokeSite
super_class: java.lang.invoke.MutableCallSite
{
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean LOG_BINDING;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.atomic.AtomicLong SITE_ID;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final com.headius.invokebinder.Signature signature;
descriptor: Lcom/headius/invokebinder/Signature;
flags: (0x0010) ACC_FINAL
final com.headius.invokebinder.Signature fullSignature;
descriptor: Lcom/headius/invokebinder/Signature;
flags: (0x0010) ACC_FINAL
final int arity;
descriptor: I
flags: (0x0010) ACC_FINAL
protected final java.lang.String methodName;
descriptor: Ljava/lang/String;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
final java.lang.invoke.MethodHandle fallback;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x0010) ACC_FINAL
private final org.jruby.ir.targets.SiteTracker tracker;
descriptor: Lorg/jruby/ir/targets/SiteTracker;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long siteID;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int argOffset;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
protected final java.lang.String file;
descriptor: Ljava/lang/String;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final int line;
descriptor: I
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private boolean boundOnce;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean literalClosure;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
org.jruby.runtime.callsite.CacheEntry cache;
descriptor: Lorg/jruby/runtime/callsite/CacheEntry;
flags: (0x0000)
public final org.jruby.runtime.CallType callType;
descriptor: Lorg/jruby/runtime/CallType;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
private static final java.lang.invoke.MethodHandles$Lookup LOOKUP;
descriptor: Ljava/lang/invoke/MethodHandles$Lookup;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.MethodHandle ESCAPE_BLOCK;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Map<com.headius.invokebinder.Signature, java.lang.invoke.MethodHandle> BLOCK_ESCAPES;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Lcom/headius/invokebinder/Signature;Ljava/lang/invoke/MethodHandle;>;
public static final java.lang.invoke.MethodHandle NEGATE;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.MethodHandle TEST_CLASS;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=0, args_size=0
0: ldc Lorg/jruby/ir/targets/InvokeSite;
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.ir.targets.InvokeSite.$assertionsDisabled:Z
3: ldc Lorg/jruby/ir/targets/InvokeSite;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
4: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 5
getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
iconst_1
invokeinterface org.jruby.util.log.Logger.setDebugEnable:(Z)V
5: StackMap locals:
StackMap stack:
getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
putstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
6: new java.util.concurrent.atomic.AtomicLong
dup
lconst_1
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
putstatic org.jruby.ir.targets.InvokeSite.SITE_ID:Ljava/util/concurrent/atomic/AtomicLong;
7: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
putstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
8: getstatic java.lang.Void.TYPE:Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
iconst_0
anewarray java.lang.Class
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "escape"
invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
putstatic org.jruby.ir.targets.InvokeSite.ESCAPE_BLOCK:Ljava/lang/invoke/MethodHandle;
9: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
putstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
10: ldc Lorg/jruby/runtime/builtin/IRubyObject;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
iconst_3
anewarray java.lang.Class
dup
iconst_0
ldc Lorg/jruby/RubyNil;
aastore
dup
iconst_1
ldc Lorg/jruby/RubyBoolean$True;
aastore
dup
iconst_2
ldc Lorg/jruby/RubyBoolean$False;
aastore
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc Lorg/jruby/ir/targets/InvokeSite;
ldc "negate"
invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
putstatic org.jruby.ir.targets.InvokeSite.NEGATE:Ljava/lang/invoke/MethodHandle;
11: getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
ldc Ljava/lang/Object;
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Class;
aastore
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
12: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc Lorg/jruby/ir/targets/InvokeSite;
ldc "testClass"
invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
13: putstatic org.jruby.ir.targets.InvokeSite.TEST_CLASS:Ljava/lang/invoke/MethodHandle;
14: return
LocalVariableTable:
Start End Slot Name Signature
public java.lang.String name();
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.ir.targets.InvokeSite.methodName:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/targets/InvokeSite;
public void <init>(java.lang.invoke.MethodType, java.lang.String, org.jruby.runtime.CallType, java.lang.String, int);
descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;Ljava/lang/String;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 1
aload 2
aload 3
iconst_0
aload 4
iload 5
invokespecial org.jruby.ir.targets.InvokeSite.<init>:(Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;ZLjava/lang/String;I)V
1: return
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 2 0 this Lorg/jruby/ir/targets/InvokeSite;
0 2 1 type Ljava/lang/invoke/MethodType;
0 2 2 name Ljava/lang/String;
0 2 3 callType Lorg/jruby/runtime/CallType;
0 2 4 file Ljava/lang/String;
0 2 5 line I
MethodParameters:
Name Flags
type
name
callType
file
line
public void <init>(java.lang.invoke.MethodType, java.lang.String, org.jruby.runtime.CallType, boolean, java.lang.String, int);
descriptor: (Ljava/lang/invoke/MethodType;Ljava/lang/String;Lorg/jruby/runtime/CallType;ZLjava/lang/String;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, 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
aload 1
invokespecial java.lang.invoke.MutableCallSite.<init>:(Ljava/lang/invoke/MethodType;)V
1: aload 0
new org.jruby.ir.targets.SiteTracker
dup
invokespecial org.jruby.ir.targets.SiteTracker.<init>:()V
putfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
2: aload 0
getstatic org.jruby.ir.targets.InvokeSite.SITE_ID:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.getAndIncrement:()J
putfield org.jruby.ir.targets.InvokeSite.siteID:J
3: aload 0
getstatic org.jruby.runtime.callsite.CacheEntry.NULL_CACHE:Lorg/jruby/runtime/callsite/CacheEntry;
putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
4: aload 0
aload 2
putfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
5: aload 0
aload 3
putfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
6: aload 0
iload 4
putfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
7: aload 0
aload 5
putfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
8: aload 0
iload 6
putfield org.jruby.ir.targets.InvokeSite.line:I
9: aload 3
getstatic org.jruby.runtime.CallType.SUPER:Lorg/jruby/runtime/CallType;
if_acmpne 13
10: getstatic org.jruby.runtime.invokedynamic.JRubyCallSite.STANDARD_SUPER_SIG:Lcom/headius/invokebinder/Signature;
astore 7
start local 7 11: aload 0
iconst_4
putfield org.jruby.ir.targets.InvokeSite.argOffset:I
12: goto 15
end local 7 13: StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodType java.lang.String org.jruby.runtime.CallType int java.lang.String int
StackMap stack:
getstatic org.jruby.runtime.invokedynamic.JRubyCallSite.STANDARD_SITE_SIG:Lcom/headius/invokebinder/Signature;
astore 7
start local 7 14: aload 0
iconst_3
putfield org.jruby.ir.targets.InvokeSite.argOffset:I
15: StackMap locals: com.headius.invokebinder.Signature
StackMap stack:
aload 1
aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
iconst_1
isub
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
if_acmpne 29
16: aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
aload 0
getfield org.jruby.ir.targets.InvokeSite.argOffset:I
iconst_1
iadd
isub
istore 8
start local 8 17: iload 8
iconst_1
if_icmpne 21
aload 1
aload 0
getfield org.jruby.ir.targets.InvokeSite.argOffset:I
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
ldc [Lorg/jruby/runtime/builtin/IRubyObject;
if_acmpne 21
18: iconst_m1
istore 8
19: aload 7
ldc "args"
ldc [Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 7
20: goto 26
21: StackMap locals: int
StackMap stack:
iconst_0
istore 9
start local 9 22: goto 25
23: StackMap locals: int
StackMap stack:
aload 7
new java.lang.StringBuilder
dup
ldc "arg"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 9
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 7
24: iinc 9 1
StackMap locals:
StackMap stack:
25: iload 9
iload 8
if_icmplt 23
end local 9 26: StackMap locals:
StackMap stack:
aload 7
ldc "block"
ldc Lorg/jruby/runtime/Block;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 7
27: aload 0
aload 0
aload 7
dup_x1
putfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
putfield org.jruby.ir.targets.InvokeSite.fullSignature:Lcom/headius/invokebinder/Signature;
28: goto 41
end local 8 29: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.invoke.MethodType.parameterCount:()I
aload 0
getfield org.jruby.ir.targets.InvokeSite.argOffset:I
isub
istore 8
start local 8 30: iload 8
iconst_1
if_icmpne 34
aload 1
aload 0
getfield org.jruby.ir.targets.InvokeSite.argOffset:I
invokevirtual java.lang.invoke.MethodType.parameterType:(I)Ljava/lang/Class;
ldc [Lorg/jruby/runtime/builtin/IRubyObject;
if_acmpne 34
31: iconst_m1
istore 8
32: aload 7
ldc "args"
ldc [Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 7
33: goto 39
34: StackMap locals: int
StackMap stack:
iconst_0
istore 9
start local 9 35: goto 38
36: StackMap locals: int
StackMap stack:
aload 7
new java.lang.StringBuilder
dup
ldc "arg"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 9
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 7
37: iinc 9 1
StackMap locals:
StackMap stack:
38: iload 9
iload 8
if_icmplt 36
end local 9 39: StackMap locals:
StackMap stack:
aload 0
aload 7
putfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
40: aload 0
aload 7
ldc "block"
ldc Lorg/jruby/runtime/Block;
invokevirtual com.headius.invokebinder.Signature.appendArg:(Ljava/lang/String;Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
putfield org.jruby.ir.targets.InvokeSite.fullSignature:Lcom/headius/invokebinder/Signature;
41: StackMap locals:
StackMap stack:
aload 0
iload 8
putfield org.jruby.ir.targets.InvokeSite.arity:I
42: aload 0
aload 0
iconst_1
invokevirtual org.jruby.ir.targets.InvokeSite.prepareBinder:(Z)Lcom/headius/invokebinder/Binder;
getstatic org.jruby.ir.targets.Bootstrap.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "invoke"
invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
putfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
43: return
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 44 0 this Lorg/jruby/ir/targets/InvokeSite;
0 44 1 type Ljava/lang/invoke/MethodType;
0 44 2 name Ljava/lang/String;
0 44 3 callType Lorg/jruby/runtime/CallType;
0 44 4 literalClosure Z
0 44 5 file Ljava/lang/String;
0 44 6 line I
11 13 7 startSig Lcom/headius/invokebinder/Signature;
14 44 7 startSig Lcom/headius/invokebinder/Signature;
17 29 8 arity I
30 44 8 arity I
22 26 9 i I
35 39 9 i I
MethodParameters:
Name Flags
type
name
callType
literalClosure
file
line
public static java.lang.invoke.CallSite bootstrap(org.jruby.ir.targets.InvokeSite, java.lang.invoke.MethodHandles$Lookup);
descriptor: (Lorg/jruby/ir/targets/InvokeSite;Ljava/lang/invoke/MethodHandles$Lookup;)Ljava/lang/invoke/CallSite;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
invokevirtual org.jruby.ir.targets.InvokeSite.setInitialTarget:(Ljava/lang/invoke/MethodHandle;)V
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 site Lorg/jruby/ir/targets/InvokeSite;
0 2 1 lookup Ljava/lang/invoke/MethodHandles$Lookup;
MethodParameters:
Name Flags
site
lookup
public org.jruby.runtime.builtin.IRubyObject invoke(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=13, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
aload 3
invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
astore 6
start local 6 1: aload 6
invokevirtual org.jruby.RubyClass.getInvalidator:()Lorg/jruby/runtime/opto/Invalidator;
invokeinterface org.jruby.runtime.opto.Invalidator.getData:()Ljava/lang/Object;
checkcast java.lang.invoke.SwitchPoint
astore 7
start local 7 2: aload 6
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
astore 8
start local 8 3: aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 9
start local 9 4: aload 0
aload 8
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 11
5: aload 0
aload 6
invokevirtual org.jruby.ir.targets.InvokeSite.testThresholds:(Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
if_acmpne 9
6: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.logFail:()V
7: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.bindToFail:()Ljava/lang/invoke/MethodHandle;
pop
8: goto 10
9: StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject[] org.jruby.runtime.Block org.jruby.RubyClass java.lang.invoke.SwitchPoint org.jruby.runtime.callsite.CacheEntry org.jruby.internal.runtime.methods.DynamicMethod
StackMap stack:
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.logMethodMissing:()V
10: StackMap locals:
StackMap stack:
aload 8
aload 0
getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
aload 1
aload 3
aload 6
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
aload 4
aload 5
invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
11: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 8
invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 10
start local 10 12: aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 17
13: aload 10
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
14: aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokestatic org.jruby.ir.targets.InvokeSite.getBlockEscape:(Lcom/headius/invokebinder/Signature;)Ljava/lang/invoke/MethodHandle;
invokevirtual com.headius.invokebinder.Binder.tryFinally:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
15: aload 10
invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
16: astore 10
17: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 0
aload 10
aload 3
aload 6
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 7
invokevirtual org.jruby.ir.targets.InvokeSite.updateInvocationTarget:(Ljava/lang/invoke/MethodHandle;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Lorg/jruby/internal/runtime/methods/DynamicMethod;Ljava/lang/invoke/SwitchPoint;)Ljava/lang/invoke/MethodHandle;
pop
18: aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 25
19: aload 9
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 12
20: aload 5
invokevirtual org.jruby.runtime.Block.escape:()V
21: aload 12
areturn
22: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
23: aload 5
invokevirtual org.jruby.runtime.Block.escape:()V
24: aload 11
athrow
25: StackMap locals:
StackMap stack:
aload 9
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 26 0 this Lorg/jruby/ir/targets/InvokeSite;
0 26 1 context Lorg/jruby/runtime/ThreadContext;
0 26 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 26 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 26 4 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 26 5 block Lorg/jruby/runtime/Block;
1 26 6 selfClass Lorg/jruby/RubyClass;
2 26 7 switchPoint Ljava/lang/invoke/SwitchPoint;
3 26 8 entry Lorg/jruby/runtime/callsite/CacheEntry;
4 26 9 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
12 26 10 mh Ljava/lang/invoke/MethodHandle;
Exception table:
from to target type
19 20 22 any
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
args
block
private static java.lang.invoke.MethodHandle getBlockEscape(com.headius.invokebinder.Signature);
descriptor: (Lcom/headius/invokebinder/Signature;)Ljava/lang/invoke/MethodHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getstatic java.lang.Void.TYPE:Ljava/lang/Class;
invokevirtual com.headius.invokebinder.Signature.changeReturn:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
astore 1
start local 1 1: getstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.invoke.MethodHandle
astore 2
start local 2 2: aload 2
ifnonnull 9
3: aload 1
invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
iconst_1
anewarray java.lang.String
dup
iconst_0
4: ldc "block"
aastore
invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
5: getstatic org.jruby.ir.targets.InvokeSite.ESCAPE_BLOCK:Ljava/lang/invoke/MethodHandle;
invokevirtual com.headius.invokebinder.SmartBinder.invoke:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartHandle;
6: invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
7: astore 2
8: getstatic org.jruby.ir.targets.InvokeSite.BLOCK_ESCAPES:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: StackMap locals: com.headius.invokebinder.Signature java.lang.invoke.MethodHandle
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 signature Lcom/headius/invokebinder/Signature;
1 10 1 voidSignature Lcom/headius/invokebinder/Signature;
2 10 2 escape Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
signature
public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
aload 3
invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
astore 6
start local 6 1: aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
astore 7
start local 7 2: aload 0
getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
astore 8
start local 8 3: aload 8
aload 6
invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
ifeq 5
4: aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 7
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
5: StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
StackMap stack:
aload 6
aload 7
invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
astore 8
6: aload 0
aload 8
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 8
7: aload 8
aload 0
getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
aload 1
aload 3
aload 6
aload 7
aload 4
aload 5
invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
8: StackMap locals:
StackMap stack:
aload 0
aload 8
putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
9: aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 7
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 10 0 this Lorg/jruby/ir/targets/InvokeSite;
0 10 1 context Lorg/jruby/runtime/ThreadContext;
0 10 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 10 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 10 4 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 10 5 block Lorg/jruby/runtime/Block;
1 10 6 selfClass Lorg/jruby/RubyClass;
2 10 7 name Ljava/lang/String;
3 10 8 entry Lorg/jruby/runtime/callsite/CacheEntry;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
args
block
public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 2
aload 3
getstatic org.jruby.runtime.builtin.IRubyObject.NULL_ARRAY:[Lorg/jruby/runtime/builtin/IRubyObject;
aload 4
invokevirtual org.jruby.ir.targets.InvokeSite.fail:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;[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 1 0 this Lorg/jruby/ir/targets/InvokeSite;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
0 1 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 1 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 1 4 block Lorg/jruby/runtime/Block;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
block
public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
aload 3
invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
astore 6
start local 6 1: aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
astore 7
start local 7 2: aload 0
getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
astore 8
start local 8 3: aload 8
aload 6
invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
ifeq 5
4: aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 7
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
5: StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
StackMap stack:
aload 6
aload 7
invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
astore 8
6: aload 0
aload 8
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 8
7: aload 8
aload 0
getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
aload 1
aload 3
aload 6
aload 7
aload 4
aload 5
invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
8: StackMap locals:
StackMap stack:
aload 0
aload 8
putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
9: aload 8
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 8
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 7
aload 4
aload 5
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 10 0 this Lorg/jruby/ir/targets/InvokeSite;
0 10 1 context Lorg/jruby/runtime/ThreadContext;
0 10 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 10 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 10 4 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 5 block Lorg/jruby/runtime/Block;
1 10 6 selfClass Lorg/jruby/RubyClass;
2 10 7 name Ljava/lang/String;
3 10 8 entry Lorg/jruby/runtime/callsite/CacheEntry;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
arg0
block
public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=10, 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 1
aload 3
invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
astore 7
start local 7 1: aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
astore 8
start local 8 2: aload 0
getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
astore 9
start local 9 3: aload 9
aload 7
invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
ifeq 5
4: aload 9
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 9
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 8
aload 4
aload 5
aload 6
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
5: StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
StackMap stack:
aload 7
aload 8
invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
astore 9
6: aload 0
aload 9
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 8
7: aload 9
aload 0
getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
aload 1
aload 3
aload 7
aload 8
aload 4
aload 5
aload 6
invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
8: StackMap locals:
StackMap stack:
aload 0
aload 9
putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
9: aload 9
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 9
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 8
aload 4
aload 5
aload 6
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 10 0 this Lorg/jruby/ir/targets/InvokeSite;
0 10 1 context Lorg/jruby/runtime/ThreadContext;
0 10 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 10 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 10 4 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 5 arg1 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 6 block Lorg/jruby/runtime/Block;
1 10 7 selfClass Lorg/jruby/RubyClass;
2 10 8 name Ljava/lang/String;
3 10 9 entry Lorg/jruby/runtime/callsite/CacheEntry;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
arg0
arg1
block
public org.jruby.runtime.builtin.IRubyObject fail(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=11, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 1
aload 3
invokestatic org.jruby.ir.targets.InvokeSite.pollAndGetClass:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
astore 8
start local 8 1: aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
astore 9
start local 9 2: aload 0
getfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
astore 10
start local 10 3: aload 10
aload 8
invokevirtual org.jruby.runtime.callsite.CacheEntry.typeOk:(Lorg/jruby/RubyClass;)Z
ifeq 5
4: aload 10
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 10
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 9
aload 4
aload 5
aload 6
aload 7
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
5: StackMap locals: org.jruby.RubyClass java.lang.String org.jruby.runtime.callsite.CacheEntry
StackMap stack:
aload 8
aload 9
invokevirtual org.jruby.RubyClass.searchWithCache:(Ljava/lang/String;)Lorg/jruby/runtime/callsite/CacheEntry;
astore 10
6: aload 0
aload 10
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.methodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 8
7: aload 10
aload 0
getfield org.jruby.ir.targets.InvokeSite.callType:Lorg/jruby/runtime/CallType;
aload 1
aload 3
aload 8
aload 9
aload 4
aload 5
aload 6
aload 7
invokestatic org.jruby.ir.targets.InvokeSite.callMethodMissing:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
8: StackMap locals:
StackMap stack:
aload 0
aload 10
putfield org.jruby.ir.targets.InvokeSite.cache:Lorg/jruby/runtime/callsite/CacheEntry;
9: aload 10
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
aload 3
aload 10
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 9
aload 4
aload 5
aload 6
aload 7
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 10 0 this Lorg/jruby/ir/targets/InvokeSite;
0 10 1 context Lorg/jruby/runtime/ThreadContext;
0 10 2 caller Lorg/jruby/runtime/builtin/IRubyObject;
0 10 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 10 4 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 5 arg1 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 6 arg2 Lorg/jruby/runtime/builtin/IRubyObject;
0 10 7 block Lorg/jruby/runtime/Block;
1 10 8 selfClass Lorg/jruby/RubyClass;
2 10 9 name Ljava/lang/String;
3 10 10 entry Lorg/jruby/runtime/callsite/CacheEntry;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
context
caller
self
arg0
arg1
arg2
block
public com.headius.invokebinder.Binder prepareBinder(boolean);
descriptor: (Z)Lcom/headius/invokebinder/Binder;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
astore 2
start local 2 1: iload 1
ifne 2
aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
iconst_3
if_icmple 9
2: StackMap locals: com.headius.invokebinder.SmartBinder
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
iconst_m1
if_icmpeq 9
3: aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
ifne 6
4: aload 2
aload 0
getfield org.jruby.ir.targets.InvokeSite.argOffset:I
ldc "args"
getstatic org.jruby.runtime.builtin.IRubyObject.NULL_ARRAY:[Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
astore 2
5: goto 9
6: StackMap locals:
StackMap stack:
aload 2
7: ldc "args"
ldc "arg[0-9]+"
invokevirtual com.headius.invokebinder.SmartBinder.collect:(Ljava/lang/String;Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
8: astore 2
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
if_acmpeq 11
10: aload 2
ldc "block"
getstatic org.jruby.runtime.Block.NULL_BLOCK:Lorg/jruby/runtime/Block;
invokevirtual com.headius.invokebinder.SmartBinder.append:(Ljava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
astore 2
11: StackMap locals:
StackMap stack:
aload 2
iconst_0
ldc "site"
aload 0
invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
astore 2
12: aload 2
invokevirtual com.headius.invokebinder.SmartBinder.binder:()Lcom/headius/invokebinder/Binder;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/ir/targets/InvokeSite;
0 13 1 varargs Z
1 13 2 binder Lcom/headius/invokebinder/SmartBinder;
MethodParameters:
Name Flags
varargs
java.lang.invoke.MethodHandle getHandle(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.callsite.CacheEntry);
descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
if_acmpne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: istore 3
start local 3 3: aload 0
aload 2
aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.buildNewInstanceHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
astore 4
start local 4 4: aload 4
ifnonnull 5
aload 0
aload 2
aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.buildNotEqualHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
astore 4
5: StackMap locals: int java.lang.invoke.MethodHandle
StackMap stack:
aload 4
ifnonnull 6
aload 0
aload 2
iload 3
invokestatic org.jruby.ir.targets.Bootstrap.buildNativeHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Z)Ljava/lang/invoke/MethodHandle;
astore 4
6: StackMap locals:
StackMap stack:
aload 4
ifnonnull 7
aload 0
aload 0
aload 2
aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.buildJavaFieldHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
astore 4
7: StackMap locals:
StackMap stack:
aload 4
ifnonnull 8
aload 0
aload 2
invokestatic org.jruby.ir.targets.Bootstrap.buildIndyHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 4
8: StackMap locals:
StackMap stack:
aload 4
ifnonnull 9
aload 0
aload 2
iload 3
invokestatic org.jruby.ir.targets.Bootstrap.buildJittedHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Z)Ljava/lang/invoke/MethodHandle;
astore 4
9: StackMap locals:
StackMap stack:
aload 4
ifnonnull 10
aload 0
aload 2
aload 1
invokestatic org.jruby.ir.targets.Bootstrap.buildAttrHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
astore 4
10: StackMap locals:
StackMap stack:
aload 4
ifnonnull 11
aload 0
aload 2
aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.buildAliasHandle:(Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
astore 4
11: StackMap locals:
StackMap stack:
aload 4
ifnonnull 12
aload 0
aload 2
invokevirtual org.jruby.ir.targets.InvokeSite.buildStructHandle:(Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 4
12: StackMap locals:
StackMap stack:
aload 4
ifnonnull 13
aload 0
aload 2
invokestatic org.jruby.ir.targets.Bootstrap.buildGenericHandle:(Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 4
13: StackMap locals:
StackMap stack:
getstatic org.jruby.ir.targets.InvokeSite.$assertionsDisabled:Z
ifne 14
aload 4
ifnonnull 14
new java.lang.AssertionError
dup
ldc "we should have a method handle of some sort by now"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/jruby/ir/targets/InvokeSite;
0 15 1 self Lorg/jruby/runtime/builtin/IRubyObject;
0 15 2 entry Lorg/jruby/runtime/callsite/CacheEntry;
3 15 3 blockGiven Z
4 15 4 mh Ljava/lang/invoke/MethodHandle;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
self
entry
java.lang.invoke.MethodHandle buildJavaFieldHandle(org.jruby.ir.targets.InvokeSite, org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/ir/targets/InvokeSite;Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 4
start local 4 1: aload 4
instanceof org.jruby.java.invokers.InstanceFieldGetter
ifeq 24
2: aload 1
getfield org.jruby.ir.targets.InvokeSite.arity:I
ifne 3
aload 1
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
if_acmpne 4
StackMap locals: org.jruby.internal.runtime.methods.DynamicMethod
StackMap stack:
3: aconst_null
areturn
4: StackMap locals:
StackMap stack:
aload 4
checkcast org.jruby.java.invokers.InstanceFieldGetter
invokevirtual org.jruby.java.invokers.InstanceFieldGetter.getField:()Ljava/lang/reflect/Field;
astore 5
start local 5 5: ldc Lorg/jruby/runtime/builtin/IRubyObject;
aload 5
invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 6
aconst_null
areturn
6: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 4
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getHandle:()Ljava/lang/Object;
checkcast java.lang.invoke.MethodHandle
astore 6
start local 6 7: aload 6
ifnull 9
8: aload 6
areturn
9: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
aload 5
invokevirtual java.lang.invoke.MethodHandles$Lookup.unreflectGetter:(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;
astore 6
10: aload 3
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getNullToNilHandle:()Ljava/lang/invoke/MethodHandle;
astore 7
start local 7 11: aload 5
invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
iconst_0
anewarray java.lang.Class
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
12: ldc Ljava/lang/Object;
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Lorg/jruby/runtime/builtin/IRubyObject;
aastore
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
13: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
ldc Lorg/jruby/javasupport/JavaUtil;
ldc "objectFromJavaProxy"
invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
14: astore 8
start local 8 15: aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
iconst_1
newarray 10
dup
iconst_0
16: iconst_2
iastore
invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
17: iconst_0
iconst_1
anewarray java.lang.invoke.MethodHandle
dup
iconst_0
aload 8
aastore
invokevirtual com.headius.invokebinder.Binder.filter:(I[Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
18: aload 7
invokevirtual com.headius.invokebinder.Binder.filterReturn:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
19: aload 6
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
20: aload 6
invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
21: astore 6
22: aload 4
aload 6
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
23: aload 6
areturn
end local 8 end local 7 end local 6 end local 5 24: StackMap locals:
StackMap stack:
aload 4
instanceof org.jruby.java.invokers.InstanceFieldSetter
ifeq 46
25: aload 1
getfield org.jruby.ir.targets.InvokeSite.arity:I
iconst_1
if_icmpne 26
aload 1
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokevirtual com.headius.invokebinder.Signature.lastArgType:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/Block;
if_acmpne 27
StackMap locals:
StackMap stack:
26: aconst_null
areturn
27: StackMap locals:
StackMap stack:
aload 4
checkcast org.jruby.java.invokers.InstanceFieldSetter
invokevirtual org.jruby.java.invokers.InstanceFieldSetter.getField:()Ljava/lang/reflect/Field;
astore 5
start local 5 28: ldc Lorg/jruby/runtime/builtin/IRubyObject;
aload 5
invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 29
aconst_null
areturn
29: StackMap locals: java.lang.reflect.Field
StackMap stack:
aload 4
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getHandle:()Ljava/lang/Object;
checkcast java.lang.invoke.MethodHandle
astore 6
start local 6 30: aload 6
ifnull 32
31: aload 6
areturn
32: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
aload 5
invokevirtual java.lang.invoke.MethodHandles$Lookup.unreflectSetter:(Ljava/lang/reflect/Field;)Ljava/lang/invoke/MethodHandle;
astore 6
33: aload 5
invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
iconst_0
anewarray java.lang.Class
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
34: ldc Ljava/lang/Object;
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Lorg/jruby/runtime/builtin/IRubyObject;
aastore
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
35: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
ldc Lorg/jruby/javasupport/JavaUtil;
ldc "objectFromJavaProxy"
invokevirtual com.headius.invokebinder.Binder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
36: astore 7
start local 7 37: aload 1
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
iconst_2
newarray 10
dup
iconst_0
38: iconst_2
iastore
dup
iconst_1
iconst_3
iastore
invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
39: iconst_0
iconst_1
anewarray java.lang.invoke.MethodHandle
dup
iconst_0
aload 7
aastore
invokevirtual com.headius.invokebinder.Binder.filter:(I[Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
40: ldc Lorg/jruby/runtime/builtin/IRubyObject;
aload 3
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
invokestatic java.lang.invoke.MethodHandles.constant:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
invokevirtual com.headius.invokebinder.Binder.filterReturn:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/Binder;
41: aload 6
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
42: aload 6
invokevirtual com.headius.invokebinder.Binder.invoke:(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
43: astore 6
44: aload 4
aload 6
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
45: aload 6
areturn
end local 7 end local 6 end local 5 46: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lorg/jruby/ir/targets/InvokeSite;
0 47 1 site Lorg/jruby/ir/targets/InvokeSite;
0 47 2 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 47 3 self Lorg/jruby/runtime/builtin/IRubyObject;
1 47 4 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
5 24 5 field Ljava/lang/reflect/Field;
7 24 6 fieldHandle Ljava/lang/invoke/MethodHandle;
11 24 7 filter Ljava/lang/invoke/MethodHandle;
15 24 8 receiverConverter Ljava/lang/invoke/MethodHandle;
28 46 5 field Ljava/lang/reflect/Field;
30 46 6 fieldHandle Ljava/lang/invoke/MethodHandle;
37 46 7 receiverConverter Ljava/lang/invoke/MethodHandle;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
site
entry
self
java.lang.invoke.MethodHandle buildNewInstanceHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=7, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 4
start local 4 2: aload 4
aload 2
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getBaseNewMethod:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
if_acmpne 22
3: aload 2
checkcast org.jruby.RubyClass
astore 5
start local 5 4: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "callFunctional:initialize"
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 5
iconst_1
goto 6
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.RubyClass
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
5: iconst_0
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.RubyClass
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
6: aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
astore 6
start local 6 7: aload 6
invokevirtual java.lang.invoke.CallSite.dynamicInvoker:()Ljava/lang/invoke/MethodHandle;
astore 7
start local 7 8: ldc Lorg/jruby/runtime/builtin/IRubyObject;
ldc Lorg/jruby/runtime/builtin/IRubyObject;
iconst_0
anewarray java.lang.Class
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
9: ldc Lorg/jruby/runtime/builtin/IRubyObject;
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Lorg/jruby/RubyClass;
aastore
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/Binder;
10: iconst_0
iconst_2
anewarray java.lang.Class
dup
iconst_0
ldc Lorg/jruby/runtime/ObjectAllocator;
aastore
dup
iconst_1
ldc Lorg/jruby/Ruby;
aastore
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 5
invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
aastore
dup
iconst_1
aload 2
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
aastore
invokevirtual com.headius.invokebinder.Binder.insert:(I[Ljava/lang/Class;[Ljava/lang/Object;)Lcom/headius/invokebinder/Binder;
11: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "allocate"
invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
12: astore 8
start local 8 13: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
invokestatic com.headius.invokebinder.SmartBinder.from:(Ljava/lang/invoke/MethodHandles$Lookup;Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
14: ldc "self"
aload 8
invokevirtual com.headius.invokebinder.SmartBinder.filter:(Ljava/lang/String;Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartBinder;
15: ldc "dummy"
aload 7
invokevirtual com.headius.invokebinder.SmartBinder.fold:(Ljava/lang/String;Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartBinder;
iconst_1
anewarray java.lang.String
dup
iconst_0
16: ldc "self"
aastore
invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
17: invokevirtual com.headius.invokebinder.SmartBinder.identity:()Lcom/headius/invokebinder/SmartHandle;
18: invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
19: astore 3
20: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 22
21: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tbound as new instance creation "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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 8 end local 7 end local 6 end local 5 22: StackMap locals:
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/jruby/ir/targets/InvokeSite;
0 23 1 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 23 2 self Lorg/jruby/runtime/builtin/IRubyObject;
1 23 3 mh Ljava/lang/invoke/MethodHandle;
2 23 4 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
4 22 5 recvClass Lorg/jruby/RubyClass;
7 22 6 initSite Ljava/lang/invoke/CallSite;
8 22 7 initHandle Ljava/lang/invoke/MethodHandle;
13 22 8 allocFilter Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
entry
self
java.lang.invoke.MethodHandle buildNotEqualHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 4
start local 4 2: aload 2
invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
astore 5
start local 5 3: aload 4
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.isBuiltin:()Z
ifeq 20
4: aconst_null
astore 6
start local 6 5: aload 4
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
aload 5
invokevirtual org.jruby.Ruby.getBasicObject:()Lorg/jruby/RubyClass;
if_acmpne 10
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
ldc "!="
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
6: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "callFunctional:=="
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 7
iconst_1
goto 8
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
7: iconst_0
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
8: aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
astore 6
9: goto 14
StackMap locals:
StackMap stack:
10: aload 4
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
aload 5
invokevirtual org.jruby.Ruby.getKernel:()Lorg/jruby/RubyModule;
if_acmpne 14
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
ldc "!~"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 14
11: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "callFunctional:=~"
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 12
iconst_1
goto 13
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
12: iconst_0
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.Ruby java.lang.invoke.CallSite
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
13: aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
astore 6
14: StackMap locals:
StackMap stack:
aload 6
ifnull 20
15: aload 6
invokevirtual java.lang.invoke.CallSite.dynamicInvoker:()Ljava/lang/invoke/MethodHandle;
astore 7
start local 7 16: getstatic org.jruby.ir.targets.InvokeSite.NEGATE:Ljava/lang/invoke/MethodHandle;
iconst_1
iconst_3
anewarray java.lang.Object
dup
iconst_0
aload 5
invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
aastore
dup
iconst_1
aload 5
invokevirtual org.jruby.Ruby.getTrue:()Lorg/jruby/RubyBoolean;
aastore
dup
iconst_2
aload 5
invokevirtual org.jruby.Ruby.getFalse:()Lorg/jruby/RubyBoolean;
aastore
invokestatic java.lang.invoke.MethodHandles.insertArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;
astore 8
start local 8 17: aload 7
aload 8
invokestatic java.lang.invoke.MethodHandles.filterReturnValue:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 3
18: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 20
19: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tbound as specialized "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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 8 end local 7 end local 6 20: StackMap locals:
StackMap stack:
aload 3
areturn
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 21 0 this Lorg/jruby/ir/targets/InvokeSite;
0 21 1 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 21 2 self Lorg/jruby/runtime/builtin/IRubyObject;
1 21 3 mh Ljava/lang/invoke/MethodHandle;
2 21 4 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
3 21 5 runtime Lorg/jruby/Ruby;
5 20 6 equalSite Ljava/lang/invoke/CallSite;
16 20 7 equalHandle Ljava/lang/invoke/MethodHandle;
17 20 8 filter Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
entry
self
public static org.jruby.runtime.builtin.IRubyObject negate(org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyNil, org.jruby.RubyBoolean$True, org.jruby.RubyBoolean$False);
descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyNil;Lorg/jruby/RubyBoolean$True;Lorg/jruby/RubyBoolean$False;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
if_acmpeq 1
aload 0
aload 3
if_acmpne 2
StackMap locals:
StackMap stack:
1: aload 2
goto 3
StackMap locals:
StackMap stack:
2: aload 3
StackMap locals:
StackMap stack: org.jruby.RubyBoolean
3: areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 object Lorg/jruby/runtime/builtin/IRubyObject;
0 4 1 nil Lorg/jruby/RubyNil;
0 4 2 tru Lorg/jruby/RubyBoolean$True;
0 4 3 fals Lorg/jruby/RubyBoolean$False;
MethodParameters:
Name Flags
object
nil
tru
fals
java.lang.invoke.MethodHandle buildAliasHandle(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=7, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 4
start local 4 2: aload 4
instanceof org.jruby.internal.runtime.methods.PartialDelegatingMethod
ifeq 5
3: aload 0
aload 2
new org.jruby.runtime.callsite.CacheEntry
dup
aload 4
checkcast org.jruby.internal.runtime.methods.PartialDelegatingMethod
invokevirtual org.jruby.internal.runtime.methods.PartialDelegatingMethod.getDelegate:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
aload 1
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 1
getfield org.jruby.runtime.callsite.CacheEntry.token:I
invokespecial org.jruby.runtime.callsite.CacheEntry.<init>:(Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/RubyModule;I)V
invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 3
4: goto 16
StackMap locals: java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod
StackMap stack:
5: aload 4
instanceof org.jruby.internal.runtime.methods.AliasMethod
ifeq 16
6: aload 4
checkcast org.jruby.internal.runtime.methods.AliasMethod
astore 5
start local 5 7: aload 5
invokevirtual org.jruby.internal.runtime.methods.AliasMethod.getRealMethod:()Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 6
start local 6 8: aload 5
invokevirtual org.jruby.internal.runtime.methods.AliasMethod.getName:()Ljava/lang/String;
astore 7
start local 7 9: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
new java.lang.StringBuilder
dup
ldc "callFunctional:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
aload 0
getfield org.jruby.ir.targets.InvokeSite.literalClosure:Z
ifeq 10
iconst_1
goto 11
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.internal.runtime.methods.AliasMethod org.jruby.internal.runtime.methods.DynamicMethod java.lang.String
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType
10: iconst_0
StackMap locals: org.jruby.ir.targets.InvokeSite org.jruby.runtime.callsite.CacheEntry org.jruby.runtime.builtin.IRubyObject java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod org.jruby.internal.runtime.methods.AliasMethod org.jruby.internal.runtime.methods.DynamicMethod java.lang.String
StackMap stack: java.lang.invoke.MethodHandles$Lookup java.lang.String java.lang.invoke.MethodType int
11: aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokestatic org.jruby.ir.targets.SelfInvokeSite.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;ILjava/lang/String;I)Ljava/lang/invoke/CallSite;
checkcast org.jruby.ir.targets.InvokeSite
astore 8
start local 8 12: aload 8
aload 2
new org.jruby.runtime.callsite.CacheEntry
dup
aload 6
aload 1
getfield org.jruby.runtime.callsite.CacheEntry.sourceModule:Lorg/jruby/RubyModule;
aload 1
getfield org.jruby.runtime.callsite.CacheEntry.token:I
invokespecial org.jruby.runtime.callsite.CacheEntry.<init>:(Lorg/jruby/internal/runtime/methods/DynamicMethod;Lorg/jruby/RubyModule;I)V
invokevirtual org.jruby.ir.targets.InvokeSite.getHandle:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
astore 3
13: aload 5
aload 3
invokevirtual org.jruby.internal.runtime.methods.AliasMethod.setHandle:(Ljava/lang/Object;)V
14: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 16
15: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tbound directly through alias to "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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 8 end local 7 end local 6 end local 5 16: StackMap locals:
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/jruby/ir/targets/InvokeSite;
0 17 1 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 17 2 self Lorg/jruby/runtime/builtin/IRubyObject;
1 17 3 mh Ljava/lang/invoke/MethodHandle;
2 17 4 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
7 16 5 alias Lorg/jruby/internal/runtime/methods/AliasMethod;
8 16 6 innerMethod Lorg/jruby/internal/runtime/methods/DynamicMethod;
9 16 7 name Ljava/lang/String;
12 16 8 innerSite Lorg/jruby/ir/targets/InvokeSite;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
entry
self
java.lang.invoke.MethodHandle buildStructHandle(org.jruby.runtime.callsite.CacheEntry);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
astore 3
start local 3 2: aload 3
instanceof org.jruby.RubyStruct$Accessor
ifeq 19
3: aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
ifne 16
4: aload 3
checkcast org.jruby.RubyStruct$Accessor
astore 4
start local 4 5: aload 4
invokevirtual org.jruby.RubyStruct$Accessor.getIndex:()I
istore 5
start local 5 6: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
7: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
iconst_2
ldc Lorg/jruby/RubyStruct;
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
iconst_1
newarray 10
dup
iconst_0
8: iconst_2
iastore
invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
9: iload 5
invokevirtual com.headius.invokebinder.Binder.append:(I)Lcom/headius/invokebinder/Binder;
10: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "get"
invokevirtual com.headius.invokebinder.Binder.invokeVirtual:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
11: astore 2
12: aload 3
aload 2
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
13: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 35
14: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tbound directly as Struct accessor "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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 5 end local 4 15: goto 35
16: StackMap locals: java.lang.invoke.MethodHandle org.jruby.internal.runtime.methods.DynamicMethod
StackMap stack:
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 35
17: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tcalled struct accessor with arity > 0 "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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
18: goto 35
StackMap locals:
StackMap stack:
19: aload 3
instanceof org.jruby.RubyStruct$Mutator
ifeq 35
20: aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
iconst_1
if_icmpne 33
21: aload 3
checkcast org.jruby.RubyStruct$Mutator
astore 4
start local 4 22: aload 4
invokevirtual org.jruby.RubyStruct$Mutator.getIndex:()I
istore 5
start local 5 23: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
invokestatic com.headius.invokebinder.Binder.from:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
24: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
iconst_2
ldc Lorg/jruby/RubyStruct;
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
invokevirtual com.headius.invokebinder.Binder.cast:(Ljava/lang/invoke/MethodType;)Lcom/headius/invokebinder/Binder;
iconst_2
newarray 10
dup
iconst_0
25: iconst_2
iastore
dup
iconst_1
iconst_3
iastore
invokevirtual com.headius.invokebinder.Binder.permute:([I)Lcom/headius/invokebinder/Binder;
26: iload 5
invokevirtual com.headius.invokebinder.Binder.append:(I)Lcom/headius/invokebinder/Binder;
27: getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "set"
invokevirtual com.headius.invokebinder.Binder.invokeVirtual:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
28: astore 2
29: aload 3
aload 2
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.setHandle:(Ljava/lang/Object;)V
30: getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 35
31: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tbound directly as Struct mutator "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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 5 end local 4 32: goto 35
33: StackMap locals:
StackMap stack:
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_LOG_BINDING:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 35
34: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tcalled struct mutator with arity > 1 "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokestatic org.jruby.ir.targets.Bootstrap.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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
35: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lorg/jruby/ir/targets/InvokeSite;
0 36 1 entry Lorg/jruby/runtime/callsite/CacheEntry;
1 36 2 mh Ljava/lang/invoke/MethodHandle;
2 36 3 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
5 15 4 accessor Lorg/jruby/RubyStruct$Accessor;
6 15 5 index I
22 32 4 mutator Lorg/jruby/RubyStruct$Mutator;
23 32 5 index I
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
entry
java.lang.invoke.MethodHandle updateInvocationTarget(java.lang.invoke.MethodHandle, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyModule, org.jruby.internal.runtime.methods.DynamicMethod, java.lang.invoke.SwitchPoint);
descriptor: (Ljava/lang/invoke/MethodHandle;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Lorg/jruby/internal/runtime/methods/DynamicMethod;Ljava/lang/invoke/SwitchPoint;)Ljava/lang/invoke/MethodHandle;
flags: (0x0000)
Code:
stack=6, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 3
invokevirtual org.jruby.ir.targets.InvokeSite.testThresholds:(Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
astore 8
start local 8 1: invokestatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:()[I
aload 8
invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
iaload
tableswitch { // 1 - 4
1: 2
2: 7
3: 7
4: 4
default: 10
}
2: StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodHandle org.jruby.runtime.builtin.IRubyObject org.jruby.RubyModule org.jruby.internal.runtime.methods.DynamicMethod java.lang.invoke.SwitchPoint top top org.jruby.ir.targets.InvokeSite$CacheAction
StackMap stack:
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.logFail:()V
3: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.bindToFail:()Ljava/lang/invoke/MethodHandle;
areturn
4: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual org.jruby.ir.targets.InvokeSite.logPic:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)V
5: aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.getTarget:()Ljava/lang/invoke/MethodHandle;
astore 6
start local 6 6: goto 11
end local 6 7: StackMap locals:
StackMap stack:
aload 0
aload 8
invokevirtual org.jruby.ir.targets.InvokeSite.logBind:(Lorg/jruby/ir/targets/InvokeSite$CacheAction;)V
8: aload 0
getfield org.jruby.ir.targets.InvokeSite.fallback:Ljava/lang/invoke/MethodHandle;
astore 6
start local 6 9: goto 11
end local 6 10: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "invalid cache action: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
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
start local 6 11: StackMap locals: org.jruby.ir.targets.InvokeSite java.lang.invoke.MethodHandle org.jruby.runtime.builtin.IRubyObject org.jruby.RubyModule org.jruby.internal.runtime.methods.DynamicMethod java.lang.invoke.SwitchPoint java.lang.invoke.MethodHandle top org.jruby.ir.targets.InvokeSite$CacheAction
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
aload 3
getfield org.jruby.RubyModule.id:I
invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
12: aload 2
instanceof org.jruby.RubySymbol
ifne 18
13: aload 2
instanceof org.jruby.RubyFixnum
ifne 18
14: aload 2
instanceof org.jruby.RubyFloat
ifne 18
15: aload 2
instanceof org.jruby.RubyNil
ifne 18
16: aload 2
instanceof org.jruby.RubyBoolean$True
ifne 18
17: aload 2
instanceof org.jruby.RubyBoolean$False
ifeq 25
18: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
invokevirtual com.headius.invokebinder.Signature.asFold:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
iconst_1
anewarray java.lang.String
dup
iconst_0
19: ldc "self"
aastore
invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
20: iconst_1
ldc "selfJavaType"
aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
21: getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
iconst_2
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Object;
aastore
dup
iconst_1
ldc Ljava/lang/Class;
aastore
invokevirtual com.headius.invokebinder.SmartBinder.cast:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/headius/invokebinder/SmartBinder;
22: getstatic org.jruby.ir.targets.InvokeSite.TEST_CLASS:Ljava/lang/invoke/MethodHandle;
invokevirtual com.headius.invokebinder.SmartBinder.invoke:(Ljava/lang/invoke/MethodHandle;)Lcom/headius/invokebinder/SmartHandle;
23: astore 9
start local 9 24: goto 30
end local 9 25: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.signature:Lcom/headius/invokebinder/Signature;
getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
invokevirtual com.headius.invokebinder.Signature.changeReturn:(Ljava/lang/Class;)Lcom/headius/invokebinder/Signature;
invokestatic com.headius.invokebinder.SmartBinder.from:(Lcom/headius/invokebinder/Signature;)Lcom/headius/invokebinder/SmartBinder;
iconst_1
anewarray java.lang.String
dup
iconst_0
26: ldc "self"
aastore
invokevirtual com.headius.invokebinder.SmartBinder.permute:([Ljava/lang/String;)Lcom/headius/invokebinder/SmartBinder;
27: iconst_0
ldc "selfClass"
ldc Lorg/jruby/RubyClass;
aload 3
invokevirtual com.headius.invokebinder.SmartBinder.insert:(ILjava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Lcom/headius/invokebinder/SmartBinder;
28: getstatic org.jruby.ir.targets.Bootstrap.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc Lorg/jruby/ir/targets/Bootstrap;
ldc "testType"
invokevirtual com.headius.invokebinder.SmartBinder.invokeStaticQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/Class;Ljava/lang/String;)Lcom/headius/invokebinder/SmartHandle;
29: astore 9
start local 9 30: StackMap locals: com.headius.invokebinder.SmartHandle
StackMap stack:
aload 9
invokevirtual com.headius.invokebinder.SmartHandle.handle:()Ljava/lang/invoke/MethodHandle;
aload 1
aload 6
invokestatic java.lang.invoke.MethodHandles.guardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 7
start local 7 31: aload 5
aload 7
aload 6
invokevirtual java.lang.invoke.SwitchPoint.guardWithTest:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
astore 7
32: aload 0
aload 7
invokevirtual org.jruby.ir.targets.InvokeSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
33: aload 1
areturn
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 34 0 this Lorg/jruby/ir/targets/InvokeSite;
0 34 1 target Ljava/lang/invoke/MethodHandle;
0 34 2 self Lorg/jruby/runtime/builtin/IRubyObject;
0 34 3 testClass Lorg/jruby/RubyModule;
0 34 4 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
0 34 5 switchPoint Ljava/lang/invoke/SwitchPoint;
6 7 6 fallback Ljava/lang/invoke/MethodHandle;
9 10 6 fallback Ljava/lang/invoke/MethodHandle;
11 34 6 fallback Ljava/lang/invoke/MethodHandle;
31 34 7 gwt Ljava/lang/invoke/MethodHandle;
1 34 8 cacheAction Lorg/jruby/ir/targets/InvokeSite$CacheAction;
24 25 9 test Lcom/headius/invokebinder/SmartHandle;
30 34 9 test Lcom/headius/invokebinder/SmartHandle;
MethodParameters:
Name Flags
target
self
testClass
method
switchPoint
private void logMethodMissing();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
ifeq 2
1: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\ttriggered site #"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.siteID:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " method_missing ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
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.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/targets/InvokeSite;
private void logBind(org.jruby.ir.targets.InvokeSite$CacheAction);
descriptor: (Lorg/jruby/ir/targets/InvokeSite$CacheAction;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
ifeq 2
1: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\ttriggered site #"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.siteID:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
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.debug:(Ljava/lang/String;[Ljava/lang/Object;)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/ir/targets/InvokeSite;
0 3 1 action Lorg/jruby/ir/targets/InvokeSite$CacheAction;
MethodParameters:
Name Flags
action
private void logPic(org.jruby.internal.runtime.methods.DynamicMethod);
descriptor: (Lorg/jruby/internal/runtime/methods/DynamicMethod;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
ifeq 2
1: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tadded to PIC "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokestatic org.jruby.ir.targets.InvokeSite.logMethod:(Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
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.debug:(Ljava/lang/String;[Ljava/lang/Object;)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/ir/targets/InvokeSite;
0 3 1 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
MethodParameters:
Name Flags
method
private void logFail();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: getstatic org.jruby.ir.targets.InvokeSite.LOG_BINDING:Z
ifeq 6
1: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.clearCount:()I
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmple 4
2: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tat site #"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.siteID:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " failed more than "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " times; bailing out ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
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
3: goto 6
StackMap locals:
StackMap stack:
4: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
iconst_1
iadd
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmple 6
5: getstatic org.jruby.ir.targets.InvokeSite.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 0
getfield org.jruby.ir.targets.InvokeSite.methodName:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\tat site #"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.siteID:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " encountered more than "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " types; bailing out ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
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
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ir/targets/InvokeSite;
private java.lang.invoke.MethodHandle bindToFail();
descriptor: ()Ljava/lang/invoke/MethodHandle;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
aload 0
iconst_0
invokevirtual org.jruby.ir.targets.InvokeSite.prepareBinder:(Z)Lcom/headius/invokebinder/Binder;
getstatic org.jruby.ir.targets.InvokeSite.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
ldc "fail"
invokevirtual com.headius.invokebinder.Binder.invokeVirtualQuiet:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;)Ljava/lang/invoke/MethodHandle;
dup
astore 1
start local 1 1: invokevirtual org.jruby.ir.targets.InvokeSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/targets/InvokeSite;
1 3 1 target Ljava/lang/invoke/MethodHandle;
org.jruby.ir.targets.InvokeSite$CacheAction testThresholds(org.jruby.RubyModule);
descriptor: (Lorg/jruby/RubyModule;)Lorg/jruby/ir/targets/InvokeSite$CacheAction;
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.clearCount:()I
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXFAIL:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmpgt 3
1: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
aload 1
getfield org.jruby.RubyModule.id:I
invokevirtual org.jruby.ir.targets.SiteTracker.hasSeenType:(I)Z
ifne 4
2: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
iconst_1
iadd
getstatic org.jruby.util.cli.Options.INVOKEDYNAMIC_MAXPOLY:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
if_icmple 4
3: StackMap locals:
StackMap stack:
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.seenTypesCount:()I
ifle 7
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.getTarget:()Ljava/lang/invoke/MethodHandle;
ifnull 7
aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
aload 1
getfield org.jruby.RubyModule.id:I
invokevirtual org.jruby.ir.targets.SiteTracker.hasSeenType:(I)Z
ifne 7
5: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
aload 1
getfield org.jruby.RubyModule.id:I
invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
6: getstatic org.jruby.ir.targets.InvokeSite$CacheAction.PIC:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
areturn
7: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
invokevirtual org.jruby.ir.targets.SiteTracker.clearTypes:()V
8: aload 0
getfield org.jruby.ir.targets.InvokeSite.tracker:Lorg/jruby/ir/targets/SiteTracker;
aload 1
getfield org.jruby.RubyModule.id:I
invokevirtual org.jruby.ir.targets.SiteTracker.addType:(I)V
9: aload 0
getfield org.jruby.ir.targets.InvokeSite.boundOnce:Z
ifeq 10
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.REBIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
goto 11
StackMap locals:
StackMap stack:
10: getstatic org.jruby.ir.targets.InvokeSite$CacheAction.BIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
StackMap locals:
StackMap stack: org.jruby.ir.targets.InvokeSite$CacheAction
11: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/jruby/ir/targets/InvokeSite;
0 12 1 testClass Lorg/jruby/RubyModule;
MethodParameters:
Name Flags
testClass
public static org.jruby.RubyClass pollAndGetClass(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.jruby.runtime.ThreadContext.callThreadPoll:()V
1: aload 1
invokestatic org.jruby.RubyBasicObject.getMetaClass:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyClass;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 context Lorg/jruby/runtime/ThreadContext;
0 2 1 self Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
self
public void setTarget(java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;)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 java.lang.invoke.MutableCallSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
1: aload 0
iconst_1
putfield org.jruby.ir.targets.InvokeSite.boundOnce:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/targets/InvokeSite;
0 3 1 target Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
public void setInitialTarget(java.lang.invoke.MethodHandle);
descriptor: (Ljava/lang/invoke/MethodHandle;)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 java.lang.invoke.MutableCallSite.setTarget:(Ljava/lang/invoke/MethodHandle;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/targets/InvokeSite;
0 2 1 target Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
target
public abstract boolean methodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/builtin/IRubyObject;)Z
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
entry
caller
public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=8, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 2
aload 3
aload 4
aload 0
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
aload 5
aload 1
aload 6
aload 7
invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 1 0 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 1 1 callType Lorg/jruby/runtime/CallType;
0 1 2 context Lorg/jruby/runtime/ThreadContext;
0 1 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 1 4 selfClass Lorg/jruby/RubyClass;
0 1 5 name Ljava/lang/String;
0 1 6 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 1 7 block Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
entry
callType
context
self
selfClass
name
args
block
public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=8, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 2
aload 3
aload 4
aload 0
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
aload 5
aload 1
aload 6
aload 7
invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 1 0 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 1 1 callType Lorg/jruby/runtime/CallType;
0 1 2 context Lorg/jruby/runtime/ThreadContext;
0 1 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 1 4 selfClass Lorg/jruby/RubyClass;
0 1 5 name Ljava/lang/String;
0 1 6 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 7 block Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
entry
callType
context
self
selfClass
name
arg0
block
public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=9, locals=9, args_size=9
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 0: aload 2
aload 3
aload 4
aload 0
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
aload 5
aload 1
aload 6
aload 7
aload 8
invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 1 0 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 1 1 callType Lorg/jruby/runtime/CallType;
0 1 2 context Lorg/jruby/runtime/ThreadContext;
0 1 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 1 4 selfClass Lorg/jruby/RubyClass;
0 1 5 name Ljava/lang/String;
0 1 6 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 7 arg1 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 8 block Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
entry
callType
context
self
selfClass
name
arg0
arg1
block
public static org.jruby.runtime.builtin.IRubyObject callMethodMissing(org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.CallType, org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyClass, java.lang.String, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/callsite/CacheEntry;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=10, locals=10, args_size=10
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 0: aload 2
aload 3
aload 4
aload 0
getfield org.jruby.runtime.callsite.CacheEntry.method:Lorg/jruby/internal/runtime/methods/DynamicMethod;
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getVisibility:()Lorg/jruby/runtime/Visibility;
aload 5
aload 1
aload 6
aload 7
aload 8
aload 9
invokestatic org.jruby.runtime.Helpers.callMethodMissing:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/Visibility;Ljava/lang/String;Lorg/jruby/runtime/CallType;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
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 1 0 entry Lorg/jruby/runtime/callsite/CacheEntry;
0 1 1 callType Lorg/jruby/runtime/CallType;
0 1 2 context Lorg/jruby/runtime/ThreadContext;
0 1 3 self Lorg/jruby/runtime/builtin/IRubyObject;
0 1 4 selfClass Lorg/jruby/RubyClass;
0 1 5 name Ljava/lang/String;
0 1 6 arg0 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 7 arg1 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 8 arg2 Lorg/jruby/runtime/builtin/IRubyObject;
0 1 9 block Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
entry
callType
context
self
selfClass
name
arg0
arg1
arg2
block
private static java.lang.String logMethod(org.jruby.internal.runtime.methods.DynamicMethod);
descriptor: (Lorg/jruby/internal/runtime/methods/DynamicMethod;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "[#"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getSerialNumber:()J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
bipush 32
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.internal.runtime.methods.DynamicMethod.getImplementationClass:()Lorg/jruby/RubyModule;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
bipush 93
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 method Lorg/jruby/internal/runtime/methods/DynamicMethod;
MethodParameters:
Name Flags
method
public static boolean testClass(java.lang.Object, java.lang.Class);
descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
aload 1
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 object Ljava/lang/Object;
0 2 1 clazz Ljava/lang/Class;
RuntimeInvisibleAnnotations:
org.jruby.ir.JIT()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
org.jruby.ir.JIT()
MethodParameters:
Name Flags
object
clazz
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
ldc "[name="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ",arity="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.arity:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ",type="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.ir.targets.InvokeSite.type:()Ljava/lang/invoke/MethodType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ",file="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.file:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ",line="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.targets.InvokeSite.line:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
bipush 93
invokevirtual java.lang.StringBuilder.append:(C)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/ir/targets/InvokeSite;
static int[] $SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.jruby.ir.targets.InvokeSite$CacheAction.values:()[Lorg/jruby/ir/targets/InvokeSite$CacheAction;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.BIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
iconst_2
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.FAIL:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
iconst_1
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.PIC:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
iconst_4
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic org.jruby.ir.targets.InvokeSite$CacheAction.REBIND:Lorg/jruby/ir/targets/InvokeSite$CacheAction;
invokevirtual org.jruby.ir.targets.InvokeSite$CacheAction.ordinal:()I
iconst_3
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
dup
putstatic org.jruby.ir.targets.InvokeSite.$SWITCH_TABLE$org$jruby$ir$targets$InvokeSite$CacheAction:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
}
SourceFile: "InvokeSite.java"
NestMembers:
org.jruby.ir.targets.InvokeSite$CacheAction
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public False = org.jruby.RubyBoolean$False of org.jruby.RubyBoolean
public True = org.jruby.RubyBoolean$True of org.jruby.RubyBoolean
public Accessor = org.jruby.RubyStruct$Accessor of org.jruby.RubyStruct
public Mutator = org.jruby.RubyStruct$Mutator of org.jruby.RubyStruct
final CacheAction = org.jruby.ir.targets.InvokeSite$CacheAction of org.jruby.ir.targets.InvokeSite