public final class org.apache.cassandra.utils.concurrent.WaitQueue
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.apache.cassandra.utils.concurrent.WaitQueue
super_class: java.lang.Object
{
private static final int CANCELLED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
private static final int SIGNALLED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int NOT_SET;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater signalledUpdater;
descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.concurrent.ConcurrentLinkedQueue<org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal> queue;
descriptor: Ljava/util/concurrent/ConcurrentLinkedQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentLinkedQueue<Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lorg/apache/cassandra/utils/concurrent/WaitQueue;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.apache.cassandra.utils.concurrent.WaitQueue.$assertionsDisabled:Z
3: ldc Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
ldc "state"
invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
putstatic org.apache.cassandra.utils.concurrent.WaitQueue.signalledUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentLinkedQueue
dup
invokespecial java.util.concurrent.ConcurrentLinkedQueue.<init>:()V
putfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
public org.apache.cassandra.utils.concurrent.WaitQueue$Signal register();
descriptor: ()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: new org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal
dup
aload 0
invokespecial org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal.<init>:(Lorg/apache/cassandra/utils/concurrent/WaitQueue;)V
astore 1
start local 1 1: aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.add:(Ljava/lang/Object;)Z
pop
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
1 3 1 signal Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
public org.apache.cassandra.utils.concurrent.WaitQueue$Signal register(com.codahale.metrics.Timer$Context);
descriptor: (Lcom/codahale/metrics/Timer$Context;)Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.apache.cassandra.utils.concurrent.WaitQueue.$assertionsDisabled:Z
ifne 1
aload 1
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new org.apache.cassandra.utils.concurrent.WaitQueue$TimedSignal
dup
aload 0
aload 1
invokespecial org.apache.cassandra.utils.concurrent.WaitQueue$TimedSignal.<init>:(Lorg/apache/cassandra/utils/concurrent/WaitQueue;Lcom/codahale/metrics/Timer$Context;)V
astore 2
start local 2 2: aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
aload 2
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.add:(Ljava/lang/Object;)Z
pop
3: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
0 4 1 context Lcom/codahale/metrics/Timer$Context;
2 4 2 signal Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
MethodParameters:
Name Flags
context
public boolean signal();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.hasWaiters:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.poll:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal
astore 1
start local 1 3: aload 1
ifnull 4
aload 1
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal.signal:()Ljava/lang/Thread;
ifnull 2
4: StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal
StackMap stack:
aload 1
ifnull 5
iconst_1
ireturn
StackMap locals:
StackMap stack:
5: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
3 6 1 s Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
public void signalAll();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=7, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.hasWaiters:()Z
ifne 2
1: return
2: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 3: iconst_5
istore 2
start local 2 4: aconst_null
astore 3
start local 3 5: aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.iterator:()Ljava/util/Iterator;
astore 4
start local 4 6: goto 16
7: StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue int int java.lang.Thread java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal
astore 5
start local 5 8: aload 5
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal.signal:()Ljava/lang/Thread;
astore 6
start local 6 9: aload 6
ifnull 15
10: aload 6
aload 3
if_acmpne 12
11: goto 17
12: StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal java.lang.Thread
StackMap stack:
iinc 1 1
iload 1
iload 2
if_icmpne 15
13: aload 6
astore 3
14: iload 2
iconst_1
ishl
istore 2
15: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.remove:()V
end local 6 end local 5 16: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
17: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
3 18 1 i I
4 18 2 s I
5 18 3 randomThread Ljava/lang/Thread;
6 18 4 iter Ljava/util/Iterator<Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;>;
8 16 5 signal Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
9 16 6 signalled Ljava/lang/Thread;
private void cleanUpCancelled();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.iterator:()Ljava/util/Iterator;
astore 1
start local 1 1: goto 5
2: StackMap locals: java.util.Iterator
StackMap stack:
aload 1
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal
astore 2
start local 2 3: aload 2
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal.isCancelled:()Z
ifeq 5
4: aload 1
invokeinterface java.util.Iterator.remove:()V
end local 2 5: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
1 7 1 iter Ljava/util/Iterator<Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;>;
3 5 2 s Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;
public boolean hasWaiters();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.isEmpty:()Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
public int getWaiting();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.hasWaiters:()Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.cassandra.utils.concurrent.WaitQueue.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.iterator:()Ljava/util/Iterator;
astore 1
start local 1 3: iconst_0
istore 2
start local 2 4: goto 8
5: StackMap locals: java.util.Iterator int
StackMap stack:
aload 1
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.cassandra.utils.concurrent.WaitQueue$Signal
astore 3
start local 3 6: aload 3
invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.isCancelled:()Z
ifne 8
7: iinc 2 1
end local 3 8: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
9: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/apache/cassandra/utils/concurrent/WaitQueue;
3 10 1 iter Ljava/util/Iterator<Lorg/apache/cassandra/utils/concurrent/WaitQueue$RegisteredSignal;>;
4 10 2 count I
6 8 3 next Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
public static org.apache.cassandra.utils.concurrent.WaitQueue$Signal any(org.apache.cassandra.utils.concurrent.WaitQueue$Signal[]);
descriptor: ([Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;)Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.apache.cassandra.utils.concurrent.WaitQueue$AnySignal
dup
aload 0
invokespecial org.apache.cassandra.utils.concurrent.WaitQueue$AnySignal.<init>:([Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 signals [Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
MethodParameters:
Name Flags
signals
public static org.apache.cassandra.utils.concurrent.WaitQueue$Signal all(org.apache.cassandra.utils.concurrent.WaitQueue$Signal[]);
descriptor: ([Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;)Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.apache.cassandra.utils.concurrent.WaitQueue$AllSignal
dup
aload 0
invokespecial org.apache.cassandra.utils.concurrent.WaitQueue$AllSignal.<init>:([Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 signals [Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
MethodParameters:
Name Flags
signals
public static void waitOnCondition(java.util.function.BooleanSupplier, org.apache.cassandra.utils.concurrent.WaitQueue);
descriptor: (Ljava/util/function/BooleanSupplier;Lorg/apache/cassandra/utils/concurrent/WaitQueue;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=3, args_size=2
start local 0 start local 1 0: goto 6
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.register:()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
astore 2
start local 2 2: aload 0
invokeinterface java.util.function.BooleanSupplier.getAsBoolean:()Z
ifne 5
3: aload 2
invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.awaitUninterruptibly:()V
4: goto 6
5: StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue$Signal
StackMap stack:
aload 2
invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.cancel:()V
end local 2 6: StackMap locals:
StackMap stack:
aload 0
invokeinterface java.util.function.BooleanSupplier.getAsBoolean:()Z
ifeq 1
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 condition Ljava/util/function/BooleanSupplier;
0 8 1 queue Lorg/apache/cassandra/utils/concurrent/WaitQueue;
2 6 2 s Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
MethodParameters:
Name Flags
condition
queue
}
SourceFile: "WaitQueue.java"
NestMembers:
org.apache.cassandra.utils.concurrent.WaitQueue$AbstractSignal org.apache.cassandra.utils.concurrent.WaitQueue$AllSignal org.apache.cassandra.utils.concurrent.WaitQueue$AnySignal org.apache.cassandra.utils.concurrent.WaitQueue$MultiSignal org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal org.apache.cassandra.utils.concurrent.WaitQueue$Signal org.apache.cassandra.utils.concurrent.WaitQueue$TimedSignal
InnerClasses:
public Context = com.codahale.metrics.Timer$Context of com.codahale.metrics.Timer
public abstract AbstractSignal = org.apache.cassandra.utils.concurrent.WaitQueue$AbstractSignal of org.apache.cassandra.utils.concurrent.WaitQueue
private AllSignal = org.apache.cassandra.utils.concurrent.WaitQueue$AllSignal of org.apache.cassandra.utils.concurrent.WaitQueue
private AnySignal = org.apache.cassandra.utils.concurrent.WaitQueue$AnySignal of org.apache.cassandra.utils.concurrent.WaitQueue
private abstract MultiSignal = org.apache.cassandra.utils.concurrent.WaitQueue$MultiSignal of org.apache.cassandra.utils.concurrent.WaitQueue
private RegisteredSignal = org.apache.cassandra.utils.concurrent.WaitQueue$RegisteredSignal of org.apache.cassandra.utils.concurrent.WaitQueue
public abstract Signal = org.apache.cassandra.utils.concurrent.WaitQueue$Signal of org.apache.cassandra.utils.concurrent.WaitQueue
private final TimedSignal = org.apache.cassandra.utils.concurrent.WaitQueue$TimedSignal of org.apache.cassandra.utils.concurrent.WaitQueue