final class org.apache.cassandra.hints.HintsBuffer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: org.apache.cassandra.hints.HintsBuffer
super_class: java.lang.Object
{
static final int ENTRY_OVERHEAD_SIZE;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 12
static final int CLOSED;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: -1
private final java.nio.ByteBuffer slab;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.atomic.AtomicInteger position;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.ConcurrentMap<java.util.UUID, java.util.Queue<java.lang.Integer>> offsets;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/util/UUID;Ljava/util/Queue<Ljava/lang/Integer;>;>;
private final org.apache.cassandra.utils.concurrent.OpOrder appendOrder;
descriptor: Lorg/apache/cassandra/utils/concurrent/OpOrder;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private void <init>(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
2: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
putfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
3: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield org.apache.cassandra.hints.HintsBuffer.offsets:Ljava/util/concurrent/ConcurrentMap;
4: aload 0
new org.apache.cassandra.utils.concurrent.OpOrder
dup
invokespecial org.apache.cassandra.utils.concurrent.OpOrder.<init>:()V
putfield org.apache.cassandra.hints.HintsBuffer.appendOrder:Lorg/apache/cassandra/utils/concurrent/OpOrder;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/cassandra/hints/HintsBuffer;
0 6 1 slab Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
slab
static org.apache.cassandra.hints.HintsBuffer create(int);
descriptor: (I)Lorg/apache/cassandra/hints/HintsBuffer;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.apache.cassandra.hints.HintsBuffer
dup
iload 0
invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
invokespecial org.apache.cassandra.hints.HintsBuffer.<init>:(Ljava/nio/ByteBuffer;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 slabSize I
MethodParameters:
Name Flags
slabSize
boolean isClosed();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
iconst_m1
if_icmpne 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/apache/cassandra/hints/HintsBuffer;
int capacity();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/cassandra/hints/HintsBuffer;
int remaining();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 1
start local 1 1: iload 1
iconst_m1
if_icmpne 2
iconst_0
goto 3
StackMap locals: int
StackMap stack:
2: aload 0
invokevirtual org.apache.cassandra.hints.HintsBuffer.capacity:()I
iload 1
isub
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/cassandra/hints/HintsBuffer;
1 4 1 pos I
org.apache.cassandra.hints.HintsBuffer recycle();
descriptor: ()Lorg/apache/cassandra/hints/HintsBuffer;
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
1: new org.apache.cassandra.hints.HintsBuffer
dup
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokespecial org.apache.cassandra.hints.HintsBuffer.<init>:(Ljava/nio/ByteBuffer;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/cassandra/hints/HintsBuffer;
void free();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokestatic org.apache.cassandra.io.util.FileUtils.clean:(Ljava/nio/ByteBuffer;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/cassandra/hints/HintsBuffer;
void waitForModifications();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.appendOrder:Lorg/apache/cassandra/utils/concurrent/OpOrder;
invokevirtual org.apache.cassandra.utils.concurrent.OpOrder.awaitNewBarrier:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/cassandra/hints/HintsBuffer;
java.util.Set<java.util.UUID> hostIds();
descriptor: ()Ljava/util/Set;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.offsets:Ljava/util/concurrent/ConcurrentMap;
invokeinterface java.util.concurrent.ConcurrentMap.keySet:()Ljava/util/Set;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/cassandra/hints/HintsBuffer;
Signature: ()Ljava/util/Set<Ljava/util/UUID;>;
java.util.Iterator<java.nio.ByteBuffer> consumingHintsIterator(java.util.UUID);
descriptor: (Ljava/util/UUID;)Ljava/util/Iterator;
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.offsets:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Queue
astore 2
start local 2 1: aload 2
ifnonnull 3
2: invokestatic java.util.Collections.emptyIterator:()Ljava/util/Iterator;
areturn
3: StackMap locals: java.util.Queue
StackMap stack:
new org.apache.cassandra.hints.HintsBuffer$1
dup
aload 0
aload 2
invokespecial org.apache.cassandra.hints.HintsBuffer$1.<init>:(Lorg/apache/cassandra/hints/HintsBuffer;Ljava/util/Queue;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/cassandra/hints/HintsBuffer;
0 4 1 hostId Ljava/util/UUID;
1 4 2 bufferOffsets Ljava/util/Queue<Ljava/lang/Integer;>;
Signature: (Ljava/util/UUID;)Ljava/util/Iterator<Ljava/nio/ByteBuffer;>;
MethodParameters:
Name Flags
hostId
org.apache.cassandra.hints.HintsBuffer$Allocation allocate(int);
descriptor: (I)Lorg/apache/cassandra/hints/HintsBuffer$Allocation;
flags: (0x0000)
Code:
stack=8, locals=5, args_size=2
start local 0 start local 1 0: iload 1
bipush 12
iadd
istore 2
start local 2 1: iload 2
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
iconst_2
idiv
if_icmple 6
2: new java.lang.IllegalArgumentException
dup
ldc "Hint of %s bytes is too large - the maximum size is %s"
iconst_2
anewarray java.lang.Object
dup
iconst_0
3: iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
4: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
iconst_2
idiv
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
5: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: int
StackMap stack:
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.appendOrder:Lorg/apache/cassandra/utils/concurrent/OpOrder;
invokevirtual org.apache.cassandra.utils.concurrent.OpOrder.start:()Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
astore 3
start local 3 7: aload 0
iload 2
aload 3
invokevirtual org.apache.cassandra.hints.HintsBuffer.allocate:(ILorg/apache/cassandra/utils/concurrent/OpOrder$Group;)Lorg/apache/cassandra/hints/HintsBuffer$Allocation;
8: areturn
9: StackMap locals: org.apache.cassandra.hints.HintsBuffer int int org.apache.cassandra.utils.concurrent.OpOrder$Group
StackMap stack: java.lang.Throwable
astore 4
start local 4 10: aload 3
invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Group.close:()V
11: aload 4
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/apache/cassandra/hints/HintsBuffer;
0 12 1 hintSize I
1 12 2 totalSize I
7 12 3 opGroup Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
10 12 4 t Ljava/lang/Throwable;
Exception table:
from to target type
7 8 9 Class java.lang.Throwable
MethodParameters:
Name Flags
hintSize
private org.apache.cassandra.hints.HintsBuffer$Allocation allocate(int, org.apache.cassandra.utils.concurrent.OpOrder$Group);
descriptor: (ILorg/apache/cassandra/utils/concurrent/OpOrder$Group;)Lorg/apache/cassandra/hints/HintsBuffer$Allocation;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
invokevirtual org.apache.cassandra.hints.HintsBuffer.allocateBytes:(I)I
istore 3
start local 3 1: iload 3
ifge 4
2: aload 2
invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Group.close:()V
3: aconst_null
areturn
4: StackMap locals: int
StackMap stack:
new org.apache.cassandra.hints.HintsBuffer$Allocation
dup
aload 0
iload 3
iload 1
aload 2
invokespecial org.apache.cassandra.hints.HintsBuffer$Allocation.<init>:(Lorg/apache/cassandra/hints/HintsBuffer;IILorg/apache/cassandra/utils/concurrent/OpOrder$Group;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/cassandra/hints/HintsBuffer;
0 5 1 totalSize I
0 5 2 opGroup Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
1 5 3 offset I
MethodParameters:
Name Flags
totalSize
opGroup
private int allocateBytes(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 1: iload 2
iload 1
iadd
istore 3
start local 3 2: iload 2
iconst_m1
if_icmpne 4
3: iconst_m1
ireturn
4: StackMap locals: int int
StackMap stack:
iload 3
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.slab:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
if_icmple 7
5: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
iconst_m1
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
6: iconst_m1
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.cassandra.hints.HintsBuffer.position:Ljava/util/concurrent/atomic/AtomicInteger;
iload 2
iload 3
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ifeq 0
8: iload 2
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/apache/cassandra/hints/HintsBuffer;
0 9 1 totalSize I
1 9 2 prev I
2 9 3 next I
MethodParameters:
Name Flags
totalSize
private void put(java.util.UUID, int);
descriptor: (Ljava/util/UUID;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.offsets:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Queue
astore 3
start local 3 1: aload 3
ifnonnull 3
2: aload 0
getfield org.apache.cassandra.hints.HintsBuffer.offsets:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
org/apache/cassandra/hints/HintsBuffer.lambda$0(Ljava/util/UUID;)Ljava/util/Queue; (6)
(Ljava/util/UUID;)Ljava/util/Queue;
invokeinterface java.util.concurrent.ConcurrentMap.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast java.util.Queue
astore 3
3: StackMap locals: java.util.Queue
StackMap stack:
aload 3
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Queue.offer:(Ljava/lang/Object;)Z
pop
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/apache/cassandra/hints/HintsBuffer;
0 5 1 hostId Ljava/util/UUID;
0 5 2 offset I
1 5 3 queue Ljava/util/Queue<Ljava/lang/Integer;>;
MethodParameters:
Name Flags
hostId
offset
private static java.util.Queue lambda$0(java.util.UUID);
descriptor: (Ljava/util/UUID;)Ljava/util/Queue;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: new java.util.concurrent.ConcurrentLinkedQueue
dup
invokespecial java.util.concurrent.ConcurrentLinkedQueue.<init>:()V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 id Ljava/util/UUID;
}
SourceFile: "HintsBuffer.java"
NestMembers:
org.apache.cassandra.hints.HintsBuffer$1 org.apache.cassandra.hints.HintsBuffer$Allocation
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
org.apache.cassandra.hints.HintsBuffer$1
final Allocation = org.apache.cassandra.hints.HintsBuffer$Allocation of org.apache.cassandra.hints.HintsBuffer
public final Group = org.apache.cassandra.utils.concurrent.OpOrder$Group of org.apache.cassandra.utils.concurrent.OpOrder