public abstract class org.jruby.javasupport.util.ObjectProxyCache<T, A>
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.jruby.javasupport.util.ObjectProxyCache
super_class: java.lang.Object
{
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_SEGMENTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
private static final int DEFAULT_SEGMENT_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private static final float DEFAULT_LOAD_FACTOR;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.75
private static final int MAX_CAPACITY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1073741824
private static final int MAX_SEGMENTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65536
private static final int VULTURE_RUN_FREQ_SECONDS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private static int _nextId;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private final org.jruby.javasupport.util.ObjectProxyCache$ReferenceType referenceType;
descriptor: Lorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.javasupport.util.ObjectProxyCache$Segment<T, A>[] segments;
descriptor: [Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: [Lorg/jruby/javasupport/util/ObjectProxyCache$Segment<TT;TA;>;
private final int segmentShift;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int segmentMask;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.lang.Thread vulture;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private final int id;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/javasupport/util/ObjectProxyCache;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.javasupport.util.ObjectProxyCache.LOG:Lorg/jruby/util/log/Logger;
1: iconst_0
putstatic org.jruby.javasupport.util.ObjectProxyCache._nextId:I
return
LocalVariableTable:
Start End Slot Name Signature
private static synchronized int nextId();
descriptor: ()I
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=0, args_size=0
0: getstatic org.jruby.javasupport.util.ObjectProxyCache._nextId:I
iconst_1
iadd
dup
putstatic org.jruby.javasupport.util.ObjectProxyCache._nextId:I
ireturn
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
bipush 16
bipush 8
getstatic org.jruby.javasupport.util.ObjectProxyCache$ReferenceType.WEAK:Lorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;
invokespecial org.jruby.javasupport.util.ObjectProxyCache.<init>:(IILorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
public void <init>(org.jruby.javasupport.util.ObjectProxyCache$ReferenceType);
descriptor: (Lorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
bipush 16
bipush 8
aload 1
invokespecial org.jruby.javasupport.util.ObjectProxyCache.<init>:(IILorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
0 2 1 refType Lorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;
MethodParameters:
Name Flags
refType
public void <init>(int, int, org.jruby.javasupport.util.ObjectProxyCache$ReferenceType);
descriptor: (IILorg/jruby/javasupport/util/ObjectProxyCache$ReferenceType;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tSyntax error on token \"(\", Expression expected after this token\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
MethodParameters:
Name Flags
numSegments
initialSegCapacity
refType
public abstract T allocateProxy(, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
Signature: (Ljava/lang/Object;TA;)TT;
MethodParameters:
Name Flags
javaObject
allocator
public T get();
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 1
aconst_null
areturn
1: StackMap locals:
StackMap stack:
aload 1
invokestatic org.jruby.javasupport.util.ObjectProxyCache.hash:(Ljava/lang/Object;)I
istore 2
start local 2 2: aload 0
iload 2
invokevirtual org.jruby.javasupport.util.ObjectProxyCache.segmentFor:(I)Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
aload 1
iload 2
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.get:(Ljava/lang/Object;I)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
0 3 1 javaObject Ljava/lang/Object;
2 3 2 hash I
Signature: (Ljava/lang/Object;)TT;
MethodParameters:
Name Flags
javaObject
public T getOrCreate(, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 1
aload 2
ifnonnull 2
StackMap locals:
StackMap stack:
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.jruby.javasupport.util.ObjectProxyCache.hash:(Ljava/lang/Object;)I
istore 3
start local 3 3: aload 0
iload 3
invokevirtual org.jruby.javasupport.util.ObjectProxyCache.segmentFor:(I)Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
aload 1
iload 3
aload 2
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.getOrCreate:(Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
0 4 1 javaObject Ljava/lang/Object;
0 4 2 allocator TA;
3 4 3 hash I
Signature: (Ljava/lang/Object;TA;)TT;
MethodParameters:
Name Flags
javaObject
allocator
public void put(, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 1
aload 2
ifnonnull 2
StackMap locals:
StackMap stack:
1: return
2: StackMap locals:
StackMap stack:
aload 1
invokestatic org.jruby.javasupport.util.ObjectProxyCache.hash:(Ljava/lang/Object;)I
istore 3
start local 3 3: aload 0
iload 3
invokevirtual org.jruby.javasupport.util.ObjectProxyCache.segmentFor:(I)Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
aload 1
iload 3
aload 2
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.put:(Ljava/lang/Object;ILjava/lang/Object;)V
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
0 5 1 javaObject Ljava/lang/Object;
0 5 2 proxy TT;
3 5 3 hash I
Signature: (Ljava/lang/Object;TT;)V
MethodParameters:
Name Flags
javaObject
proxy
private static int hash(java.lang.Object);
descriptor: (Ljava/lang/Object;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
istore 1
start local 1 1: iload 1
iload 1
bipush 20
iushr
iload 1
bipush 12
iushr
ixor
ixor
istore 1
2: iload 1
iload 1
bipush 7
iushr
ixor
iload 1
iconst_4
iushr
ixor
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 javaObject Ljava/lang/Object;
1 3 1 h I
MethodParameters:
Name Flags
javaObject
private org.jruby.javasupport.util.ObjectProxyCache$Segment<T, A> segmentFor(int);
descriptor: (I)Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segments:[Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
iload 1
aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segmentShift:I
iushr
aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segmentMask:I
iand
aaload
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
0 1 1 hash I
Signature: (I)Lorg/jruby/javasupport/util/ObjectProxyCache$Segment<TT;TA;>;
MethodParameters:
Name Flags
hash
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=6, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segments:[Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 5
StackMap locals: org.jruby.javasupport.util.ObjectProxyCache int top int int org.jruby.javasupport.util.ObjectProxyCache$Segment[]
StackMap stack:
2: aload 5
iload 3
aaload
astore 2
start local 2 3: iload 1
aload 2
getfield org.jruby.javasupport.util.ObjectProxyCache$Segment.tableSize:I
iadd
istore 1
end local 2 4: iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
iload 4
if_icmplt 2
6: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
1 7 1 size I
3 4 2 seg Lorg/jruby/javasupport/util/ObjectProxyCache$Segment<TT;TA;>;
public java.lang.String stats();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=12, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: iconst_0
istore 3
start local 3 3: iconst_0
istore 4
start local 4 4: aload 1
ldc "Segments: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segments:[Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: aload 0
getfield org.jruby.javasupport.util.ObjectProxyCache.segments:[Lorg/jruby/javasupport/util/ObjectProxyCache$Segment;
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 22
StackMap locals: org.jruby.javasupport.util.ObjectProxyCache java.lang.StringBuilder int int int top int int org.jruby.javasupport.util.ObjectProxyCache$Segment[]
StackMap stack:
6: aload 8
iload 6
aaload
astore 5
start local 5 7: iconst_0
istore 9
start local 9 8: iconst_0
istore 10
start local 10 9: aload 5
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.lock:()V
10: aload 5
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.count:()I
istore 9
11: aload 5
getfield org.jruby.javasupport.util.ObjectProxyCache$Segment.entryTable:[Lorg/jruby/javasupport/util/ObjectProxyCache$Entry;
arraylength
istore 10
12: goto 16
StackMap locals: org.jruby.javasupport.util.ObjectProxyCache java.lang.StringBuilder int int int org.jruby.javasupport.util.ObjectProxyCache$Segment int int org.jruby.javasupport.util.ObjectProxyCache$Segment[] int int
StackMap stack: java.lang.Throwable
13: astore 11
14: aload 5
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.unlock:()V
15: aload 11
athrow
16: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.jruby.javasupport.util.ObjectProxyCache$Segment.unlock:()V
17: iload 3
iload 9
iadd
istore 3
18: iload 4
iload 10
iadd
istore 4
19: aload 1
ldc "seg["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
iinc 2 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "]: size: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 9
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
20: ldc " alloc: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 10
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 10 end local 9 end local 5 21: iinc 6 1
StackMap locals: org.jruby.javasupport.util.ObjectProxyCache java.lang.StringBuilder int int int top int int org.jruby.javasupport.util.ObjectProxyCache$Segment[]
StackMap stack:
22: iload 6
iload 7
if_icmplt 6
23: aload 1
ldc "Total: size: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
24: ldc " alloc: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
25: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/jruby/javasupport/util/ObjectProxyCache<TT;TA;>;
1 26 1 b Ljava/lang/StringBuilder;
2 26 2 n I
3 26 3 size I
4 26 4 alloc I
7 21 5 seg Lorg/jruby/javasupport/util/ObjectProxyCache$Segment<TT;TA;>;
8 21 9 ssize I
9 21 10 salloc I
Exception table:
from to target type
10 13 13 any
}
Signature: <T:Ljava/lang/Object;A:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "ObjectProxyCache.java"
NestMembers:
org.jruby.javasupport.util.ObjectProxyCache$Entry org.jruby.javasupport.util.ObjectProxyCache$EntryRef org.jruby.javasupport.util.ObjectProxyCache$ReferenceType org.jruby.javasupport.util.ObjectProxyCache$Segment org.jruby.javasupport.util.ObjectProxyCache$SoftEntryRef org.jruby.javasupport.util.ObjectProxyCache$WeakEntryRef
InnerClasses:
Entry = org.jruby.javasupport.util.ObjectProxyCache$Entry of org.jruby.javasupport.util.ObjectProxyCache
private abstract EntryRef = org.jruby.javasupport.util.ObjectProxyCache$EntryRef of org.jruby.javasupport.util.ObjectProxyCache
public final ReferenceType = org.jruby.javasupport.util.ObjectProxyCache$ReferenceType of org.jruby.javasupport.util.ObjectProxyCache
Segment = org.jruby.javasupport.util.ObjectProxyCache$Segment of org.jruby.javasupport.util.ObjectProxyCache
private final SoftEntryRef = org.jruby.javasupport.util.ObjectProxyCache$SoftEntryRef of org.jruby.javasupport.util.ObjectProxyCache
private final WeakEntryRef = org.jruby.javasupport.util.ObjectProxyCache$WeakEntryRef of org.jruby.javasupport.util.ObjectProxyCache