final class org.jruby.ext.ffi.AutoPointer$ReaperGroup extends org.jruby.util.PhantomReferenceReaper<java.lang.Object> implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.jruby.ext.ffi.AutoPointer$ReaperGroup
super_class: org.jruby.util.PhantomReferenceReaper
{
private static int MAX_REAPERS_PER_GROUP;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private final java.lang.ref.WeakReference<java.lang.Object> weakref;
descriptor: Ljava/lang/ref/WeakReference;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/lang/ref/WeakReference<Ljava/lang/Object;>;
private int reaperCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private volatile org.jruby.ext.ffi.AutoPointer$Reaper head;
descriptor: Lorg/jruby/ext/ffi/AutoPointer$Reaper;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: bipush 100
putstatic org.jruby.ext.ffi.AutoPointer$ReaperGroup.MAX_REAPERS_PER_GROUP:I
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.jruby.util.PhantomReferenceReaper.<init>:(Ljava/lang/Object;)V
1: aload 0
new java.lang.ref.WeakReference
dup
aload 1
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
putfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.weakref:Ljava/lang/ref/WeakReference;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ext/ffi/AutoPointer$ReaperGroup;
0 3 1 referent Ljava/lang/Object;
MethodParameters:
Name Flags
referent
java.lang.Object referent();
descriptor: ()Ljava/lang/Object;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.weakref:Ljava/lang/ref/WeakReference;
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/ffi/AutoPointer$ReaperGroup;
boolean canAccept();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.reaperCount:I
getstatic org.jruby.ext.ffi.AutoPointer$ReaperGroup.MAX_REAPERS_PER_GROUP:I
if_icmpge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ext/ffi/AutoPointer$ReaperGroup;
void add(org.jruby.ext.ffi.AutoPointer$Reaper);
descriptor: (Lorg/jruby/ext/ffi/AutoPointer$Reaper;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
dup
getfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.reaperCount:I
iconst_1
iadd
putfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.reaperCount:I
1: aload 1
aload 0
getfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.head:Lorg/jruby/ext/ffi/AutoPointer$Reaper;
putfield org.jruby.ext.ffi.AutoPointer$Reaper.next:Lorg/jruby/ext/ffi/AutoPointer$Reaper;
2: aload 0
aload 1
putfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.head:Lorg/jruby/ext/ffi/AutoPointer$Reaper;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ext/ffi/AutoPointer$ReaperGroup;
0 4 1 r Lorg/jruby/ext/ffi/AutoPointer$Reaper;
MethodParameters:
Name Flags
r
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: getstatic org.jruby.ext.ffi.AutoPointer.referenceSet:Ljava/util/concurrent/ConcurrentMap;
aload 0
invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aconst_null
astore 1
start local 1 2: aconst_null
astore 2
start local 2 3: aload 0
getfield org.jruby.ext.ffi.AutoPointer$ReaperGroup.head:Lorg/jruby/ext/ffi/AutoPointer$Reaper;
astore 3
start local 3 4: goto 11
5: StackMap locals: org.jruby.Ruby org.jruby.runtime.ThreadContext org.jruby.ext.ffi.AutoPointer$Reaper
StackMap stack:
aload 3
getfield org.jruby.ext.ffi.AutoPointer$Reaper.released:Z
ifne 10
aload 3
getfield org.jruby.ext.ffi.AutoPointer$Reaper.unmanaged:Z
ifne 10
6: aload 3
invokevirtual org.jruby.ext.ffi.AutoPointer$Reaper.getRuntime:()Lorg/jruby/Ruby;
aload 1
if_acmpeq 9
7: aload 3
invokevirtual org.jruby.ext.ffi.AutoPointer$Reaper.getRuntime:()Lorg/jruby/Ruby;
astore 1
8: aload 1
invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
astore 2
9: StackMap locals:
StackMap stack:
aload 3
aload 2
invokevirtual org.jruby.ext.ffi.AutoPointer$Reaper.dispose:(Lorg/jruby/runtime/ThreadContext;)V
10: StackMap locals:
StackMap stack:
aload 3
getfield org.jruby.ext.ffi.AutoPointer$Reaper.next:Lorg/jruby/ext/ffi/AutoPointer$Reaper;
astore 3
11: StackMap locals:
StackMap stack:
aload 3
ifnonnull 5
12: return
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/AutoPointer$ReaperGroup;
2 13 1 runtime Lorg/jruby/Ruby;
3 13 2 ctx Lorg/jruby/runtime/ThreadContext;
4 13 3 r Lorg/jruby/ext/ffi/AutoPointer$Reaper;
}
Signature: Lorg/jruby/util/PhantomReferenceReaper<Ljava/lang/Object;>;Ljava/lang/Runnable;
SourceFile: "AutoPointer.java"
NestHost: org.jruby.ext.ffi.AutoPointer
InnerClasses:
private final Reaper = org.jruby.ext.ffi.AutoPointer$Reaper of org.jruby.ext.ffi.AutoPointer
private final ReaperGroup = org.jruby.ext.ffi.AutoPointer$ReaperGroup of org.jruby.ext.ffi.AutoPointer