public class org.apache.cassandra.utils.concurrent.IntervalLock extends java.util.concurrent.locks.ReentrantReadWriteLock
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.cassandra.utils.concurrent.IntervalLock
super_class: java.util.concurrent.locks.ReentrantReadWriteLock
{
private final java.util.concurrent.atomic.AtomicLong lastAcquire;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.apache.cassandra.utils.TimeSource timeSource;
descriptor: Lorg/apache/cassandra/utils/TimeSource;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(org.apache.cassandra.utils.TimeSource);
descriptor: (Lorg/apache/cassandra/utils/TimeSource;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
putfield org.apache.cassandra.utils.concurrent.IntervalLock.lastAcquire:Ljava/util/concurrent/atomic/AtomicLong;
2: aload 0
aload 1
putfield org.apache.cassandra.utils.concurrent.IntervalLock.timeSource:Lorg/apache/cassandra/utils/TimeSource;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/cassandra/utils/concurrent/IntervalLock;
0 4 1 timeSource Lorg/apache/cassandra/utils/TimeSource;
MethodParameters:
Name Flags
timeSource
public boolean tryIntervalLock(long);
descriptor: (J)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.cassandra.utils.concurrent.IntervalLock.timeSource:Lorg/apache/cassandra/utils/TimeSource;
invokeinterface org.apache.cassandra.utils.TimeSource.currentTimeMillis:()J
lstore 3
start local 3 1: lload 3
aload 0
getfield org.apache.cassandra.utils.concurrent.IntervalLock.lastAcquire:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lsub
lload 1
lcmp
iflt 2
aload 0
invokevirtual org.apache.cassandra.utils.concurrent.IntervalLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.tryLock:()Z
ifeq 2
iconst_1
goto 3
StackMap locals: long
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: istore 5
start local 5 4: iload 5
ifeq 6
5: aload 0
getfield org.apache.cassandra.utils.concurrent.IntervalLock.lastAcquire:Ljava/util/concurrent/atomic/AtomicLong;
lload 3
invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
6: StackMap locals: int
StackMap stack:
iload 5
ireturn
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/cassandra/utils/concurrent/IntervalLock;
0 7 1 interval J
1 7 3 now J
4 7 5 acquired Z
MethodParameters:
Name Flags
interval
public void releaseIntervalLock();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.apache.cassandra.utils.concurrent.IntervalLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/cassandra/utils/concurrent/IntervalLock;
public long getLastIntervalAcquire();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.cassandra.utils.concurrent.IntervalLock.lastAcquire:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/cassandra/utils/concurrent/IntervalLock;
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.google.common.annotations.VisibleForTesting()
}
SourceFile: "IntervalLock.java"
InnerClasses:
public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock