public class java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject implements java.util.concurrent.locks.Condition, java.io.Serializable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
super_class: java.lang.Object
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1173984872572414699
private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node firstWaiter;
descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node lastWaiter;
descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private static final int REINTERRUPT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int THROW_IE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
final java.util.concurrent.locks.AbstractQueuedSynchronizer this$0;
descriptor: Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(java.util.concurrent.locks.AbstractQueuedSynchronizer);
descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
MethodParameters:
Name Flags
this$0 final
private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node addConditionWaiter();
descriptor: ()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 3: aload 1
ifnull 6
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
bipush -2
if_icmpeq 6
4: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
5: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
6: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
new java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
dup
bipush -2
invokespecial java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>:(I)V
astore 2
start local 2 7: aload 1
ifnonnull 9
8: aload 0
aload 2
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
goto 10
9: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 1
aload 2
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
10: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
11: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 12 1 t Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
7 12 2 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
private void doSignal(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: StackMap locals:
StackMap stack:
aload 0
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
dup_x1
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
ifnonnull 2
1: aload 0
aconst_null
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
2: StackMap locals:
StackMap stack:
aload 1
aconst_null
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
3: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferForSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifne 5
4: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
dup
astore 1
ifnonnull 0
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 6 1 first Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
MethodParameters:
Name Flags
first
private void doSignalAll(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 0
aconst_null
dup_x1
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
1: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 2
start local 2 2: aload 1
aconst_null
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
3: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferForSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
pop
4: aload 2
astore 1
end local 2 5: aload 1
ifnonnull 1
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 7 1 first Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
2 5 2 next Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
MethodParameters:
Name Flags
first
private void unlinkCancelledWaiters();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: goto 14
3: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 3
start local 3 4: aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
bipush -2
if_icmpeq 12
5: aload 1
aconst_null
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
6: aload 2
ifnonnull 8
7: aload 0
aload 3
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
goto 9
8: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 2
aload 3
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
9: StackMap locals:
StackMap stack:
aload 3
ifnonnull 13
10: aload 0
aload 2
putfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
11: goto 13
12: StackMap locals:
StackMap stack:
aload 1
astore 2
13: StackMap locals:
StackMap stack:
aload 3
astore 1
end local 3 14: StackMap locals:
StackMap stack:
aload 1
ifnonnull 3
15: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
1 16 1 t Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
2 16 2 trail Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
4 14 3 next Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
public final void signal();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 3: aload 1
ifnull 5
4: aload 0
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignal:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
5: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 6 1 first Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
public final void signalAll();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 3: aload 1
ifnull 5
4: aload 0
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.doSignalAll:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
5: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 6 1 first Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
public final void awaitUninterruptibly();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 1: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
istore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 7
4: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
StackMap stack:
aload 0
invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
5: invokestatic java.lang.Thread.interrupted:()Z
ifeq 7
6: iconst_1
istore 3
7: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 4
8: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
iload 2
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
ifne 9
iload 3
ifeq 10
9: StackMap locals:
StackMap stack:
invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
10: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
1 11 1 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
2 11 2 savedState I
3 11 3 interrupted Z
private int checkInterruptWhileWaiting(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node);
descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: invokestatic java.lang.Thread.interrupted:()Z
ifeq 3
1: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 2
iconst_m1
goto 4
StackMap locals:
StackMap stack:
2: iconst_1
goto 4
3: StackMap locals:
StackMap stack:
iconst_0
4: StackMap locals:
StackMap stack: int
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 5 1 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
MethodParameters:
Name Flags
node
private void reportInterruptAfterWait(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iconst_m1
if_icmpne 2
1: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iload 1
iconst_1
if_icmpne 4
3: invokestatic java.util.concurrent.locks.AbstractQueuedSynchronizer.selfInterrupt:()V
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 5 1 interruptMode I
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
interruptMode
public final void await();
descriptor: ()V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=4, args_size=1
start local 0 0: invokestatic java.lang.Thread.interrupted:()Z
ifeq 2
1: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 3: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
istore 2
start local 2 4: iconst_0
istore 3
start local 3 5: goto 9
6: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
StackMap stack:
aload 0
invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
7: aload 0
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
dup
istore 3
ifeq 9
8: goto 10
9: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 6
10: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 1
iload 2
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
ifeq 12
iload 3
iconst_m1
if_icmpeq 12
11: iconst_1
istore 3
12: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
ifnull 14
13: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
14: StackMap locals:
StackMap stack:
iload 3
ifeq 16
15: aload 0
iload 3
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
16: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 17 1 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
4 17 2 savedState I
5 17 3 interruptMode I
Exceptions:
throws java.lang.InterruptedException
public final long awaitNanos(long);
descriptor: (J)J
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=12, args_size=2
start local 0 start local 1 0: invokestatic java.lang.Thread.interrupted:()Z
ifeq 2
1: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
lload 1
ladd
lstore 3
start local 3 3: lload 1
lstore 5
start local 5 4: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 7
start local 7 5: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 7
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
istore 8
start local 8 6: iconst_0
istore 9
start local 9 7: goto 16
8: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int
StackMap stack:
lload 1
lconst_0
lcmp
ifgt 11
9: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 7
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
pop
10: goto 17
11: StackMap locals:
StackMap stack:
lload 1
ldc 1000
lcmp
ifle 13
12: aload 0
lload 1
invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
13: StackMap locals:
StackMap stack:
aload 0
aload 7
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
dup
istore 9
ifeq 15
14: goto 17
15: StackMap locals:
StackMap stack:
lload 3
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 1
16: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 7
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 8
17: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 7
iload 8
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
ifeq 19
iload 9
iconst_m1
if_icmpeq 19
18: iconst_1
istore 9
19: StackMap locals:
StackMap stack:
aload 7
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
ifnull 21
20: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
21: StackMap locals:
StackMap stack:
iload 9
ifeq 23
22: aload 0
iload 9
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
23: StackMap locals:
StackMap stack:
lload 3
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 10
start local 10 24: lload 10
lload 5
lcmp
ifgt 25
lload 10
goto 26
StackMap locals: long
StackMap stack:
25: ldc -9223372036854775808
StackMap locals:
StackMap stack: long
26: lreturn
end local 10 end local 9 end local 8 end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 27 1 nanosTimeout J
3 27 3 deadline J
4 27 5 initialNanos J
5 27 7 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
6 27 8 savedState I
7 27 9 interruptMode I
24 27 10 remaining J
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
nanosTimeout
public final boolean awaitUntil(java.util.Date);
descriptor: (Ljava/util/Date;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.util.Date.getTime:()J
lstore 2
start local 2 1: invokestatic java.lang.Thread.interrupted:()Z
ifeq 3
2: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
3: StackMap locals: long
StackMap stack:
aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 4
start local 4 4: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 4
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
istore 5
start local 5 5: iconst_0
istore 6
start local 6 6: iconst_0
istore 7
start local 7 7: goto 14
8: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject java.util.Date long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lload 2
lcmp
iflt 11
9: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 4
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
istore 6
10: goto 15
11: StackMap locals:
StackMap stack:
aload 0
lload 2
invokestatic java.util.concurrent.locks.LockSupport.parkUntil:(Ljava/lang/Object;J)V
12: aload 0
aload 4
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
dup
istore 7
ifeq 14
13: goto 15
14: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 4
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 8
15: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 4
iload 5
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
ifeq 17
iload 7
iconst_m1
if_icmpeq 17
16: iconst_1
istore 7
17: StackMap locals:
StackMap stack:
aload 4
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
ifnull 19
18: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
19: StackMap locals:
StackMap stack:
iload 7
ifeq 21
20: aload 0
iload 7
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
21: StackMap locals:
StackMap stack:
iload 6
ifeq 22
iconst_0
goto 23
StackMap locals:
StackMap stack:
22: iconst_1
StackMap locals:
StackMap stack: int
23: ireturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 24 1 deadline Ljava/util/Date;
1 24 2 abstime J
4 24 4 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
5 24 5 savedState I
6 24 6 timedout Z
7 24 7 interruptMode I
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
deadline
public final boolean await(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=12, args_size=3
start local 0 start local 1 start local 3 0: aload 3
lload 1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 4
start local 4 1: invokestatic java.lang.Thread.interrupted:()Z
ifeq 3
2: new java.lang.InterruptedException
dup
invokespecial java.lang.InterruptedException.<init>:()V
athrow
3: StackMap locals: long
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
lload 4
ladd
lstore 6
start local 6 4: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter:()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 8
start local 8 5: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 8
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.fullyRelease:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
istore 9
start local 9 6: iconst_0
istore 10
start local 10 7: iconst_0
istore 11
start local 11 8: goto 17
9: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject long java.util.concurrent.TimeUnit long long java.util.concurrent.locks.AbstractQueuedSynchronizer$Node int int int
StackMap stack:
lload 4
lconst_0
lcmp
ifgt 12
10: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 8
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.transferAfterCancelledWait:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
istore 10
11: goto 18
12: StackMap locals:
StackMap stack:
lload 4
ldc 1000
lcmp
ifle 14
13: aload 0
lload 4
invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
14: StackMap locals:
StackMap stack:
aload 0
aload 8
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.checkInterruptWhileWaiting:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
dup
istore 11
ifeq 16
15: goto 18
16: StackMap locals:
StackMap stack:
lload 6
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 4
17: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 8
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isOnSyncQueue:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
ifeq 9
18: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
aload 8
iload 9
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued:(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
ifeq 20
iload 11
iconst_m1
if_icmpeq 20
19: iconst_1
istore 11
20: StackMap locals:
StackMap stack:
aload 8
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
ifnull 22
21: aload 0
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.unlinkCancelledWaiters:()V
22: StackMap locals:
StackMap stack:
iload 11
ifeq 24
23: aload 0
iload 11
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait:(I)V
24: StackMap locals:
StackMap stack:
iload 10
ifeq 25
iconst_0
goto 26
StackMap locals:
StackMap stack:
25: iconst_1
StackMap locals:
StackMap stack: int
26: ireturn
end local 11 end local 10 end local 9 end local 8 end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 27 1 time J
0 27 3 unit Ljava/util/concurrent/TimeUnit;
1 27 4 nanosTimeout J
4 27 6 deadline J
5 27 8 node Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
6 27 9 savedState I
7 27 10 timedout Z
8 27 11 interruptMode I
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
time
unit
final boolean isOwnedBy(java.util.concurrent.locks.AbstractQueuedSynchronizer);
descriptor: (Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
0 2 1 sync Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
MethodParameters:
Name Flags
sync
protected final boolean hasWaiters();
descriptor: ()Z
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
start local 1 3: goto 7
4: StackMap locals: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
bipush -2
if_icmpne 6
5: iconst_1
ireturn
6: StackMap locals:
StackMap stack:
aload 1
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 1
StackMap locals:
StackMap stack:
7: aload 1
ifnonnull 4
end local 1 8: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 8 1 w Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
protected final int getWaitQueueLength();
descriptor: ()I
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 3: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 2
start local 2 4: goto 8
5: StackMap locals: int java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 2
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
bipush -2
if_icmpne 7
6: iinc 1 1
7: StackMap locals:
StackMap stack:
aload 2
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 2
StackMap locals:
StackMap stack:
8: aload 2
ifnonnull 5
end local 2 9: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 10 1 n I
4 9 2 w Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
protected final java.util.Collection<java.lang.Thread> getWaitingThreads();
descriptor: ()Ljava/util/Collection;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.this$0:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;
invokevirtual java.util.concurrent.locks.AbstractQueuedSynchronizer.isHeldExclusively:()Z
ifne 2
1: new java.lang.IllegalMonitorStateException
dup
invokespecial java.lang.IllegalMonitorStateException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 3: aload 0
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 2
start local 2 4: goto 10
5: StackMap locals: java.util.ArrayList java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
StackMap stack:
aload 2
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.waitStatus:I
bipush -2
if_icmpne 9
6: aload 2
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.thread:Ljava/lang/Thread;
astore 3
start local 3 7: aload 3
ifnull 9
8: aload 1
aload 3
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 3 9: StackMap locals:
StackMap stack:
aload 2
getfield java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
astore 2
StackMap locals:
StackMap stack:
10: aload 2
ifnonnull 5
end local 2 11: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
3 12 1 list Ljava/util/ArrayList<Ljava/lang/Thread;>;
4 11 2 w Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
7 9 3 t Ljava/lang/Thread;
Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;
}
SourceFile: "AbstractQueuedSynchronizer.java"
NestHost: java.util.concurrent.locks.AbstractQueuedSynchronizer
InnerClasses:
public ConditionObject = java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject of java.util.concurrent.locks.AbstractQueuedSynchronizer
final Node = java.util.concurrent.locks.AbstractQueuedSynchronizer$Node of java.util.concurrent.locks.AbstractQueuedSynchronizer