public final class com.oracle.graal.pointsto.ObjectScanner$ReusableSet
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.graal.pointsto.ObjectScanner$ReusableSet
super_class: java.lang.Object
{
private final java.util.IdentityHashMap<java.lang.Object, java.util.concurrent.atomic.AtomicInteger> store;
descriptor: Ljava/util/IdentityHashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/IdentityHashMap<Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;>;
private int sequence;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.IdentityHashMap
dup
ldc 65536
invokespecial java.util.IdentityHashMap.<init>:(I)V
putfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.store:Ljava/util/IdentityHashMap;
2: aload 0
iconst_0
putfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.sequence:I
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;
public java.lang.Object putAndAcquire(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.store:Ljava/util/IdentityHashMap;
astore 2
start local 2 1: aload 2
aload 1
invokevirtual java.util.IdentityHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.atomic.AtomicInteger
astore 3
start local 3 2: aload 0
getfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.sequence:I
istore 4
start local 4 3: iload 4
iconst_1
isub
istore 5
start local 5 4: StackMap locals: com.oracle.graal.pointsto.ObjectScanner$ReusableSet java.lang.Object java.util.IdentityHashMap java.util.concurrent.atomic.AtomicInteger int int
StackMap stack:
aload 3
ifnull 13
5: aload 3
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 6
start local 6 6: iload 6
iload 4
if_icmpne 8
7: aload 1
areturn
8: StackMap locals: int
StackMap stack:
iload 6
iload 5
if_icmpeq 11
aload 3
iload 6
iload 5
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ifeq 11
9: aconst_null
areturn
10: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.yield:()V
11: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
iload 4
if_icmpne 10
12: aload 1
areturn
end local 6 13: StackMap locals:
StackMap stack:
new java.util.concurrent.atomic.AtomicInteger
dup
iload 5
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
astore 6
start local 6 14: aload 2
dup
astore 7
monitorenter
15: aload 2
aload 1
aload 6
invokevirtual java.util.IdentityHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.atomic.AtomicInteger
astore 3
16: aload 3
ifnonnull 19
17: aload 7
monitorexit
18: aconst_null
areturn
19: StackMap locals: java.util.concurrent.atomic.AtomicInteger java.util.IdentityHashMap
StackMap stack:
aload 7
monitorexit
20: goto 4
21: StackMap locals:
StackMap stack: java.lang.Throwable
aload 7
monitorexit
22: athrow
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 23 0 this Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;
0 23 1 object Ljava/lang/Object;
1 23 2 map Ljava/util/IdentityHashMap<Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;>;
2 23 3 i Ljava/util/concurrent/atomic/AtomicInteger;
3 23 4 seq I
4 23 5 inflightSequence I
6 13 6 current I
14 23 6 newSequence Ljava/util/concurrent/atomic/AtomicInteger;
Exception table:
from to target type
15 18 21 any
19 20 21 any
21 22 21 any
MethodParameters:
Name Flags
object
public void release(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.store:Ljava/util/IdentityHashMap;
astore 2
start local 2 1: aload 2
aload 1
invokevirtual java.util.IdentityHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.atomic.AtomicInteger
astore 3
start local 3 2: aload 3
ifnonnull 9
3: aload 2
dup
astore 4
monitorenter
4: aload 2
aload 1
invokevirtual java.util.IdentityHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.atomic.AtomicInteger
astore 3
5: aload 4
monitorexit
6: goto 9
StackMap locals: com.oracle.graal.pointsto.ObjectScanner$ReusableSet java.lang.Object java.util.IdentityHashMap java.util.concurrent.atomic.AtomicInteger java.util.IdentityHashMap
StackMap stack: java.lang.Throwable
7: aload 4
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 3
aload 0
getfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.sequence:I
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;
0 11 1 o Ljava/lang/Object;
1 11 2 map Ljava/util/IdentityHashMap<Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicInteger;>;
2 11 3 i Ljava/util/concurrent/atomic/AtomicInteger;
Exception table:
from to target type
4 6 7 any
7 8 7 any
MethodParameters:
Name Flags
o
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
dup
getfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.sequence:I
iconst_2
iadd
putfield com.oracle.graal.pointsto.ObjectScanner$ReusableSet.sequence:I
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;
}
SourceFile: "ObjectScanner.java"
NestHost: com.oracle.graal.pointsto.ObjectScanner
InnerClasses:
public final ReusableSet = com.oracle.graal.pointsto.ObjectScanner$ReusableSet of com.oracle.graal.pointsto.ObjectScanner