public class org.jruby.specialized.RubyObjectSpecializer
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.specialized.RubyObjectSpecializer
super_class: java.lang.Object
{
public static final java.lang.invoke.MethodHandles$Lookup LOOKUP;
descriptor: Ljava/lang/invoke/MethodHandles$Lookup;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final org.jruby.util.collections.NonBlockingHashMapLong<org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator> SPECIALIZED_CLASSES;
descriptor: Lorg/jruby/util/collections/NonBlockingHashMapLong;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lorg/jruby/util/collections/NonBlockingHashMapLong<Lorg/jruby/specialized/RubyObjectSpecializer$ClassAndAllocator;>;
private static final org.jruby.util.ClassDefiningClassLoader LOADER;
descriptor: Lorg/jruby/util/ClassDefiningClassLoader;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
putstatic org.jruby.specialized.RubyObjectSpecializer.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
1: new org.jruby.util.collections.NonBlockingHashMapLong
dup
invokespecial org.jruby.util.collections.NonBlockingHashMapLong.<init>:()V
putstatic org.jruby.specialized.RubyObjectSpecializer.SPECIALIZED_CLASSES:Lorg/jruby/util/collections/NonBlockingHashMapLong;
2: new org.jruby.util.OneShotClassLoader
dup
invokestatic org.jruby.Ruby.getClassLoader:()Ljava/lang/ClassLoader;
invokespecial org.jruby.util.OneShotClassLoader.<init>:(Ljava/lang/ClassLoader;)V
putstatic org.jruby.specialized.RubyObjectSpecializer.LOADER:Lorg/jruby/util/ClassDefiningClassLoader;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/specialized/RubyObjectSpecializer;
private static org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator getClassForSize(int);
descriptor: (I)Lorg/jruby/specialized/RubyObjectSpecializer$ClassAndAllocator;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic org.jruby.specialized.RubyObjectSpecializer.SPECIALIZED_CLASSES:Lorg/jruby/util/collections/NonBlockingHashMapLong;
iload 0
i2l
invokevirtual org.jruby.util.collections.NonBlockingHashMapLong.get:(J)Ljava/lang/Object;
checkcast org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 size I
MethodParameters:
Name Flags
size
public static org.jruby.runtime.ObjectAllocator specializeForVariables(org.jruby.RubyClass, java.util.Set<java.lang.String>);
descriptor: (Lorg/jruby/RubyClass;Ljava/util/Set;)Lorg/jruby/runtime/ObjectAllocator;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=9, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.Set.size:()I
istore 2
start local 2 1: iload 2
getstatic org.jruby.util.cli.Options.REIFY_VARIABLES_MAX:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
invokestatic java.lang.Math.min:(II)I
istore 2
2: aconst_null
astore 3
start local 3 3: aconst_null
astore 4
start local 4 4: getstatic org.jruby.util.cli.Options.REIFY_VARIABLES_NAME:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 11
5: aload 0
invokevirtual org.jruby.RubyClass.getName:()Ljava/lang/String;
astore 4
6: aload 4
ldc "#"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 9
7: new java.lang.StringBuilder
dup
ldc "Anonymous"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
8: goto 14
9: StackMap locals: int org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator java.lang.String
StackMap stack:
aload 4
ldc "::"
ldc "/"
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
astore 4
10: goto 14
11: StackMap locals:
StackMap stack:
iload 2
invokestatic org.jruby.specialized.RubyObjectSpecializer.getClassForSize:(I)Lorg/jruby/specialized/RubyObjectSpecializer$ClassAndAllocator;
astore 3
12: aload 3
ifnonnull 14
13: new java.lang.StringBuilder
dup
ldc "RubyObject"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
14: StackMap locals:
StackMap stack:
aload 4
ifnull 32
15: new java.lang.StringBuilder
dup
ldc "org/jruby/gen/"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 16: getstatic org.jruby.specialized.RubyObjectSpecializer.LOADER:Lorg/jruby/util/ClassDefiningClassLoader;
dup
astore 6
monitorenter
17: getstatic org.jruby.specialized.RubyObjectSpecializer.LOADER:Lorg/jruby/util/ClassDefiningClassLoader;
aload 5
bipush 47
bipush 46
invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
invokeinterface org.jruby.util.ClassDefiningClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
astore 7
start local 7 18: goto 21
end local 7 StackMap locals: org.jruby.RubyClass java.util.Set int org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator java.lang.String java.lang.String org.jruby.util.ClassDefiningClassLoader
StackMap stack: java.lang.ClassNotFoundException
19: pop
20: iload 2
aload 5
invokestatic org.jruby.specialized.RubyObjectSpecializer.generateInternal:(ILjava/lang/String;)Ljava/lang/Class;
astore 7
start local 7 21: StackMap locals: java.lang.Class
StackMap stack:
aload 7
invokevirtual java.lang.Class.getDeclaredClasses:()[Ljava/lang/Class;
iconst_0
aaload
invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
checkcast org.jruby.runtime.ObjectAllocator
astore 8
start local 8 22: new org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator
dup
aload 7
aload 8
invokespecial org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.<init>:(Ljava/lang/Class;Lorg/jruby/runtime/ObjectAllocator;)V
astore 3
23: getstatic org.jruby.util.cli.Options.REIFY_VARIABLES_NAME:Lcom/headius/options/Option;
invokevirtual com.headius.options.Option.load:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 28
24: getstatic org.jruby.specialized.RubyObjectSpecializer.SPECIALIZED_CLASSES:Lorg/jruby/util/collections/NonBlockingHashMapLong;
iload 2
i2l
aload 3
invokevirtual org.jruby.util.collections.NonBlockingHashMapLong.put:(JLjava/lang/Object;)Ljava/lang/Object;
pop
end local 8 25: goto 28
StackMap locals:
StackMap stack: java.lang.Throwable
26: astore 8
start local 8 27: new java.lang.RuntimeException
dup
aload 8
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 8 end local 7 28: StackMap locals:
StackMap stack:
aload 6
monitorexit
29: goto 32
StackMap locals:
StackMap stack: java.lang.Throwable
30: aload 6
monitorexit
31: athrow
end local 5 32: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 33: aload 1
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 7
goto 42
StackMap locals: org.jruby.RubyClass java.util.Set int org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator java.lang.String int top java.util.Iterator
StackMap stack:
34: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 35: aload 0
invokevirtual org.jruby.RubyClass.getVariableTableManager:()Lorg/jruby/runtime/ivars/VariableTableManager;
36: aload 6
37: getstatic org.jruby.specialized.RubyObjectSpecializer.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
aload 3
getfield org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.cls:Ljava/lang/Class;
new java.lang.StringBuilder
dup
ldc "var"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Ljava/lang/Object;
invokevirtual java.lang.invoke.MethodHandles$Lookup.findGetter:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
38: getstatic org.jruby.specialized.RubyObjectSpecializer.LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
aload 3
getfield org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.cls:Ljava/lang/Class;
new java.lang.StringBuilder
dup
ldc "var"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc Ljava/lang/Object;
invokevirtual java.lang.invoke.MethodHandles$Lookup.findSetter:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
39: invokevirtual org.jruby.runtime.ivars.VariableTableManager.getVariableAccessorForVar:(Ljava/lang/String;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Lorg/jruby/runtime/ivars/VariableAccessor;
pop
40: iinc 5 1
41: iload 5
iload 2
if_icmplt 42
goto 46
end local 6 42: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 34
end local 5 43: goto 46
StackMap locals: org.jruby.RubyClass java.util.Set int org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator java.lang.String
StackMap stack: java.lang.ReflectiveOperationException
44: astore 5
start local 5 45: new java.lang.RuntimeException
dup
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 46: StackMap locals:
StackMap stack:
aload 0
aload 3
getfield org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.cls:Ljava/lang/Class;
invokevirtual org.jruby.RubyClass.setReifiedClass:(Ljava/lang/Class;)V
47: aload 0
aload 3
getfield org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.allocator:Lorg/jruby/runtime/ObjectAllocator;
invokevirtual org.jruby.RubyClass.setAllocator:(Lorg/jruby/runtime/ObjectAllocator;)V
48: aload 3
getfield org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator.allocator:Lorg/jruby/runtime/ObjectAllocator;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 klass Lorg/jruby/RubyClass;
0 49 1 foundVariables Ljava/util/Set<Ljava/lang/String;>;
1 49 2 size I
3 49 3 cna Lorg/jruby/specialized/RubyObjectSpecializer$ClassAndAllocator;
4 49 4 className Ljava/lang/String;
16 32 5 clsPath Ljava/lang/String;
18 19 7 specialized Ljava/lang/Class;
21 28 7 specialized Ljava/lang/Class;
22 25 8 allocator Lorg/jruby/runtime/ObjectAllocator;
27 28 8 t Ljava/lang/Throwable;
33 43 5 offset I
35 42 6 name Ljava/lang/String;
45 46 5 e Ljava/lang/ReflectiveOperationException;
Exception table:
from to target type
17 18 19 Class java.lang.ClassNotFoundException
21 25 26 Class java.lang.Throwable
17 29 30 any
30 31 30 any
32 43 44 Class java.lang.NoSuchFieldException
32 43 44 Class java.lang.IllegalAccessException
Signature: (Lorg/jruby/RubyClass;Ljava/util/Set<Ljava/lang/String;>;)Lorg/jruby/runtime/ObjectAllocator;
MethodParameters:
Name Flags
klass
foundVariables
private static java.lang.Class generateInternal(int, java.lang.String);
descriptor: (ILjava/lang/String;)Ljava/lang/Class;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tJiteClass cannot be resolved to a type\n\tJiteClass cannot be resolved to a type\n\tACC_PUBLIC cannot be resolved to a variable\n\tACC_PUBLIC cannot be resolved to a variable\n\tCodeBlock cannot be resolved to a type\n\tACC_PUBLIC cannot be resolved to a variable\n\tCodeBlock cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n\tThe method genGetSwitch(String, int, CodeBlock, int) from the type RubyObjectSpecializer refers to the missing type CodeBlock\n\tACC_PUBLIC cannot be resolved to a variable\n\tCodeBlock cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n\tThe method genPutSwitch(String, int, CodeBlock, int) from the type RubyObjectSpecializer refers to the missing type CodeBlock\n\tJiteClass cannot be resolved to a type\n\tACC_PUBLIC cannot be resolved to a variable\n\tCodeBlock cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
size
clsPath final
static void genGetSwitch(java.lang.String, int, CodeBlock, int);
descriptor: (Ljava/lang/String;ILCodeBlock;I)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=4, args_size=4
0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tCodeBlock cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
clsPath
size
block
offsetVar
static void genPutSwitch(java.lang.String, int, CodeBlock, int);
descriptor: (Ljava/lang/String;ILCodeBlock;I)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=4, args_size=4
0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tCodeBlock cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabelNode cannot be resolved to a type\n\tLabel cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
clsPath
size
block
offsetVar
static java.lang.Class defineClass(JiteClass);
descriptor: (LJiteClass;)Ljava/lang/Class;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=1
0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tJiteClass cannot be resolved to a type\n\tJDKVersion cannot be resolved to a variable\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
jiteClass
static java.lang.String classNameFromJiteClass(JiteClass);
descriptor: (LJiteClass;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=1
0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tJiteClass cannot be resolved to a type\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
jiteClass
}
SourceFile: "RubyObjectSpecializer.java"
NestMembers:
org.jruby.specialized.RubyObjectSpecializer$1 org.jruby.specialized.RubyObjectSpecializer$1$1 org.jruby.specialized.RubyObjectSpecializer$1$2 org.jruby.specialized.RubyObjectSpecializer$1$3 org.jruby.specialized.RubyObjectSpecializer$1$4 org.jruby.specialized.RubyObjectSpecializer$1$4$1 org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
ClassAndAllocator = org.jruby.specialized.RubyObjectSpecializer$ClassAndAllocator of org.jruby.specialized.RubyObjectSpecializer