abstract class com.lmax.disruptor.RingBufferFields<E> extends com.lmax.disruptor.RingBufferPad
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.lmax.disruptor.RingBufferFields
super_class: com.lmax.disruptor.RingBufferPad
{
private static final int BUFFER_PAD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long REF_ARRAY_BASE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int REF_ELEMENT_SHIFT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final sun.misc.Unsafe UNSAFE;
descriptor: Lsun/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final long indexMask;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.Object[] entries;
descriptor: [Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
protected final int bufferSize;
descriptor: I
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
protected final com.lmax.disruptor.Sequencer sequencer;
descriptor: Lcom/lmax/disruptor/Sequencer;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=0
0: invokestatic com.lmax.disruptor.util.Util.getUnsafe:()Lsun/misc/Unsafe;
putstatic com.lmax.disruptor.RingBufferFields.UNSAFE:Lsun/misc/Unsafe;
1: getstatic com.lmax.disruptor.RingBufferFields.UNSAFE:Lsun/misc/Unsafe;
ldc [Ljava/lang/Object;
invokevirtual sun.misc.Unsafe.arrayIndexScale:(Ljava/lang/Class;)I
istore 0
start local 0 2: iconst_4
iload 0
if_icmpne 5
3: iconst_2
putstatic com.lmax.disruptor.RingBufferFields.REF_ELEMENT_SHIFT:I
4: goto 9
5: StackMap locals: int
StackMap stack:
bipush 8
iload 0
if_icmpne 8
6: iconst_3
putstatic com.lmax.disruptor.RingBufferFields.REF_ELEMENT_SHIFT:I
7: goto 9
8: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "Unknown pointer size"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
sipush 128
iload 0
idiv
putstatic com.lmax.disruptor.RingBufferFields.BUFFER_PAD:I
10: getstatic com.lmax.disruptor.RingBufferFields.UNSAFE:Lsun/misc/Unsafe;
ldc [Ljava/lang/Object;
invokevirtual sun.misc.Unsafe.arrayBaseOffset:(Ljava/lang/Class;)I
getstatic com.lmax.disruptor.RingBufferFields.BUFFER_PAD:I
getstatic com.lmax.disruptor.RingBufferFields.REF_ELEMENT_SHIFT:I
ishl
iadd
i2l
putstatic com.lmax.disruptor.RingBufferFields.REF_ARRAY_BASE:J
end local 0 11: return
LocalVariableTable:
Start End Slot Name Signature
2 11 0 scale I
void <init>(com.lmax.disruptor.EventFactory<E>, com.lmax.disruptor.Sequencer);
descriptor: (Lcom/lmax/disruptor/EventFactory;Lcom/lmax/disruptor/Sequencer;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial com.lmax.disruptor.RingBufferPad.<init>:()V
1: aload 0
aload 2
putfield com.lmax.disruptor.RingBufferFields.sequencer:Lcom/lmax/disruptor/Sequencer;
2: aload 0
aload 2
invokeinterface com.lmax.disruptor.Sequencer.getBufferSize:()I
putfield com.lmax.disruptor.RingBufferFields.bufferSize:I
3: aload 0
getfield com.lmax.disruptor.RingBufferFields.bufferSize:I
iconst_1
if_icmpge 5
4: new java.lang.IllegalArgumentException
dup
ldc "bufferSize must not be less than 1"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: com.lmax.disruptor.RingBufferFields com.lmax.disruptor.EventFactory com.lmax.disruptor.Sequencer
StackMap stack:
aload 0
getfield com.lmax.disruptor.RingBufferFields.bufferSize:I
invokestatic java.lang.Integer.bitCount:(I)I
iconst_1
if_icmpeq 7
6: new java.lang.IllegalArgumentException
dup
ldc "bufferSize must be a power of 2"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.lmax.disruptor.RingBufferFields.bufferSize:I
iconst_1
isub
i2l
putfield com.lmax.disruptor.RingBufferFields.indexMask:J
8: aload 0
aload 2
invokeinterface com.lmax.disruptor.Sequencer.getBufferSize:()I
iconst_2
getstatic com.lmax.disruptor.RingBufferFields.BUFFER_PAD:I
imul
iadd
anewarray java.lang.Object
putfield com.lmax.disruptor.RingBufferFields.entries:[Ljava/lang/Object;
9: aload 0
aload 1
invokevirtual com.lmax.disruptor.RingBufferFields.fill:(Lcom/lmax/disruptor/EventFactory;)V
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/lmax/disruptor/RingBufferFields<TE;>;
0 11 1 eventFactory Lcom/lmax/disruptor/EventFactory<TE;>;
0 11 2 sequencer Lcom/lmax/disruptor/Sequencer;
Signature: (Lcom/lmax/disruptor/EventFactory<TE;>;Lcom/lmax/disruptor/Sequencer;)V
MethodParameters:
Name Flags
eventFactory
sequencer
private void fill(com.lmax.disruptor.EventFactory<E>);
descriptor: (Lcom/lmax/disruptor/EventFactory;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 4
2: StackMap locals: int
StackMap stack:
aload 0
getfield com.lmax.disruptor.RingBufferFields.entries:[Ljava/lang/Object;
getstatic com.lmax.disruptor.RingBufferFields.BUFFER_PAD:I
iload 2
iadd
aload 1
invokeinterface com.lmax.disruptor.EventFactory.newInstance:()Ljava/lang/Object;
aastore
3: iinc 2 1
StackMap locals:
StackMap stack:
4: iload 2
aload 0
getfield com.lmax.disruptor.RingBufferFields.bufferSize:I
if_icmplt 2
end local 2 5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/lmax/disruptor/RingBufferFields<TE;>;
0 6 1 eventFactory Lcom/lmax/disruptor/EventFactory<TE;>;
1 5 2 i I
Signature: (Lcom/lmax/disruptor/EventFactory<TE;>;)V
MethodParameters:
Name Flags
eventFactory
protected final E elementAt();
descriptor: (J)Ljava/lang/Object;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=8, locals=3, args_size=2
start local 0 start local 1 0: getstatic com.lmax.disruptor.RingBufferFields.UNSAFE:Lsun/misc/Unsafe;
aload 0
getfield com.lmax.disruptor.RingBufferFields.entries:[Ljava/lang/Object;
getstatic com.lmax.disruptor.RingBufferFields.REF_ARRAY_BASE:J
lload 1
aload 0
getfield com.lmax.disruptor.RingBufferFields.indexMask:J
land
getstatic com.lmax.disruptor.RingBufferFields.REF_ELEMENT_SHIFT:I
lshl
ladd
invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/lmax/disruptor/RingBufferFields<TE;>;
0 1 1 sequence J
Signature: (J)TE;
MethodParameters:
Name Flags
sequence
}
Signature: <E:Ljava/lang/Object;>Lcom/lmax/disruptor/RingBufferPad;
SourceFile: "RingBuffer.java"