public final class org.jruby.ext.ffi.StructLayout extends org.jruby.ext.ffi.Type
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.jruby.ext.ffi.StructLayout
super_class: org.jruby.ext.ffi.Type
{
static final org.jruby.ext.ffi.StructLayout$Storage nullStorage;
descriptor: Lorg/jruby/ext/ffi/StructLayout$Storage;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.lang.String CLASS_NAME;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "StructLayout"
private final org.jruby.ext.ffi.StructLayout$Member[] identityLookupTable;
descriptor: [Lorg/jruby/ext/ffi/StructLayout$Member;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Map<org.jruby.runtime.builtin.IRubyObject, org.jruby.ext.ffi.StructLayout$Member> memberMap;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Member;>;
private final java.util.List<org.jruby.runtime.builtin.IRubyObject> fieldNames;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/jruby/runtime/builtin/IRubyObject;>;
private final java.util.List<org.jruby.ext.ffi.StructLayout$Field> fields;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/jruby/ext/ffi/StructLayout$Field;>;
private final java.util.Collection<org.jruby.ext.ffi.StructLayout$Member> members;
descriptor: Ljava/util/Collection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Collection<Lorg/jruby/ext/ffi/StructLayout$Member;>;
private final int cacheableFieldCount;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int referenceFieldCount;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean isUnion;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new org.jruby.ext.ffi.StructLayout$NullStorage
dup
invokespecial org.jruby.ext.ffi.StructLayout$NullStorage.<init>:()V
putstatic org.jruby.ext.ffi.StructLayout.nullStorage:Lorg/jruby/ext/ffi/StructLayout$Storage;
1: return
LocalVariableTable:
Start End Slot Name Signature
public static org.jruby.RubyClass createStructLayoutClass(org.jruby.Ruby, org.jruby.RubyModule);
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: aload 0
ldc "StructLayout"
aload 1
ldc "Type"
invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
1: getstatic org.jruby.runtime.ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
aload 1
2: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 2
start local 2 3: aload 2
ldc Lorg/jruby/ext/ffi/StructLayout;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
4: aload 2
ldc Lorg/jruby/ext/ffi/StructLayout;
invokevirtual org.jruby.RubyClass.defineAnnotatedConstants:(Ljava/lang/Class;)V
5: aload 2
ldc Lorg/jruby/ext/ffi/StructLayout;
invokevirtual org.jruby.RubyClass.setReifiedClass:(Ljava/lang/Class;)V
6: aload 1
ldc "Struct"
invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
ldc "InlineArray"
7: aload 0
invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
getstatic org.jruby.runtime.ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
8: invokevirtual org.jruby.RubyClass.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
astore 3
start local 3 9: aload 0
ldc "ArrayProxy"
aload 3
10: getstatic org.jruby.runtime.ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
aload 2
11: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 4
start local 4 12: aload 4
aload 0
invokevirtual org.jruby.Ruby.getEnumerable:()Lorg/jruby/RubyModule;
invokevirtual org.jruby.RubyClass.includeModule:(Lorg/jruby/runtime/builtin/IRubyObject;)V
13: aload 4
ldc Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
14: aload 0
ldc "CharArrayProxy"
aload 4
15: getstatic org.jruby.runtime.ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
aload 2
16: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 5
start local 5 17: aload 5
ldc Lorg/jruby/ext/ffi/StructLayout$CharArrayProxy;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
18: aload 0
ldc "Field"
aload 0
invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
19: getstatic org.jruby.ext.ffi.StructLayout$FieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
20: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 6
start local 6 21: aload 6
ldc Lorg/jruby/ext/ffi/StructLayout$Field;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
22: aload 0
ldc "Number"
aload 6
23: getstatic org.jruby.ext.ffi.StructLayout$NumberFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
24: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
pop
25: aload 0
ldc "Enum"
aload 6
26: getstatic org.jruby.ext.ffi.StructLayout$EnumFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
27: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
pop
28: aload 0
ldc "String"
aload 6
29: getstatic org.jruby.ext.ffi.StructLayout$StringFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
30: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
pop
31: aload 0
ldc "Pointer"
aload 6
32: getstatic org.jruby.ext.ffi.StructLayout$PointerFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
33: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
pop
34: aload 0
ldc "Function"
aload 6
35: getstatic org.jruby.ext.ffi.StructLayout$FunctionFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
36: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 7
start local 7 37: aload 7
ldc Lorg/jruby/ext/ffi/StructLayout$FunctionField;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
38: aload 0
ldc "InnerStruct"
aload 6
39: getstatic org.jruby.ext.ffi.StructLayout$InnerStructFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
40: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 8
start local 8 41: aload 8
ldc Lorg/jruby/ext/ffi/StructLayout$InnerStructField;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
42: aload 0
ldc "Array"
aload 6
43: getstatic org.jruby.ext.ffi.StructLayout$ArrayFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
44: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 9
start local 9 45: aload 9
ldc Lorg/jruby/ext/ffi/StructLayout$ArrayField;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
46: aload 0
ldc "Mapped"
aload 6
47: getstatic org.jruby.ext.ffi.StructLayout$MappedFieldAllocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
aload 2
48: invokevirtual org.jruby.Ruby.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
astore 10
start local 10 49: aload 10
ldc Lorg/jruby/ext/ffi/StructLayout$MappedField;
invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
50: aload 2
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 51 0 runtime Lorg/jruby/Ruby;
0 51 1 module Lorg/jruby/RubyModule;
3 51 2 layoutClass Lorg/jruby/RubyClass;
9 51 3 inlineArrayClass Lorg/jruby/RubyClass;
12 51 4 arrayClass Lorg/jruby/RubyClass;
17 51 5 charArrayClass Lorg/jruby/RubyClass;
21 51 6 fieldClass Lorg/jruby/RubyClass;
37 51 7 functionFieldClass Lorg/jruby/RubyClass;
41 51 8 innerStructFieldClass Lorg/jruby/RubyClass;
45 51 9 arrayFieldClass Lorg/jruby/RubyClass;
49 51 10 mappedFieldClass Lorg/jruby/RubyClass;
MethodParameters:
Name Flags
runtime
module
private void <init>(org.jruby.Ruby, org.jruby.RubyClass, java.util.Collection<org.jruby.runtime.builtin.IRubyObject>, int, );
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Ljava/util/Collection;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=20, 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
getstatic org.jruby.ext.ffi.NativeType.STRUCT:Lorg/jruby/ext/ffi/NativeType;
iload 4
iload 5
invokespecial org.jruby.ext.ffi.Type.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/jruby/ext/ffi/NativeType;II)V
1: iconst_0
istore 6
start local 6 2: iconst_0
istore 7
start local 7 3: new java.util.ArrayList
dup
aload 3
invokeinterface java.util.Collection.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 8
start local 8 4: new java.util.ArrayList
dup
aload 3
invokeinterface java.util.Collection.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 9
start local 9 5: new java.util.ArrayList
dup
aload 3
invokeinterface java.util.Collection.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 10
start local 10 6: new java.util.HashMap
dup
aload 3
invokeinterface java.util.Collection.size:()I
invokespecial java.util.HashMap.<init>:(I)V
astore 11
start local 11 7: aload 3
invokeinterface java.util.Collection.size:()I
bipush 8
imul
invokestatic org.jruby.ext.ffi.Util.roundUpToPowerOfTwo:(I)I
anewarray org.jruby.ext.ffi.StructLayout$Member
astore 12
start local 12 8: iconst_0
istore 13
start local 13 9: iconst_0
istore 14
start local 14 10: aload 3
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 16
goto 36
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int top java.util.Iterator
StackMap stack:
11: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.runtime.builtin.IRubyObject
astore 15
start local 15 12: aload 15
instanceof org.jruby.ext.ffi.StructLayout$Field
ifne 14
13: aload 1
aload 15
aload 1
ldc "FFI"
invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
ldc "StructLayout"
invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
ldc "Field"
invokevirtual org.jruby.RubyClass.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
athrow
14: StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int org.jruby.runtime.builtin.IRubyObject java.util.Iterator
StackMap stack:
aload 15
checkcast org.jruby.ext.ffi.StructLayout$Field
astore 17
start local 17 15: aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.name:Lorg/jruby/runtime/builtin/IRubyObject;
instanceof org.jruby.RubySymbol
ifne 17
16: aload 1
ldc "fields list contains field with invalid name"
invokevirtual org.jruby.Ruby.newTypeError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
athrow
17: StackMap locals: org.jruby.ext.ffi.StructLayout$Field
StackMap stack:
aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.type:Lorg/jruby/ext/ffi/Type;
invokevirtual org.jruby.ext.ffi.Type.getNativeSize:()I
iconst_1
if_icmpge 19
iload 14
aload 3
invokeinterface java.util.Collection.size:()I
iconst_1
isub
if_icmpge 19
18: aload 1
ldc "sizeof field == 0"
invokevirtual org.jruby.Ruby.newTypeError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
athrow
19: StackMap locals:
StackMap stack:
aload 9
aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.name:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
20: aload 8
aload 17
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
21: new org.jruby.ext.ffi.StructLayout$Member
dup
aload 17
iload 14
aload 17
invokevirtual org.jruby.ext.ffi.StructLayout$Field.isCacheable:()Z
ifeq 22
iload 6
iinc 6 1
goto 23
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int org.jruby.runtime.builtin.IRubyObject java.util.Iterator org.jruby.ext.ffi.StructLayout$Field
StackMap stack: new 21 new 21 org.jruby.ext.ffi.StructLayout$Field int
22: iconst_m1
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int org.jruby.runtime.builtin.IRubyObject java.util.Iterator org.jruby.ext.ffi.StructLayout$Field
StackMap stack: new 21 new 21 org.jruby.ext.ffi.StructLayout$Field int int
23: aload 17
invokevirtual org.jruby.ext.ffi.StructLayout$Field.isValueReferenceNeeded:()Z
ifeq 24
iload 7
iinc 7 1
goto 25
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int org.jruby.runtime.builtin.IRubyObject java.util.Iterator org.jruby.ext.ffi.StructLayout$Field
StackMap stack: new 21 new 21 org.jruby.ext.ffi.StructLayout$Field int int
24: iconst_m1
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int org.jruby.runtime.builtin.IRubyObject java.util.Iterator org.jruby.ext.ffi.StructLayout$Field
StackMap stack: new 21 new 21 org.jruby.ext.ffi.StructLayout$Field int int int
25: invokespecial org.jruby.ext.ffi.StructLayout$Member.<init>:(Lorg/jruby/ext/ffi/StructLayout$Field;III)V
astore 18
start local 18 26: aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.name:Lorg/jruby/runtime/builtin/IRubyObject;
aload 12
arraylength
invokestatic org.jruby.ext.ffi.StructLayout.symbolIndex:(Lorg/jruby/runtime/builtin/IRubyObject;I)I
istore 19
start local 19 27: StackMap locals: org.jruby.ext.ffi.StructLayout$Member int
StackMap stack:
aload 12
iload 19
aaload
ifnonnull 30
28: aload 12
iload 19
aload 18
aastore
29: goto 31
30: StackMap locals:
StackMap stack:
iload 19
aload 12
arraylength
invokestatic org.jruby.ext.ffi.StructLayout.nextIndex:(II)I
istore 19
goto 27
end local 19 31: StackMap locals:
StackMap stack:
aload 11
aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.name:Lorg/jruby/runtime/builtin/IRubyObject;
aload 18
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
32: aload 11
aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.name:Lorg/jruby/runtime/builtin/IRubyObject;
invokeinterface org.jruby.runtime.builtin.IRubyObject.asString:()Lorg/jruby/RubyString;
aload 18
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
33: aload 10
aload 18
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
34: iload 13
aload 17
getfield org.jruby.ext.ffi.StructLayout$Field.offset:I
invokestatic java.lang.Math.max:(II)I
istore 13
35: iinc 14 1
end local 18 end local 17 end local 15 36: StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int top java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
37: aload 0
iload 6
putfield org.jruby.ext.ffi.StructLayout.cacheableFieldCount:I
38: aload 0
iload 7
putfield org.jruby.ext.ffi.StructLayout.referenceFieldCount:I
39: aload 0
new java.util.ArrayList
dup
aload 9
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield org.jruby.ext.ffi.StructLayout.fieldNames:Ljava/util/List;
40: aload 0
aload 8
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
41: aload 0
aload 11
invokestatic java.util.Collections.unmodifiableMap:(Ljava/util/Map;)Ljava/util/Map;
putfield org.jruby.ext.ffi.StructLayout.memberMap:Ljava/util/Map;
42: aload 0
aload 12
putfield org.jruby.ext.ffi.StructLayout.identityLookupTable:[Lorg/jruby/ext/ffi/StructLayout$Member;
43: aload 0
aload 10
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield org.jruby.ext.ffi.StructLayout.members:Ljava/util/Collection;
44: aload 0
iload 13
ifne 45
aload 10
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 45
iconst_1
goto 46
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int
StackMap stack: org.jruby.ext.ffi.StructLayout
45: iconst_0
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.RubyClass java.util.Collection int int int int java.util.List java.util.List java.util.List java.util.Map org.jruby.ext.ffi.StructLayout$Member[] int int
StackMap stack: org.jruby.ext.ffi.StructLayout int
46: putfield org.jruby.ext.ffi.StructLayout.isUnion:Z
47: return
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lorg/jruby/ext/ffi/StructLayout;
0 48 1 runtime Lorg/jruby/Ruby;
0 48 2 klass Lorg/jruby/RubyClass;
0 48 3 fields Ljava/util/Collection<Lorg/jruby/runtime/builtin/IRubyObject;>;
0 48 4 size I
0 48 5 alignment I
2 48 6 cfCount I
3 48 7 refCount I
4 48 8 fieldList Ljava/util/List<Lorg/jruby/ext/ffi/StructLayout$Field;>;
5 48 9 names Ljava/util/List<Lorg/jruby/runtime/builtin/IRubyObject;>;
6 48 10 memberList Ljava/util/List<Lorg/jruby/ext/ffi/StructLayout$Member;>;
7 48 11 memberStringMap Ljava/util/Map<Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Member;>;
8 48 12 memberSymbolLookupTable [Lorg/jruby/ext/ffi/StructLayout$Member;
9 48 13 offset I
10 48 14 index I
12 36 15 obj Lorg/jruby/runtime/builtin/IRubyObject;
15 36 17 f Lorg/jruby/ext/ffi/StructLayout$Field;
26 36 18 m Lorg/jruby/ext/ffi/StructLayout$Member;
27 31 19 idx I
Signature: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Ljava/util/Collection<Lorg/jruby/runtime/builtin/IRubyObject;>;II)V
MethodParameters:
Name Flags
runtime
klass
fields
size
alignment
public static final org.jruby.runtime.builtin.IRubyObject newStructLayout(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject[]);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
Code:
stack=7, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 2
iconst_0
aaload
astore 3
start local 3 1: aload 2
iconst_1
aaload
astore 4
start local 4 2: aload 2
iconst_2
aaload
astore 5
start local 5 3: aload 3
instanceof org.jruby.RubyArray
ifne 5
4: aload 0
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 3
aload 0
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getArray:()Lorg/jruby/RubyClass;
invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
athrow
5: StackMap locals: org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 3
checkcast org.jruby.RubyArray
invokevirtual org.jruby.RubyArray.toJavaArrayMaybeUnsafe:()[Lorg/jruby/runtime/builtin/IRubyObject;
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
astore 6
start local 6 6: new org.jruby.ext.ffi.StructLayout
dup
aload 0
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 1
checkcast org.jruby.RubyClass
aload 6
7: aload 4
invokestatic org.jruby.RubyNumeric.num2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
aload 5
invokestatic org.jruby.RubyNumeric.num2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
8: invokespecial org.jruby.ext.ffi.StructLayout.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Ljava/util/Collection;II)V
areturn
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 9 0 context Lorg/jruby/runtime/ThreadContext;
0 9 1 klass Lorg/jruby/runtime/builtin/IRubyObject;
0 9 2 args [Lorg/jruby/runtime/builtin/IRubyObject;
1 9 3 rbFields Lorg/jruby/runtime/builtin/IRubyObject;
2 9 4 size Lorg/jruby/runtime/builtin/IRubyObject;
3 9 5 alignment Lorg/jruby/runtime/builtin/IRubyObject;
6 9 6 fields Ljava/util/List<Lorg/jruby/runtime/builtin/IRubyObject;>;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"new"}, meta = true, required = 3, optional = 1)
MethodParameters:
Name Flags
context
klass
args
public org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 3
getstatic org.jruby.ext.ffi.StructLayout.nullStorage:Lorg/jruby/ext/ffi/StructLayout$Storage;
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getValue:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
0 1 2 ptr Lorg/jruby/runtime/builtin/IRubyObject;
0 1 3 name Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"get"}, required = 2)
MethodParameters:
Name Flags
context
ptr
name
public org.jruby.runtime.builtin.IRubyObject put(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
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;
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 3
getstatic org.jruby.ext.ffi.StructLayout.nullStorage:Lorg/jruby/ext/ffi/StructLayout$Storage;
aload 2
aload 4
invokevirtual org.jruby.ext.ffi.StructLayout.putValue:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)V
1: 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 2 0 this Lorg/jruby/ext/ffi/StructLayout;
0 2 1 context Lorg/jruby/runtime/ThreadContext;
0 2 2 ptr Lorg/jruby/runtime/builtin/IRubyObject;
0 2 3 name Lorg/jruby/runtime/builtin/IRubyObject;
0 2 4 value Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"put"}, required = 3)
MethodParameters:
Name Flags
context
ptr
name
value
public org.jruby.runtime.builtin.IRubyObject members(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 0
getfield org.jruby.ext.ffi.StructLayout.fieldNames:Ljava/util/List;
invokeinterface java.util.List.size:()I
invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;I)Lorg/jruby/RubyArray;
astore 2
start local 2 1: aload 0
getfield org.jruby.ext.ffi.StructLayout.fieldNames:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.runtime.ThreadContext org.jruby.RubyArray top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.runtime.builtin.IRubyObject
astore 3
start local 3 3: aload 2
aload 3
invokevirtual org.jruby.RubyArray.append:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ext/ffi/StructLayout;
0 6 1 context Lorg/jruby/runtime/ThreadContext;
1 6 2 mbrs Lorg/jruby/RubyArray;
3 4 3 name Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"members"})
MethodParameters:
Name Flags
context
public org.jruby.runtime.builtin.IRubyObject offsets(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
astore 2
start local 2 1: aload 2
invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;)Lorg/jruby/RubyArray;
astore 3
start local 3 2: aload 0
getfield org.jruby.ext.ffi.StructLayout.fieldNames:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 8
StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.RubyArray top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.runtime.builtin.IRubyObject
astore 4
start local 4 4: aload 2
invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;)Lorg/jruby/RubyArray;
astore 6
start local 6 5: aload 6
aload 4
invokevirtual org.jruby.RubyArray.append:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
6: aload 6
aload 2
aload 0
aload 2
aload 4
invokevirtual org.jruby.ext.ffi.StructLayout.getMember:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Member;
getfield org.jruby.ext.ffi.StructLayout$Member.offset:I
invokevirtual org.jruby.Ruby.newFixnum:(I)Lorg/jruby/RubyFixnum;
invokevirtual org.jruby.RubyArray.append:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
7: aload 3
aload 6
invokevirtual org.jruby.RubyArray.append:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
pop
end local 6 end local 4 8: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
9: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/jruby/ext/ffi/StructLayout;
0 10 1 context Lorg/jruby/runtime/ThreadContext;
1 10 2 runtime Lorg/jruby/Ruby;
2 10 3 offsets Lorg/jruby/RubyArray;
4 8 4 name Lorg/jruby/runtime/builtin/IRubyObject;
5 8 6 offset Lorg/jruby/RubyArray;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"offsets"})
MethodParameters:
Name Flags
context
public org.jruby.runtime.builtin.IRubyObject offset_of(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getField:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Field;
aload 1
invokevirtual org.jruby.ext.ffi.StructLayout$Field.offset:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
0 1 2 fieldName Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"offset_of"})
MethodParameters:
Name Flags
context
fieldName
public org.jruby.runtime.builtin.IRubyObject aref(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getField:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Field;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
0 1 2 fieldName Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"[]"})
MethodParameters:
Name Flags
context
fieldName
public org.jruby.runtime.builtin.IRubyObject fields(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;Ljava/util/List;)Lorg/jruby/RubyArray;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod()
MethodParameters:
Name Flags
context
final org.jruby.runtime.builtin.IRubyObject getValue(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.ext.ffi.StructLayout$Storage, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
instanceof org.jruby.ext.ffi.AbstractMemory
ifne 2
1: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 4
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getFFI:()Lorg/jruby/ext/ffi/FFI;
getfield org.jruby.ext.ffi.FFI.memoryClass:Lorg/jruby/RubyClass;
invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getMember:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Member;
aload 1
aload 3
aload 4
checkcast org.jruby.ext.ffi.AbstractMemory
invokevirtual org.jruby.ext.ffi.StructLayout$Member.get:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/ext/ffi/AbstractMemory;)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 3 0 this Lorg/jruby/ext/ffi/StructLayout;
0 3 1 context Lorg/jruby/runtime/ThreadContext;
0 3 2 name Lorg/jruby/runtime/builtin/IRubyObject;
0 3 3 cache Lorg/jruby/ext/ffi/StructLayout$Storage;
0 3 4 ptr Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
name
cache
ptr
final void putValue(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.ext.ffi.StructLayout$Storage, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)V
flags: (0x0010) ACC_FINAL
Code:
stack=5, 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 4
instanceof org.jruby.ext.ffi.AbstractMemory
ifne 2
1: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 4
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getFFI:()Lorg/jruby/ext/ffi/FFI;
getfield org.jruby.ext.ffi.FFI.memoryClass:Lorg/jruby/RubyClass;
invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getMember:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Member;
aload 1
aload 3
aload 4
checkcast org.jruby.ext.ffi.AbstractMemory
aload 5
invokevirtual org.jruby.ext.ffi.StructLayout$Member.put:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/StructLayout$Storage;Lorg/jruby/ext/ffi/AbstractMemory;Lorg/jruby/runtime/builtin/IRubyObject;)V
3: 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 4 0 this Lorg/jruby/ext/ffi/StructLayout;
0 4 1 context Lorg/jruby/runtime/ThreadContext;
0 4 2 name Lorg/jruby/runtime/builtin/IRubyObject;
0 4 3 cache Lorg/jruby/ext/ffi/StructLayout$Storage;
0 4 4 ptr Lorg/jruby/runtime/builtin/IRubyObject;
0 4 5 value Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
name
cache
ptr
value
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
if_acmpne 1
iconst_1
ireturn
1: StackMap locals:
StackMap stack:
aload 1
ifnull 2
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
if_acmpeq 3
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial org.jruby.ext.ffi.Type.equals:(Ljava/lang/Object;)Z
ifne 4
iconst_0
ireturn
4: StackMap locals:
StackMap stack:
aload 1
checkcast org.jruby.ext.ffi.StructLayout
astore 2
start local 2 5: aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
ifnull 6
aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
aload 2
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
ifne 8
goto 7
StackMap locals: org.jruby.ext.ffi.StructLayout
StackMap stack:
6: aload 2
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
ifnull 8
StackMap locals:
StackMap stack:
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/ext/ffi/StructLayout;
0 9 1 o Ljava/lang/Object;
5 9 2 that Lorg/jruby/ext/ffi/StructLayout;
MethodParameters:
Name Flags
o
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokespecial org.jruby.ext.ffi.Type.hashCode:()I
istore 1
start local 1 1: bipush 31
iload 1
imul
aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
ifnull 2
aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
invokeinterface java.util.List.hashCode:()I
goto 3
StackMap locals: org.jruby.ext.ffi.StructLayout int
StackMap stack: int
2: iconst_0
StackMap locals: org.jruby.ext.ffi.StructLayout int
StackMap stack: int int
3: iadd
istore 1
4: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ext/ffi/StructLayout;
1 5 1 result I
private static int symbolIndex(org.jruby.runtime.builtin.IRubyObject, int);
descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
iload 1
iconst_1
isub
iand
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 name Lorg/jruby/runtime/builtin/IRubyObject;
0 1 1 length I
MethodParameters:
Name Flags
name
length
private static int nextIndex(int, int);
descriptor: (II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: iload 0
iconst_1
iadd
iload 1
iconst_1
isub
iand
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 idx I
0 1 1 length I
MethodParameters:
Name Flags
idx
length
final org.jruby.ext.ffi.StructLayout$Member getMember(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Member;
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
aload 0
getfield org.jruby.ext.ffi.StructLayout.identityLookupTable:[Lorg/jruby/ext/ffi/StructLayout$Member;
arraylength
invokestatic org.jruby.ext.ffi.StructLayout.symbolIndex:(Lorg/jruby/runtime/builtin/IRubyObject;I)I
istore 4
start local 4 1: goto 5
start local 3 2: StackMap locals: org.jruby.ext.ffi.StructLayout$Member int
StackMap stack:
aload 3
getfield org.jruby.ext.ffi.StructLayout$Member.name:Lorg/jruby/runtime/builtin/IRubyObject;
aload 2
if_acmpne 4
3: aload 3
areturn
4: StackMap locals:
StackMap stack:
iload 4
aload 0
getfield org.jruby.ext.ffi.StructLayout.identityLookupTable:[Lorg/jruby/ext/ffi/StructLayout$Member;
arraylength
invokestatic org.jruby.ext.ffi.StructLayout.nextIndex:(II)I
istore 4
end local 3 5: StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject top int
StackMap stack:
aload 0
getfield org.jruby.ext.ffi.StructLayout.identityLookupTable:[Lorg/jruby/ext/ffi/StructLayout$Member;
iload 4
aaload
dup
astore 3
start local 3 6: ifnonnull 2
7: aload 0
getfield org.jruby.ext.ffi.StructLayout.memberMap:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ext.ffi.StructLayout$Member
astore 5
start local 5 8: aload 5
ifnull 10
9: aload 5
areturn
10: StackMap locals: org.jruby.ext.ffi.StructLayout org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.ext.ffi.StructLayout$Member int org.jruby.ext.ffi.StructLayout$Member
StackMap stack:
aload 1
new java.lang.StringBuilder
dup
ldc "Unknown field: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
athrow
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 11 0 this Lorg/jruby/ext/ffi/StructLayout;
0 11 1 runtime Lorg/jruby/Ruby;
0 11 2 name Lorg/jruby/runtime/builtin/IRubyObject;
2 5 3 m Lorg/jruby/ext/ffi/StructLayout$Member;
6 11 3 m Lorg/jruby/ext/ffi/StructLayout$Member;
1 11 4 idx I
8 11 5 f Lorg/jruby/ext/ffi/StructLayout$Member;
MethodParameters:
Name Flags
runtime
name
final org.jruby.ext.ffi.StructLayout$Field getField(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Field;
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokevirtual org.jruby.ext.ffi.StructLayout.getMember:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/ffi/StructLayout$Member;
getfield org.jruby.ext.ffi.StructLayout$Member.field:Lorg/jruby/ext/ffi/StructLayout$Field;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 runtime Lorg/jruby/Ruby;
0 1 2 name Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
runtime
name
public final int getSize();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ext.ffi.StructLayout.getNativeSize:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
final int getReferenceFieldCount();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.referenceFieldCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
final int getReferenceFieldIndex(org.jruby.ext.ffi.StructLayout$Member);
descriptor: (Lorg/jruby/ext/ffi/StructLayout$Member;)I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.ext.ffi.StructLayout$Member.referenceIndex:I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 member Lorg/jruby/ext/ffi/StructLayout$Member;
MethodParameters:
Name Flags
member
final int getCacheableFieldCount();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.cacheableFieldCount:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
final int getCacheableFieldIndex(org.jruby.ext.ffi.StructLayout$Member);
descriptor: (Lorg/jruby/ext/ffi/StructLayout$Member;)I
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield org.jruby.ext.ffi.StructLayout$Member.cacheIndex:I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
0 1 1 member Lorg/jruby/ext/ffi/StructLayout$Member;
MethodParameters:
Name Flags
member
public final int getFieldCount();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
invokeinterface java.util.List.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
public final java.util.Collection<org.jruby.ext.ffi.StructLayout$Field> getFields();
descriptor: ()Ljava/util/Collection;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.fields:Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
Signature: ()Ljava/util/Collection<Lorg/jruby/ext/ffi/StructLayout$Field;>;
public final java.util.Collection<org.jruby.ext.ffi.StructLayout$Member> getMembers();
descriptor: ()Ljava/util/Collection;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.members:Ljava/util/Collection;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
Signature: ()Ljava/util/Collection<Lorg/jruby/ext/ffi/StructLayout$Member;>;
public final boolean isUnion();
descriptor: ()Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.StructLayout.isUnion:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout;
private static org.jruby.ext.ffi.MemoryOp getArrayComponentMemoryOp(org.jruby.ext.ffi.Type$Array);
descriptor: (Lorg/jruby/ext/ffi/Type$Array;)Lorg/jruby/ext/ffi/MemoryOp;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
astore 1
start local 1 1: aload 1
instanceof org.jruby.ext.ffi.Type$Array
ifeq 3
2: new org.jruby.ext.ffi.StructLayout$MultiDimensionArrayOp
dup
aload 1
checkcast org.jruby.ext.ffi.Type$Array
invokespecial org.jruby.ext.ffi.StructLayout$MultiDimensionArrayOp.<init>:(Lorg/jruby/ext/ffi/Type$Array;)V
goto 4
3: StackMap locals: org.jruby.ext.ffi.Type
StackMap stack:
aload 1
invokestatic org.jruby.ext.ffi.MemoryOp.getMemoryOp:(Lorg/jruby/ext/ffi/Type;)Lorg/jruby/ext/ffi/MemoryOp;
4: StackMap locals:
StackMap stack: org.jruby.ext.ffi.MemoryOp
astore 2
start local 2 5: aload 2
ifnonnull 7
6: aload 0
invokevirtual org.jruby.ext.ffi.Type$Array.getRuntime:()Lorg/jruby/Ruby;
new java.lang.StringBuilder
dup
ldc "unsupported array field type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
athrow
7: StackMap locals: org.jruby.ext.ffi.MemoryOp
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 arrayType Lorg/jruby/ext/ffi/Type$Array;
1 8 1 componentType Lorg/jruby/ext/ffi/Type;
5 8 2 op Lorg/jruby/ext/ffi/MemoryOp;
MethodParameters:
Name Flags
arrayType
}
SourceFile: "StructLayout.java"
NestMembers:
org.jruby.ext.ffi.StructLayout$ArrayField org.jruby.ext.ffi.StructLayout$ArrayFieldAllocator org.jruby.ext.ffi.StructLayout$ArrayFieldIO org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.ext.ffi.StructLayout$CharArrayProxy org.jruby.ext.ffi.StructLayout$DefaultFieldIO org.jruby.ext.ffi.StructLayout$EnumField org.jruby.ext.ffi.StructLayout$EnumFieldAllocator org.jruby.ext.ffi.StructLayout$EnumFieldIO org.jruby.ext.ffi.StructLayout$Field org.jruby.ext.ffi.StructLayout$FieldAllocator org.jruby.ext.ffi.StructLayout$FieldIO org.jruby.ext.ffi.StructLayout$FunctionField org.jruby.ext.ffi.StructLayout$FunctionFieldAllocator org.jruby.ext.ffi.StructLayout$FunctionFieldIO org.jruby.ext.ffi.StructLayout$InnerStructField org.jruby.ext.ffi.StructLayout$InnerStructFieldAllocator org.jruby.ext.ffi.StructLayout$InnerStructFieldIO org.jruby.ext.ffi.StructLayout$MappedField org.jruby.ext.ffi.StructLayout$MappedFieldAllocator org.jruby.ext.ffi.StructLayout$MappedFieldIO org.jruby.ext.ffi.StructLayout$Member org.jruby.ext.ffi.StructLayout$MultiDimensionArrayOp org.jruby.ext.ffi.StructLayout$NullStorage org.jruby.ext.ffi.StructLayout$NumberField org.jruby.ext.ffi.StructLayout$NumberFieldAllocator org.jruby.ext.ffi.StructLayout$NumberFieldIO org.jruby.ext.ffi.StructLayout$PointerField org.jruby.ext.ffi.StructLayout$PointerFieldAllocator org.jruby.ext.ffi.StructLayout$PointerFieldIO org.jruby.ext.ffi.StructLayout$Storage org.jruby.ext.ffi.StructLayout$StringField org.jruby.ext.ffi.StructLayout$StringFieldAllocator org.jruby.ext.ffi.StructLayout$StringFieldIO
InnerClasses:
public final ArrayField = org.jruby.ext.ffi.StructLayout$ArrayField of org.jruby.ext.ffi.StructLayout
private final ArrayFieldAllocator = org.jruby.ext.ffi.StructLayout$ArrayFieldAllocator of org.jruby.ext.ffi.StructLayout
final ArrayFieldIO = org.jruby.ext.ffi.StructLayout$ArrayFieldIO of org.jruby.ext.ffi.StructLayout
public ArrayProxy = org.jruby.ext.ffi.StructLayout$ArrayProxy of org.jruby.ext.ffi.StructLayout
public final CharArrayProxy = org.jruby.ext.ffi.StructLayout$CharArrayProxy of org.jruby.ext.ffi.StructLayout
final DefaultFieldIO = org.jruby.ext.ffi.StructLayout$DefaultFieldIO of org.jruby.ext.ffi.StructLayout
public final EnumField = org.jruby.ext.ffi.StructLayout$EnumField of org.jruby.ext.ffi.StructLayout
private final EnumFieldAllocator = org.jruby.ext.ffi.StructLayout$EnumFieldAllocator of org.jruby.ext.ffi.StructLayout
final EnumFieldIO = org.jruby.ext.ffi.StructLayout$EnumFieldIO of org.jruby.ext.ffi.StructLayout
public Field = org.jruby.ext.ffi.StructLayout$Field of org.jruby.ext.ffi.StructLayout
private final FieldAllocator = org.jruby.ext.ffi.StructLayout$FieldAllocator of org.jruby.ext.ffi.StructLayout
abstract FieldIO = org.jruby.ext.ffi.StructLayout$FieldIO of org.jruby.ext.ffi.StructLayout
public final FunctionField = org.jruby.ext.ffi.StructLayout$FunctionField of org.jruby.ext.ffi.StructLayout
private final FunctionFieldAllocator = org.jruby.ext.ffi.StructLayout$FunctionFieldAllocator of org.jruby.ext.ffi.StructLayout
final FunctionFieldIO = org.jruby.ext.ffi.StructLayout$FunctionFieldIO of org.jruby.ext.ffi.StructLayout
public final InnerStructField = org.jruby.ext.ffi.StructLayout$InnerStructField of org.jruby.ext.ffi.StructLayout
private final InnerStructFieldAllocator = org.jruby.ext.ffi.StructLayout$InnerStructFieldAllocator of org.jruby.ext.ffi.StructLayout
final InnerStructFieldIO = org.jruby.ext.ffi.StructLayout$InnerStructFieldIO of org.jruby.ext.ffi.StructLayout
public final MappedField = org.jruby.ext.ffi.StructLayout$MappedField of org.jruby.ext.ffi.StructLayout
private final MappedFieldAllocator = org.jruby.ext.ffi.StructLayout$MappedFieldAllocator of org.jruby.ext.ffi.StructLayout
final MappedFieldIO = org.jruby.ext.ffi.StructLayout$MappedFieldIO of org.jruby.ext.ffi.StructLayout
public final Member = org.jruby.ext.ffi.StructLayout$Member of org.jruby.ext.ffi.StructLayout
final MultiDimensionArrayOp = org.jruby.ext.ffi.StructLayout$MultiDimensionArrayOp of org.jruby.ext.ffi.StructLayout
NullStorage = org.jruby.ext.ffi.StructLayout$NullStorage of org.jruby.ext.ffi.StructLayout
public final NumberField = org.jruby.ext.ffi.StructLayout$NumberField of org.jruby.ext.ffi.StructLayout
private final NumberFieldAllocator = org.jruby.ext.ffi.StructLayout$NumberFieldAllocator of org.jruby.ext.ffi.StructLayout
final NumberFieldIO = org.jruby.ext.ffi.StructLayout$NumberFieldIO of org.jruby.ext.ffi.StructLayout
public final PointerField = org.jruby.ext.ffi.StructLayout$PointerField of org.jruby.ext.ffi.StructLayout
private final PointerFieldAllocator = org.jruby.ext.ffi.StructLayout$PointerFieldAllocator of org.jruby.ext.ffi.StructLayout
final PointerFieldIO = org.jruby.ext.ffi.StructLayout$PointerFieldIO of org.jruby.ext.ffi.StructLayout
public abstract Storage = org.jruby.ext.ffi.StructLayout$Storage of org.jruby.ext.ffi.StructLayout
final StringField = org.jruby.ext.ffi.StructLayout$StringField of org.jruby.ext.ffi.StructLayout
private final StringFieldAllocator = org.jruby.ext.ffi.StructLayout$StringFieldAllocator of org.jruby.ext.ffi.StructLayout
final StringFieldIO = org.jruby.ext.ffi.StructLayout$StringFieldIO of org.jruby.ext.ffi.StructLayout
public final Array = org.jruby.ext.ffi.Type$Array of org.jruby.ext.ffi.Type
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyClass(name = {"StructLayout"}, parent = "Object")