abstract class com.google.common.hash.Striped64 extends java.lang.Number
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.google.common.hash.Striped64
super_class: java.lang.Number
{
static final java.lang.ThreadLocal<int[]> threadHashCode;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<[I>;
static final java.util.Random rng;
descriptor: Ljava/util/Random;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final int NCPU;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
volatile transient com.google.common.hash.Striped64$Cell[] cells;
descriptor: [Lcom/google/common/hash/Striped64$Cell;
flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT
RuntimeVisibleTypeAnnotations:
FIELD
org.checkerframework.checker.nullness.qual.Nullable()
volatile transient long base;
descriptor: J
flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT
volatile transient int busy;
descriptor: I
flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT
private static final sun.misc.Unsafe UNSAFE;
descriptor: Lsun/misc/Unsafe;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long baseOffset;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long busyOffset;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=1, args_size=0
0: new java.lang.ThreadLocal
dup
invokespecial java.lang.ThreadLocal.<init>:()V
putstatic com.google.common.hash.Striped64.threadHashCode:Ljava/lang/ThreadLocal;
1: new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
putstatic com.google.common.hash.Striped64.rng:Ljava/util/Random;
2: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
putstatic com.google.common.hash.Striped64.NCPU:I
3: invokestatic com.google.common.hash.Striped64.getUnsafe:()Lsun/misc/Unsafe;
putstatic com.google.common.hash.Striped64.UNSAFE:Lsun/misc/Unsafe;
4: ldc Lcom/google/common/hash/Striped64;
astore 0
start local 0 5: getstatic com.google.common.hash.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
ldc "base"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic com.google.common.hash.Striped64.baseOffset:J
6: getstatic com.google.common.hash.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
ldc "busy"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic com.google.common.hash.Striped64.busyOffset:J
end local 0 7: goto 10
StackMap locals:
StackMap stack: java.lang.Exception
8: astore 0
start local 0 9: new java.lang.Error
dup
aload 0
invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 10: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
5 7 0 sk Ljava/lang/Class<*>;
9 10 0 e Ljava/lang/Exception;
Exception table:
from to target type
3 7 8 Class java.lang.Exception
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Number.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/hash/Striped64;
final boolean casBase(long, long);
descriptor: (JJ)Z
flags: (0x0010) ACC_FINAL
Code:
stack=8, locals=5, args_size=3
start local 0 start local 1 start local 3 0: getstatic com.google.common.hash.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic com.google.common.hash.Striped64.baseOffset:J
lload 1
lload 3
invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/hash/Striped64;
0 1 1 cmp J
0 1 3 val J
MethodParameters:
Name Flags
cmp
val
final boolean casBusy();
descriptor: ()Z
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=1, args_size=1
start local 0 0: getstatic com.google.common.hash.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic com.google.common.hash.Striped64.busyOffset:J
iconst_0
iconst_1
invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/hash/Striped64;
abstract long fn(long, long);
descriptor: (JJ)J
flags: (0x0400) ACC_ABSTRACT
MethodParameters:
Name Flags
currentValue
newValue
final void retryUpdate(long, int[], boolean);
descriptor: (J[IZ)V
flags: (0x0010) ACC_FINAL
Code:
stack=8, locals=18, args_size=4
start local 0 start local 1 start local 3 start local 4 0: aload 3
ifnonnull 7
1: getstatic com.google.common.hash.Striped64.threadHashCode:Ljava/lang/ThreadLocal;
iconst_1
newarray 10
dup
astore 3
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
2: getstatic com.google.common.hash.Striped64.rng:Ljava/util/Random;
invokevirtual java.util.Random.nextInt:()I
istore 6
start local 6 3: aload 3
iconst_0
iload 6
ifne 4
iconst_1
goto 5
StackMap locals: com.google.common.hash.Striped64 long int[] int top int
StackMap stack: int[] int
4: iload 6
StackMap locals: com.google.common.hash.Striped64 long int[] int top int
StackMap stack: int[] int int
5: dup_x2
iastore
istore 5
end local 6 start local 5 6: goto 8
end local 5 StackMap locals: com.google.common.hash.Striped64 long int[] int
StackMap stack:
7: aload 3
iconst_0
iaload
istore 5
start local 5 8: StackMap locals: int
StackMap stack:
iconst_0
istore 6
start local 6 9: StackMap locals: int
StackMap stack:
aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
dup
astore 7
start local 7 10: ifnull 59
aload 7
arraylength
dup
istore 9
start local 9 11: ifle 59
12: aload 7
iload 9
iconst_1
isub
iload 5
iand
aaload
dup
astore 8
start local 8 13: ifnonnull 32
14: aload 0
getfield com.google.common.hash.Striped64.busy:I
ifne 30
15: new com.google.common.hash.Striped64$Cell
dup
lload 1
invokespecial com.google.common.hash.Striped64$Cell.<init>:(J)V
astore 12
start local 12 16: aload 0
getfield com.google.common.hash.Striped64.busy:I
ifne 30
aload 0
invokevirtual com.google.common.hash.Striped64.casBusy:()Z
ifeq 30
17: iconst_0
istore 13
start local 13 18: aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
dup
astore 14
start local 14 19: ifnull 28
aload 14
arraylength
dup
istore 15
start local 15 20: ifle 28
aload 14
iload 15
iconst_1
isub
iload 5
iand
dup
istore 16
start local 16 21: aaload
ifnonnull 28
22: aload 14
iload 16
aload 12
aastore
23: iconst_1
istore 13
end local 16 end local 15 end local 14 24: goto 28
StackMap locals: com.google.common.hash.Striped64 long int[] int int int com.google.common.hash.Striped64$Cell[] com.google.common.hash.Striped64$Cell int top top com.google.common.hash.Striped64$Cell int
StackMap stack: java.lang.Throwable
25: astore 17
26: aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
27: aload 17
athrow
28: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
29: iload 13
ifeq 9
goto 74
end local 13 end local 12 30: StackMap locals: com.google.common.hash.Striped64 long int[] int int int com.google.common.hash.Striped64$Cell[] com.google.common.hash.Striped64$Cell int
StackMap stack:
iconst_0
istore 6
31: goto 54
StackMap locals:
StackMap stack:
32: iload 4
ifne 34
33: iconst_1
istore 4
goto 54
34: StackMap locals:
StackMap stack:
aload 8
aload 8
getfield com.google.common.hash.Striped64$Cell.value:J
dup2
lstore 10
start local 10 35: aload 0
lload 10
lload 1
invokevirtual com.google.common.hash.Striped64.fn:(JJ)J
invokevirtual com.google.common.hash.Striped64$Cell.cas:(JJ)Z
ifeq 36
goto 74
36: StackMap locals: long
StackMap stack:
iload 9
getstatic com.google.common.hash.Striped64.NCPU:I
if_icmpge 37
aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
aload 7
if_acmpeq 38
StackMap locals:
StackMap stack:
37: iconst_0
istore 6
goto 54
38: StackMap locals:
StackMap stack:
iload 6
ifne 39
iconst_1
istore 6
goto 54
39: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.hash.Striped64.busy:I
ifne 54
aload 0
invokevirtual com.google.common.hash.Striped64.casBusy:()Z
ifeq 54
40: aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
aload 7
if_acmpne 51
41: iload 9
iconst_1
ishl
anewarray com.google.common.hash.Striped64$Cell
astore 12
start local 12 42: iconst_0
istore 13
start local 13 43: goto 45
StackMap locals: com.google.common.hash.Striped64$Cell[] int
StackMap stack:
44: aload 12
iload 13
aload 7
iload 13
aaload
aastore
iinc 13 1
StackMap locals:
StackMap stack:
45: iload 13
iload 9
if_icmplt 44
end local 13 46: aload 0
aload 12
putfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
end local 12 47: goto 51
StackMap locals: com.google.common.hash.Striped64 long int[] int int int com.google.common.hash.Striped64$Cell[] com.google.common.hash.Striped64$Cell int long
StackMap stack: java.lang.Throwable
48: astore 14
49: aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
50: aload 14
athrow
51: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
52: iconst_0
istore 6
53: goto 9
end local 10 54: StackMap locals:
StackMap stack:
iload 5
iload 5
bipush 13
ishl
ixor
istore 5
55: iload 5
iload 5
bipush 17
iushr
ixor
istore 5
56: iload 5
iload 5
iconst_5
ishl
ixor
istore 5
57: aload 3
iconst_0
iload 5
iastore
58: goto 9
end local 9 end local 8 StackMap locals:
StackMap stack:
59: aload 0
getfield com.google.common.hash.Striped64.busy:I
ifne 72
aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
aload 7
if_acmpne 72
aload 0
invokevirtual com.google.common.hash.Striped64.casBusy:()Z
ifeq 72
60: iconst_0
istore 12
start local 12 61: aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
aload 7
if_acmpne 70
62: iconst_2
anewarray com.google.common.hash.Striped64$Cell
astore 13
start local 13 63: aload 13
iload 5
iconst_1
iand
new com.google.common.hash.Striped64$Cell
dup
lload 1
invokespecial com.google.common.hash.Striped64$Cell.<init>:(J)V
aastore
64: aload 0
aload 13
putfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
65: iconst_1
istore 12
end local 13 66: goto 70
StackMap locals: com.google.common.hash.Striped64 long int[] int int int com.google.common.hash.Striped64$Cell[] top top top top int
StackMap stack: java.lang.Throwable
67: astore 14
68: aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
69: aload 14
athrow
70: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.google.common.hash.Striped64.busy:I
71: iload 12
ifeq 9
goto 74
end local 12 72: StackMap locals: com.google.common.hash.Striped64 long int[] int int int com.google.common.hash.Striped64$Cell[]
StackMap stack:
aload 0
aload 0
getfield com.google.common.hash.Striped64.base:J
dup2
lstore 10
start local 10 73: aload 0
lload 10
lload 1
invokevirtual com.google.common.hash.Striped64.fn:(JJ)J
invokevirtual com.google.common.hash.Striped64.casBase:(JJ)Z
ifeq 9
end local 10 end local 7 74: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 75 0 this Lcom/google/common/hash/Striped64;
0 75 1 x J
0 75 3 hc [I
0 75 4 wasUncontended Z
6 7 5 h I
8 75 5 h I
3 6 6 r I
9 75 6 collide Z
10 74 7 as [Lcom/google/common/hash/Striped64$Cell;
13 59 8 a Lcom/google/common/hash/Striped64$Cell;
11 59 9 n I
35 54 10 v J
73 74 10 v J
16 30 12 r Lcom/google/common/hash/Striped64$Cell;
18 30 13 created Z
19 24 14 rs [Lcom/google/common/hash/Striped64$Cell;
20 24 15 m I
21 24 16 j I
42 47 12 rs [Lcom/google/common/hash/Striped64$Cell;
43 46 13 i I
61 72 12 init Z
63 66 13 rs [Lcom/google/common/hash/Striped64$Cell;
Exception table:
from to target type
18 25 25 any
40 48 48 any
61 67 67 any
RuntimeVisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
org.checkerframework.checker.nullness.qual.Nullable()
MethodParameters:
Name Flags
x
hc
wasUncontended
final void internalReset(long);
descriptor: (J)V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield com.google.common.hash.Striped64.cells:[Lcom/google/common/hash/Striped64$Cell;
astore 3
start local 3 1: aload 0
lload 1
putfield com.google.common.hash.Striped64.base:J
2: aload 3
ifnull 10
3: aload 3
arraylength
istore 4
start local 4 4: iconst_0
istore 5
start local 5 5: goto 9
6: StackMap locals: com.google.common.hash.Striped64$Cell[] int int
StackMap stack:
aload 3
iload 5
aaload
astore 6
start local 6 7: aload 6
ifnull 8
aload 6
lload 1
putfield com.google.common.hash.Striped64$Cell.value:J
end local 6 8: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
9: iload 5
iload 4
if_icmplt 6
end local 5 end local 4 10: StackMap locals:
StackMap stack:
return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/google/common/hash/Striped64;
0 11 1 initialValue J
1 11 3 as [Lcom/google/common/hash/Striped64$Cell;
4 10 4 n I
5 10 5 i I
7 8 6 a Lcom/google/common/hash/Striped64$Cell;
MethodParameters:
Name Flags
initialValue
private static sun.misc.Unsafe getUnsafe();
descriptor: ()Lsun/misc/Unsafe;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.SecurityException
pop
3: new com.google.common.hash.Striped64$1
dup
invokespecial com.google.common.hash.Striped64$1.<init>:()V
4: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast sun.misc.Unsafe
5: areturn
6: StackMap locals:
StackMap stack: java.security.PrivilegedActionException
astore 0
start local 0 7: new java.lang.RuntimeException
dup
ldc "Could not initialize intrinsics"
aload 0
invokevirtual java.security.PrivilegedActionException.getCause:()Ljava/lang/Throwable;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
7 8 0 e Ljava/security/PrivilegedActionException;
Exception table:
from to target type
0 1 2 Class java.lang.SecurityException
3 5 6 Class java.security.PrivilegedActionException
}
SourceFile: "Striped64.java"
NestMembers:
com.google.common.hash.Striped64$1 com.google.common.hash.Striped64$Cell
InnerClasses:
com.google.common.hash.Striped64$1
final Cell = com.google.common.hash.Striped64$Cell of com.google.common.hash.Striped64
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()