abstract class com.netflix.hystrix.util.Striped64 extends java.lang.Number
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.netflix.hystrix.util.Striped64
super_class: java.lang.Number
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -3403386352761423917
static final com.netflix.hystrix.util.Striped64$ThreadHashCode threadHashCode;
descriptor: Lcom/netflix/hystrix/util/Striped64$ThreadHashCode;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final int NCPU;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
volatile transient com.netflix.hystrix.util.Striped64$Cell[] cells;
descriptor: [Lcom/netflix/hystrix/util/Striped64$Cell;
flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT
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 com.netflix.hystrix.util.Striped64$ThreadHashCode
dup
invokespecial com.netflix.hystrix.util.Striped64$ThreadHashCode.<init>:()V
putstatic com.netflix.hystrix.util.Striped64.threadHashCode:Lcom/netflix/hystrix/util/Striped64$ThreadHashCode;
1: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
putstatic com.netflix.hystrix.util.Striped64.NCPU:I
2: invokestatic com.netflix.hystrix.util.Striped64.getUnsafe:()Lsun/misc/Unsafe;
putstatic com.netflix.hystrix.util.Striped64.UNSAFE:Lsun/misc/Unsafe;
3: ldc Lcom/netflix/hystrix/util/Striped64;
astore 0
start local 0 4: getstatic com.netflix.hystrix.util.Striped64.UNSAFE:Lsun/misc/Unsafe;
5: aload 0
ldc "base"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
6: invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic com.netflix.hystrix.util.Striped64.baseOffset:J
7: getstatic com.netflix.hystrix.util.Striped64.UNSAFE:Lsun/misc/Unsafe;
8: aload 0
ldc "busy"
invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
9: invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
putstatic com.netflix.hystrix.util.Striped64.busyOffset:J
end local 0 10: goto 13
StackMap locals:
StackMap stack: java.lang.Exception
11: astore 0
start local 0 12: new java.lang.Error
dup
aload 0
invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 13: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
4 10 0 sk Ljava/lang/Class<*>;
12 13 0 e Ljava/lang/Exception;
Exception table:
from to target type
2 10 11 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
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/util/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.netflix.hystrix.util.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic com.netflix.hystrix.util.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/netflix/hystrix/util/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.netflix.hystrix.util.Striped64.UNSAFE:Lsun/misc/Unsafe;
aload 0
getstatic com.netflix.hystrix.util.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/netflix/hystrix/util/Striped64;
abstract long fn(long, long);
descriptor: (JJ)J
flags: (0x0400) ACC_ABSTRACT
MethodParameters:
Name Flags
currentValue
newValue
final void retryUpdate(long, com.netflix.hystrix.util.Striped64$HashCode, boolean);
descriptor: (JLcom/netflix/hystrix/util/Striped64$HashCode;Z)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
getfield com.netflix.hystrix.util.Striped64$HashCode.code:I
istore 5
start local 5 1: iconst_0
istore 6
start local 6 2: StackMap locals: int int
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
dup
astore 7
start local 7 3: ifnull 57
aload 7
arraylength
dup
istore 9
start local 9 4: ifle 57
5: aload 7
iload 9
iconst_1
isub
iload 5
iand
aaload
dup
astore 8
start local 8 6: ifnonnull 28
7: aload 0
getfield com.netflix.hystrix.util.Striped64.busy:I
ifne 26
8: new com.netflix.hystrix.util.Striped64$Cell
dup
lload 1
invokespecial com.netflix.hystrix.util.Striped64$Cell.<init>:(J)V
astore 12
start local 12 9: aload 0
getfield com.netflix.hystrix.util.Striped64.busy:I
ifne 26
aload 0
invokevirtual com.netflix.hystrix.util.Striped64.casBusy:()Z
ifeq 26
10: iconst_0
istore 13
start local 13 11: aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
dup
astore 14
start local 14 12: ifnull 23
13: aload 14
arraylength
dup
istore 15
start local 15 14: ifle 23
15: aload 14
iload 15
iconst_1
isub
iload 5
iand
dup
istore 16
start local 16 16: aaload
ifnonnull 23
17: aload 14
iload 16
aload 12
aastore
18: iconst_1
istore 13
end local 16 end local 15 end local 14 19: goto 23
StackMap locals: com.netflix.hystrix.util.Striped64 long com.netflix.hystrix.util.Striped64$HashCode int int int com.netflix.hystrix.util.Striped64$Cell[] com.netflix.hystrix.util.Striped64$Cell int top top com.netflix.hystrix.util.Striped64$Cell int
StackMap stack: java.lang.Throwable
20: astore 17
21: aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
22: aload 17
athrow
23: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
24: iload 13
ifeq 2
25: goto 73
end local 13 end local 12 26: StackMap locals: com.netflix.hystrix.util.Striped64 long com.netflix.hystrix.util.Striped64$HashCode int int int com.netflix.hystrix.util.Striped64$Cell[] com.netflix.hystrix.util.Striped64$Cell int
StackMap stack:
iconst_0
istore 6
27: goto 53
28: StackMap locals:
StackMap stack:
iload 4
ifne 30
29: iconst_1
istore 4
goto 53
30: StackMap locals:
StackMap stack:
aload 8
aload 8
getfield com.netflix.hystrix.util.Striped64$Cell.value:J
dup2
lstore 10
start local 10 31: aload 0
lload 10
lload 1
invokevirtual com.netflix.hystrix.util.Striped64.fn:(JJ)J
invokevirtual com.netflix.hystrix.util.Striped64$Cell.cas:(JJ)Z
ifeq 33
32: goto 73
33: StackMap locals: long
StackMap stack:
iload 9
getstatic com.netflix.hystrix.util.Striped64.NCPU:I
if_icmpge 34
aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
aload 7
if_acmpeq 35
34: StackMap locals:
StackMap stack:
iconst_0
istore 6
goto 53
35: StackMap locals:
StackMap stack:
iload 6
ifne 37
36: iconst_1
istore 6
goto 53
37: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.Striped64.busy:I
ifne 53
aload 0
invokevirtual com.netflix.hystrix.util.Striped64.casBusy:()Z
ifeq 53
38: aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
aload 7
if_acmpne 50
39: iload 9
iconst_1
ishl
anewarray com.netflix.hystrix.util.Striped64$Cell
astore 12
start local 12 40: iconst_0
istore 13
start local 13 41: goto 44
42: StackMap locals: com.netflix.hystrix.util.Striped64$Cell[] int
StackMap stack:
aload 12
iload 13
aload 7
iload 13
aaload
aastore
43: iinc 13 1
StackMap locals:
StackMap stack:
44: iload 13
iload 9
if_icmplt 42
end local 13 45: aload 0
aload 12
putfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
end local 12 46: goto 50
StackMap locals: com.netflix.hystrix.util.Striped64 long com.netflix.hystrix.util.Striped64$HashCode int int int com.netflix.hystrix.util.Striped64$Cell[] com.netflix.hystrix.util.Striped64$Cell int long
StackMap stack: java.lang.Throwable
47: astore 14
48: aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
49: aload 14
athrow
50: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
51: iconst_0
istore 6
52: goto 2
end local 10 53: StackMap locals:
StackMap stack:
iload 5
iload 5
bipush 13
ishl
ixor
istore 5
54: iload 5
iload 5
bipush 17
iushr
ixor
istore 5
55: iload 5
iload 5
iconst_5
ishl
ixor
istore 5
56: goto 2
end local 9 end local 8 57: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.util.Striped64.busy:I
ifne 71
aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
aload 7
if_acmpne 71
aload 0
invokevirtual com.netflix.hystrix.util.Striped64.casBusy:()Z
ifeq 71
58: iconst_0
istore 12
start local 12 59: aload 0
getfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
aload 7
if_acmpne 68
60: iconst_2
anewarray com.netflix.hystrix.util.Striped64$Cell
astore 13
start local 13 61: aload 13
iload 5
iconst_1
iand
new com.netflix.hystrix.util.Striped64$Cell
dup
lload 1
invokespecial com.netflix.hystrix.util.Striped64$Cell.<init>:(J)V
aastore
62: aload 0
aload 13
putfield com.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
63: iconst_1
istore 12
end local 13 64: goto 68
StackMap locals: com.netflix.hystrix.util.Striped64 long com.netflix.hystrix.util.Striped64$HashCode int int int com.netflix.hystrix.util.Striped64$Cell[] top top top top int
StackMap stack: java.lang.Throwable
65: astore 14
66: aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
67: aload 14
athrow
68: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.netflix.hystrix.util.Striped64.busy:I
69: iload 12
ifeq 2
70: goto 73
end local 12 71: StackMap locals: com.netflix.hystrix.util.Striped64 long com.netflix.hystrix.util.Striped64$HashCode int int int com.netflix.hystrix.util.Striped64$Cell[]
StackMap stack:
aload 0
aload 0
getfield com.netflix.hystrix.util.Striped64.base:J
dup2
lstore 10
start local 10 72: aload 0
lload 10
lload 1
invokevirtual com.netflix.hystrix.util.Striped64.fn:(JJ)J
invokevirtual com.netflix.hystrix.util.Striped64.casBase:(JJ)Z
ifeq 2
end local 10 end local 7 73: StackMap locals:
StackMap stack:
aload 3
iload 5
putfield com.netflix.hystrix.util.Striped64$HashCode.code:I
74: 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/netflix/hystrix/util/Striped64;
0 75 1 x J
0 75 3 hc Lcom/netflix/hystrix/util/Striped64$HashCode;
0 75 4 wasUncontended Z
1 75 5 h I
2 75 6 collide Z
3 73 7 as [Lcom/netflix/hystrix/util/Striped64$Cell;
6 57 8 a Lcom/netflix/hystrix/util/Striped64$Cell;
4 57 9 n I
31 53 10 v J
72 73 10 v J
9 26 12 r Lcom/netflix/hystrix/util/Striped64$Cell;
11 26 13 created Z
12 19 14 rs [Lcom/netflix/hystrix/util/Striped64$Cell;
14 19 15 m I
16 19 16 j I
40 46 12 rs [Lcom/netflix/hystrix/util/Striped64$Cell;
41 45 13 i I
59 71 12 init Z
61 64 13 rs [Lcom/netflix/hystrix/util/Striped64$Cell;
Exception table:
from to target type
11 20 20 any
38 47 47 any
59 65 65 any
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.netflix.hystrix.util.Striped64.cells:[Lcom/netflix/hystrix/util/Striped64$Cell;
astore 3
start local 3 1: aload 0
lload 1
putfield com.netflix.hystrix.util.Striped64.base:J
2: aload 3
ifnull 11
3: aload 3
arraylength
istore 4
start local 4 4: iconst_0
istore 5
start local 5 5: goto 10
6: StackMap locals: com.netflix.hystrix.util.Striped64$Cell[] int int
StackMap stack:
aload 3
iload 5
aaload
astore 6
start local 6 7: aload 6
ifnull 9
8: aload 6
lload 1
putfield com.netflix.hystrix.util.Striped64$Cell.value:J
end local 6 9: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
10: iload 5
iload 4
if_icmplt 6
end local 5 end local 4 11: StackMap locals:
StackMap stack:
return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/netflix/hystrix/util/Striped64;
0 12 1 initialValue J
1 12 3 as [Lcom/netflix/hystrix/util/Striped64$Cell;
4 11 4 n I
5 11 5 i I
7 9 6 a Lcom/netflix/hystrix/util/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.netflix.hystrix.util.Striped64$1
dup
invokespecial com.netflix.hystrix.util.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"
8: aload 0
invokevirtual java.security.PrivilegedActionException.getCause:()Ljava/lang/Throwable;
9: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
7 10 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.netflix.hystrix.util.Striped64$1 com.netflix.hystrix.util.Striped64$Cell com.netflix.hystrix.util.Striped64$HashCode com.netflix.hystrix.util.Striped64$ThreadHashCode
InnerClasses:
com.netflix.hystrix.util.Striped64$1
final Cell = com.netflix.hystrix.util.Striped64$Cell of com.netflix.hystrix.util.Striped64
final HashCode = com.netflix.hystrix.util.Striped64$HashCode of com.netflix.hystrix.util.Striped64
final ThreadHashCode = com.netflix.hystrix.util.Striped64$ThreadHashCode of com.netflix.hystrix.util.Striped64