public class com.google.common.util.concurrent.CycleDetectingLockFactory
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.google.common.util.concurrent.CycleDetectingLockFactory
super_class: java.lang.Object
{
private static final java.util.concurrent.ConcurrentMap<java.lang.Class<? extends java.lang.Enum>, java.util.Map<? extends java.lang.Enum, com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode>> lockGraphNodesPerType;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/Class<+Ljava/lang/Enum;>;Ljava/util/Map<+Ljava/lang/Enum;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;>;
private static final java.util.logging.Logger logger;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final com.google.common.util.concurrent.CycleDetectingLockFactory$Policy policy;
descriptor: Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
flags: (0x0010) ACC_FINAL
private static final java.lang.ThreadLocal<java.util.ArrayList<com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode>> acquiredLocks;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/util/ArrayList<Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new com.google.common.collect.MapMaker
dup
invokespecial com.google.common.collect.MapMaker.<init>:()V
invokevirtual com.google.common.collect.MapMaker.weakKeys:()Lcom/google/common/collect/MapMaker;
invokevirtual com.google.common.collect.MapMaker.makeMap:()Ljava/util/concurrent/ConcurrentMap;
putstatic com.google.common.util.concurrent.CycleDetectingLockFactory.lockGraphNodesPerType:Ljava/util/concurrent/ConcurrentMap;
1: ldc Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
putstatic com.google.common.util.concurrent.CycleDetectingLockFactory.logger:Ljava/util/logging/Logger;
2: new com.google.common.util.concurrent.CycleDetectingLockFactory$1
dup
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$1.<init>:()V
3: putstatic com.google.common.util.concurrent.CycleDetectingLockFactory.acquiredLocks:Ljava/lang/ThreadLocal;
4: return
LocalVariableTable:
Start End Slot Name Signature
public static com.google.common.util.concurrent.CycleDetectingLockFactory newInstance(com.google.common.util.concurrent.CycleDetectingLockFactory$Policy);
descriptor: (Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;)Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new com.google.common.util.concurrent.CycleDetectingLockFactory
dup
aload 0
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 policy Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
MethodParameters:
Name Flags
policy
public java.util.concurrent.locks.ReentrantLock newReentrantLock(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory.newReentrantLock:(Ljava/lang/String;Z)Ljava/util/concurrent/locks/ReentrantLock;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 1 1 lockName Ljava/lang/String;
MethodParameters:
Name Flags
lockName
public java.util.concurrent.locks.ReentrantLock newReentrantLock(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.google.common.util.concurrent.CycleDetectingLockFactory.policy:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
getstatic com.google.common.util.concurrent.CycleDetectingLockFactory$Policies.DISABLED:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policies;
if_acmpne 2
1: new java.util.concurrent.locks.ReentrantLock
dup
iload 2
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:(Z)V
goto 3
2: StackMap locals:
StackMap stack:
new com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantLock
dup
aload 0
new com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
dup
aload 1
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.<init>:(Ljava/lang/String;)V
iload 2
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantLock.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;Z)V
3: StackMap locals:
StackMap stack: java.util.concurrent.locks.ReentrantLock
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 4 1 lockName Ljava/lang/String;
0 4 2 fair Z
MethodParameters:
Name Flags
lockName
fair
public java.util.concurrent.locks.ReentrantReadWriteLock newReentrantReadWriteLock(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory.newReentrantReadWriteLock:(Ljava/lang/String;Z)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 1 1 lockName Ljava/lang/String;
MethodParameters:
Name Flags
lockName
public java.util.concurrent.locks.ReentrantReadWriteLock newReentrantReadWriteLock(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.google.common.util.concurrent.CycleDetectingLockFactory.policy:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
getstatic com.google.common.util.concurrent.CycleDetectingLockFactory$Policies.DISABLED:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policies;
if_acmpne 2
1: new java.util.concurrent.locks.ReentrantReadWriteLock
dup
iload 2
invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:(Z)V
goto 3
2: StackMap locals:
StackMap stack:
new com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock
dup
aload 0
new com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
dup
aload 1
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.<init>:(Ljava/lang/String;)V
iload 2
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;Z)V
3: StackMap locals:
StackMap stack: java.util.concurrent.locks.ReentrantReadWriteLock
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 4 1 lockName Ljava/lang/String;
0 4 2 fair Z
MethodParameters:
Name Flags
lockName
fair
public static <E extends java.lang.Enum<E>> com.google.common.util.concurrent.CycleDetectingLockFactory$WithExplicitOrdering<E> newInstanceWithExplicitOrdering(java.lang.Class<E>, com.google.common.util.concurrent.CycleDetectingLockFactory$Policy);
descriptor: (Ljava/lang/Class;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;)Lcom/google/common/util/concurrent/CycleDetectingLockFactory$WithExplicitOrdering;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 0
invokestatic com.google.common.util.concurrent.CycleDetectingLockFactory.getOrCreateNodes:(Ljava/lang/Class;)Ljava/util/Map;
astore 2
start local 2 3: new com.google.common.util.concurrent.CycleDetectingLockFactory$WithExplicitOrdering
dup
aload 1
aload 2
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$WithExplicitOrdering.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;Ljava/util/Map;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 enumClass Ljava/lang/Class<TE;>;
0 4 1 policy Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
3 4 2 lockGraphNodes Ljava/util/Map<TE;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
Signature: <E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;)Lcom/google/common/util/concurrent/CycleDetectingLockFactory$WithExplicitOrdering<TE;>;
MethodParameters:
Name Flags
enumClass
policy
private static java.util.Map<? extends java.lang.Enum, com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode> getOrCreateNodes(java.lang.Class<? extends java.lang.Enum>);
descriptor: (Ljava/lang/Class;)Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic com.google.common.util.concurrent.CycleDetectingLockFactory.lockGraphNodesPerType:Ljava/util/concurrent/ConcurrentMap;
aload 0
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 1
start local 1 1: aload 1
ifnull 3
2: aload 1
areturn
3: StackMap locals: java.util.Map
StackMap stack:
aload 0
invokestatic com.google.common.util.concurrent.CycleDetectingLockFactory.createNodes:(Ljava/lang/Class;)Ljava/util/Map;
astore 2
start local 2 4: getstatic com.google.common.util.concurrent.CycleDetectingLockFactory.lockGraphNodesPerType:Ljava/util/concurrent/ConcurrentMap;
aload 0
aload 2
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
astore 1
5: aload 1
aload 2
invokestatic com.google.common.base.MoreObjects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 clazz Ljava/lang/Class<+Ljava/lang/Enum;>;
1 6 1 existing Ljava/util/Map<+Ljava/lang/Enum;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
4 6 2 created Ljava/util/Map<+Ljava/lang/Enum;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
Signature: (Ljava/lang/Class<+Ljava/lang/Enum;>;)Ljava/util/Map<+Ljava/lang/Enum;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
MethodParameters:
Name Flags
clazz
static <E extends java.lang.Enum<E>> java.util.Map<E, com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode> createNodes(java.lang.Class<E>);
descriptor: (Ljava/lang/Class;)Ljava/util/Map;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=10, args_size=1
start local 0 0: aload 0
invokestatic com.google.common.collect.Maps.newEnumMap:(Ljava/lang/Class;)Ljava/util/EnumMap;
astore 1
start local 1 1: aload 0
invokevirtual java.lang.Class.getEnumConstants:()[Ljava/lang/Object;
checkcast java.lang.Enum[]
astore 2
start local 2 2: aload 2
arraylength
istore 3
start local 3 3: iload 3
invokestatic com.google.common.collect.Lists.newArrayListWithCapacity:(I)Ljava/util/ArrayList;
astore 4
start local 4 4: aload 2
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 10
StackMap locals: java.lang.Class java.util.EnumMap java.lang.Enum[] int java.util.ArrayList top int int java.lang.Enum[]
StackMap stack:
5: aload 8
iload 6
aaload
astore 5
start local 5 6: new com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
dup
aload 5
invokestatic com.google.common.util.concurrent.CycleDetectingLockFactory.getLockName:(Ljava/lang/Enum;)Ljava/lang/String;
invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.<init>:(Ljava/lang/String;)V
astore 9
start local 9 7: aload 4
aload 9
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
8: aload 1
aload 5
aload 9
invokevirtual java.util.EnumMap.put:(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 9 end local 5 9: iinc 6 1
StackMap locals:
StackMap stack:
10: iload 6
iload 7
if_icmplt 5
11: iconst_1
istore 5
start local 5 12: goto 15
13: StackMap locals: java.lang.Class java.util.EnumMap java.lang.Enum[] int java.util.ArrayList int
StackMap stack:
aload 4
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
getstatic com.google.common.util.concurrent.CycleDetectingLockFactory$Policies.THROW:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policies;
aload 4
iconst_0
iload 5
invokevirtual java.util.ArrayList.subList:(II)Ljava/util/List;
invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.checkAcquiredLocks:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;Ljava/util/List;)V
14: iinc 5 1
StackMap locals:
StackMap stack:
15: iload 5
iload 3
if_icmplt 13
end local 5 16: iconst_0
istore 5
start local 5 17: goto 20
18: StackMap locals:
StackMap stack:
aload 4
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
getstatic com.google.common.util.concurrent.CycleDetectingLockFactory$Policies.DISABLED:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policies;
aload 4
iload 5
iconst_1
iadd
iload 3
invokevirtual java.util.ArrayList.subList:(II)Ljava/util/List;
invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.checkAcquiredLocks:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;Ljava/util/List;)V
19: iinc 5 1
StackMap locals:
StackMap stack:
20: iload 5
iload 3
iconst_1
isub
if_icmplt 18
end local 5 21: aload 1
invokestatic java.util.Collections.unmodifiableMap:(Ljava/util/Map;)Ljava/util/Map;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 clazz Ljava/lang/Class<TE;>;
1 22 1 map Ljava/util/EnumMap<TE;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
2 22 2 keys [Ljava/lang/Enum;
3 22 3 numKeys I
4 22 4 nodes Ljava/util/ArrayList<Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
6 9 5 key TE;
7 9 9 node Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
12 16 5 i I
17 21 5 i I
Signature: <E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;)Ljava/util/Map<TE;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.google.common.annotations.VisibleForTesting()
MethodParameters:
Name Flags
clazz
private static java.lang.String getLockName(java.lang.Enum<?>);
descriptor: (Ljava/lang/Enum;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Enum.getDeclaringClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual java.lang.Enum.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 rank Ljava/lang/Enum<*>;
Signature: (Ljava/lang/Enum<*>;)Ljava/lang/String;
MethodParameters:
Name Flags
rank
private void <init>(com.google.common.util.concurrent.CycleDetectingLockFactory$Policy);
descriptor: (Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, 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
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.google.common.util.concurrent.CycleDetectingLockFactory$Policy
putfield com.google.common.util.concurrent.CycleDetectingLockFactory.policy:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 3 1 policy Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
MethodParameters:
Name Flags
policy
private void aboutToAcquire(com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock);
descriptor: (Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingLock;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock.isAcquiredByCurrentThread:()Z
ifne 5
1: getstatic com.google.common.util.concurrent.CycleDetectingLockFactory.acquiredLocks:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.ArrayList
astore 2
start local 2 2: aload 1
invokeinterface com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock.getLockGraphNode:()Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
astore 3
start local 3 3: aload 3
aload 0
getfield com.google.common.util.concurrent.CycleDetectingLockFactory.policy:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;
aload 2
invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode.checkAcquiredLocks:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory$Policy;Ljava/util/List;)V
4: aload 2
aload 3
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 3 end local 2 5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
0 6 1 lock Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingLock;
2 5 2 acquiredLockList Ljava/util/ArrayList<Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
3 5 3 node Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
MethodParameters:
Name Flags
lock
private static void lockStateChanged(com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock);
descriptor: (Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingLock;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
invokeinterface com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock.isAcquiredByCurrentThread:()Z
ifne 10
1: getstatic com.google.common.util.concurrent.CycleDetectingLockFactory.acquiredLocks:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.ArrayList
astore 1
start local 1 2: aload 0
invokeinterface com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock.getLockGraphNode:()Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
astore 2
start local 2 3: aload 1
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 3
start local 3 4: goto 9
5: StackMap locals: java.util.ArrayList com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode int
StackMap stack:
aload 1
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
aload 2
if_acmpne 8
6: aload 1
iload 3
invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
pop
7: goto 10
8: StackMap locals:
StackMap stack:
iinc 3 -1
StackMap locals:
StackMap stack:
9: iload 3
ifge 5
end local 3 end local 2 end local 1 10: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 lock Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingLock;
2 10 1 acquiredLockList Ljava/util/ArrayList<Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;>;
3 10 2 node Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
4 10 3 i I
MethodParameters:
Name Flags
lock
}
SourceFile: "CycleDetectingLockFactory.java"
NestMembers:
com.google.common.util.concurrent.CycleDetectingLockFactory$1 com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantLock com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock com.google.common.util.concurrent.CycleDetectingLockFactory$ExampleStackTrace com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode com.google.common.util.concurrent.CycleDetectingLockFactory$Policies com.google.common.util.concurrent.CycleDetectingLockFactory$Policies$1 com.google.common.util.concurrent.CycleDetectingLockFactory$Policies$2 com.google.common.util.concurrent.CycleDetectingLockFactory$Policies$3 com.google.common.util.concurrent.CycleDetectingLockFactory$Policy com.google.common.util.concurrent.CycleDetectingLockFactory$PotentialDeadlockException com.google.common.util.concurrent.CycleDetectingLockFactory$WithExplicitOrdering
InnerClasses:
com.google.common.util.concurrent.CycleDetectingLockFactory$1
private abstract CycleDetectingLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock of com.google.common.util.concurrent.CycleDetectingLockFactory
final CycleDetectingReentrantLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantLock of com.google.common.util.concurrent.CycleDetectingLockFactory
private CycleDetectingReentrantReadLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock of com.google.common.util.concurrent.CycleDetectingLockFactory
final CycleDetectingReentrantReadWriteLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock of com.google.common.util.concurrent.CycleDetectingLockFactory
private CycleDetectingReentrantWriteLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock of com.google.common.util.concurrent.CycleDetectingLockFactory
private ExampleStackTrace = com.google.common.util.concurrent.CycleDetectingLockFactory$ExampleStackTrace of com.google.common.util.concurrent.CycleDetectingLockFactory
private LockGraphNode = com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode of com.google.common.util.concurrent.CycleDetectingLockFactory
public abstract Policies = com.google.common.util.concurrent.CycleDetectingLockFactory$Policies of com.google.common.util.concurrent.CycleDetectingLockFactory
public abstract Policy = com.google.common.util.concurrent.CycleDetectingLockFactory$Policy of com.google.common.util.concurrent.CycleDetectingLockFactory
public final PotentialDeadlockException = com.google.common.util.concurrent.CycleDetectingLockFactory$PotentialDeadlockException of com.google.common.util.concurrent.CycleDetectingLockFactory
public final WithExplicitOrdering = com.google.common.util.concurrent.CycleDetectingLockFactory$WithExplicitOrdering of com.google.common.util.concurrent.CycleDetectingLockFactory
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
com.google.errorprone.annotations.CanIgnoreReturnValue()
com.google.common.annotations.GwtIncompatible()