public class org.jruby.ext.ffi.StructLayout$ArrayProxy extends org.jruby.RubyObject
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ext.ffi.StructLayout$ArrayProxy
super_class: org.jruby.RubyObject
{
protected final org.jruby.ext.ffi.AbstractMemory ptr;
descriptor: Lorg/jruby/ext/ffi/AbstractMemory;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
final org.jruby.ext.ffi.MemoryOp aio;
descriptor: Lorg/jruby/ext/ffi/MemoryOp;
flags: (0x0010) ACC_FINAL
protected final org.jruby.ext.ffi.Type$Array arrayType;
descriptor: Lorg/jruby/ext/ffi/Type$Array;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private final boolean cacheable;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.jruby.runtime.builtin.IRubyObject[] valueCache;
descriptor: [Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0002) ACC_PRIVATE
void <init>(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, long, org.jruby.ext.ffi.Type$Array, org.jruby.ext.ffi.MemoryOp);
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
flags: (0x0000)
Code:
stack=8, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 5 start local 6 0: aload 0
aload 1
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 "ArrayProxy"
invokevirtual org.jruby.RubyClass.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
1: aload 2
lload 3
aload 5
aload 6
invokespecial org.jruby.ext.ffi.StructLayout$ArrayProxy.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
2: return
end local 6 end local 5 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$ArrayProxy;
0 3 1 runtime Lorg/jruby/Ruby;
0 3 2 ptr Lorg/jruby/runtime/builtin/IRubyObject;
0 3 3 offset J
0 3 5 type Lorg/jruby/ext/ffi/Type$Array;
0 3 6 aio Lorg/jruby/ext/ffi/MemoryOp;
MethodParameters:
Name Flags
runtime
ptr
offset
type
aio
void <init>(org.jruby.Ruby, org.jruby.RubyClass, org.jruby.runtime.builtin.IRubyObject, long, org.jruby.ext.ffi.Type$Array, org.jruby.ext.ffi.MemoryOp);
descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
flags: (0x0000)
Code:
stack=7, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 start local 7 0: aload 0
aload 1
aload 2
invokespecial org.jruby.RubyObject.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
1: aload 0
aload 6
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
ifle 3
2: aload 3
checkcast org.jruby.ext.ffi.AbstractMemory
aload 1
lload 4
aload 6
invokevirtual org.jruby.ext.ffi.Type$Array.getNativeSize:()I
i2l
invokevirtual org.jruby.ext.ffi.AbstractMemory.slice:(Lorg/jruby/Ruby;JJ)Lorg/jruby/ext/ffi/AbstractMemory;
goto 4
3: StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
aload 3
checkcast org.jruby.ext.ffi.AbstractMemory
aload 1
lload 4
invokevirtual org.jruby.ext.ffi.AbstractMemory.slice:(Lorg/jruby/Ruby;J)Lorg/jruby/ext/ffi/AbstractMemory;
4: StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.ext.ffi.AbstractMemory
putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
5: aload 0
aload 6
putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
6: aload 0
aload 7
putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
7: aload 0
aload 6
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
ifle 10
aload 6
invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
instanceof org.jruby.ext.ffi.Type$Array
ifne 9
8: aload 6
invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
instanceof org.jruby.ext.ffi.StructByValue
ifeq 10
StackMap locals:
StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
9: iconst_1
goto 11
StackMap locals:
StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
10: iconst_0
11: StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy int
putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.cacheable:Z
12: return
end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 13 1 runtime Lorg/jruby/Ruby;
0 13 2 klass Lorg/jruby/RubyClass;
0 13 3 ptr Lorg/jruby/runtime/builtin/IRubyObject;
0 13 4 offset J
0 13 6 type Lorg/jruby/ext/ffi/Type$Array;
0 13 7 aio Lorg/jruby/ext/ffi/MemoryOp;
MethodParameters:
Name Flags
runtime
klass
ptr
offset
type
aio
private long getOffset(int);
descriptor: (I)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iflt 1
iload 1
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
if_icmplt 2
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
ifle 2
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getRuntime:()Lorg/jruby/Ruby;
new java.lang.StringBuilder
dup
ldc "index "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " out of bounds"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.jruby.Ruby.newIndexError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
athrow
2: StackMap locals:
StackMap stack:
iload 1
i2l
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
invokevirtual org.jruby.ext.ffi.Type.getNativeSize:()I
i2l
lmul
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 3 1 index I
MethodParameters:
Name Flags
index
private org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext, int);
descriptor: (Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
ifnull 3
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
iload 2
aaload
dup
astore 3
start local 3 1: ifnull 3
2: aload 3
areturn
end local 3 3: StackMap locals:
StackMap stack:
aload 0
iload 2
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
aload 1
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
aload 0
iload 2
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getOffset:(I)J
invokevirtual org.jruby.ext.ffi.MemoryOp.get:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/AbstractMemory;J)Lorg/jruby/runtime/builtin/IRubyObject;
dup
astore 3
start local 3 4: invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.putCachedValue:(ILorg/jruby/runtime/builtin/IRubyObject;)V
5: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 6 1 context Lorg/jruby/runtime/ThreadContext;
0 6 2 index I
1 3 3 obj Lorg/jruby/runtime/builtin/IRubyObject;
4 6 3 obj Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
index
public final void putCachedValue(int, org.jruby.runtime.builtin.IRubyObject);
descriptor: (ILorg/jruby/runtime/builtin/IRubyObject;)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.cacheable:Z
ifeq 4
1: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
ifnonnull 3
2: aload 0
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
anewarray org.jruby.runtime.builtin.IRubyObject
putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
iload 1
aload 2
aastore
4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 5 1 idx I
0 5 2 value Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
idx
value
public org.jruby.runtime.builtin.IRubyObject get(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
aload 2
invokestatic org.jruby.ext.ffi.Util.int32Value:(Lorg/jruby/runtime/builtin/IRubyObject;)I
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)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$ArrayProxy;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
0 1 2 index Lorg/jruby/runtime/builtin/IRubyObject;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"[]"})
MethodParameters:
Name Flags
context
index
public org.jruby.runtime.builtin.IRubyObject put(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=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokestatic org.jruby.ext.ffi.Util.int32Value:(Lorg/jruby/runtime/builtin/IRubyObject;)I
istore 4
start local 4 1: aload 0
iload 4
aload 3
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.putCachedValue:(ILorg/jruby/runtime/builtin/IRubyObject;)V
2: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
aload 1
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
aload 0
iload 4
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getOffset:(I)J
aload 3
invokevirtual org.jruby.ext.ffi.MemoryOp.put:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/AbstractMemory;JLorg/jruby/runtime/builtin/IRubyObject;)V
3: 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 4 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 4 1 context Lorg/jruby/runtime/ThreadContext;
0 4 2 index Lorg/jruby/runtime/builtin/IRubyObject;
0 4 3 value Lorg/jruby/runtime/builtin/IRubyObject;
1 4 4 idx I
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"[]="})
MethodParameters:
Name Flags
context
index
value
public org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
anewarray org.jruby.runtime.builtin.IRubyObject
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 5
3: StackMap locals: org.jruby.runtime.builtin.IRubyObject[] int
StackMap stack:
aload 2
iload 3
aload 0
aload 1
iload 3
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
aastore
4: iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
aload 2
arraylength
if_icmplt 3
end local 3 6: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
aload 2
invokestatic org.jruby.RubyArray.newArrayMayCopy:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 7 1 context Lorg/jruby/runtime/ThreadContext;
1 7 2 elems [Lorg/jruby/runtime/builtin/IRubyObject;
2 6 3 i I
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"to_a", "to_ary"})
MethodParameters:
Name Flags
context
public org.jruby.runtime.builtin.IRubyObject to_ptr(org.jruby.runtime.ThreadContext);
descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"to_ptr"})
MethodParameters:
Name Flags
context
public org.jruby.runtime.builtin.IRubyObject size(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 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
aload 1
invokevirtual org.jruby.ext.ffi.Type$Array.length:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 1 1 context Lorg/jruby/runtime/ThreadContext;
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"size"})
MethodParameters:
Name Flags
context
public org.jruby.runtime.builtin.IRubyObject each(org.jruby.runtime.ThreadContext, org.jruby.runtime.Block);
descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual org.jruby.runtime.Block.isGiven:()Z
ifne 2
1: aload 1
getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.newLocalJumpErrorNoBlock:()Lorg/jruby/exceptions/RaiseException;
athrow
2: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 3: goto 6
4: StackMap locals: int
StackMap stack:
aload 2
aload 1
aload 0
aload 1
iload 3
invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual org.jruby.runtime.Block.yield:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
pop
5: iinc 3 1
StackMap locals:
StackMap stack:
6: iload 3
aload 0
getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
if_icmplt 4
end local 3 7: aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
0 8 1 context Lorg/jruby/runtime/ThreadContext;
0 8 2 block Lorg/jruby/runtime/Block;
3 7 3 i I
RuntimeVisibleAnnotations:
org.jruby.anno.JRubyMethod(name = {"each"})
MethodParameters:
Name Flags
context
block
}
SourceFile: "StructLayout.java"
NestHost: org.jruby.ext.ffi.StructLayout
InnerClasses:
public ArrayProxy = org.jruby.ext.ffi.StructLayout$ArrayProxy 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 = {"FFI::StructLayout::ArrayProxy"}, parent = "Object")