public abstract class org.terracotta.offheapstore.AbstractOffHeapClockCache<K, V> extends org.terracotta.offheapstore.AbstractLockedOffHeapHashMap<K, V> implements org.terracotta.offheapstore.pinning.PinnableCache<K, V>, org.terracotta.offheapstore.pinning.PinnableSegment<K, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.terracotta.offheapstore.AbstractOffHeapClockCache
  super_class: org.terracotta.offheapstore.AbstractLockedOffHeapHashMap
{
  private static final org.slf4j.Logger LOGGER;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int PRESENT_CLOCK;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -2147483648

  private final java.util.Random rndm;
    descriptor: Ljava/util/Random;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int clockHand;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            ldc Lorg/terracotta/offheapstore/AbstractOffHeapClockCache;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.terracotta.offheapstore.AbstractOffHeapClockCache.LOGGER:Lorg/slf4j/Logger;
         1: .line 49
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.terracotta.offheapstore.paging.PageSource, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>);
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
         0: .line 56
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* storageEngine */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 57
            return
        end local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1         source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;)V
    MethodParameters:
               Name  Flags
      source         
      storageEngine  

  public void <init>(org.terracotta.offheapstore.paging.PageSource, boolean, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>);
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // boolean tableAllocationsSteal
        start local 3 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
         0: .line 60
            aload 0 /* this */
            aload 1 /* source */
            iload 2 /* tableAllocationsSteal */
            aload 3 /* storageEngine */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine;)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 61
            return
        end local 3 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 2 // boolean tableAllocationsSteal
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0                   this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1                 source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  tableAllocationsSteal  Z
            0    3     3          storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;)V
    MethodParameters:
                       Name  Flags
      source                 
      tableAllocationsSteal  
      storageEngine          

  public void <init>(org.terracotta.offheapstore.paging.PageSource, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>, );
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        start local 3 // boolean bootstrap
         0: .line 64
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* storageEngine */
            iload 3 /* bootstrap */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;Z)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 65
            return
        end local 3 // boolean bootstrap
        end local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1         source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
            0    3     3      bootstrap  Z
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;Z)V
    MethodParameters:
               Name  Flags
      source         
      storageEngine  
      bootstrap      

  public void <init>(org.terracotta.offheapstore.paging.PageSource, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>, );
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        start local 3 // int tableSize
         0: .line 68
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* storageEngine */
            iload 3 /* tableSize */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;I)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 69
            return
        end local 3 // int tableSize
        end local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1         source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
            0    3     3      tableSize  I
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;I)V
    MethodParameters:
               Name  Flags
      source         
      storageEngine  
      tableSize      

  public void <init>(org.terracotta.offheapstore.paging.PageSource, boolean, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>, );
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // boolean tableAllocationsSteal
        start local 3 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        start local 4 // int tableSize
         0: .line 72
            aload 0 /* this */
            aload 1 /* source */
            iload 2 /* tableAllocationsSteal */
            aload 3 /* storageEngine */
            iload 4 /* tableSize */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine;I)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 73
            return
        end local 4 // int tableSize
        end local 3 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 2 // boolean tableAllocationsSteal
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0                   this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1                 source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  tableAllocationsSteal  Z
            0    3     3          storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
            0    3     4              tableSize  I
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;ZLorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;I)V
    MethodParameters:
                       Name  Flags
      source                 
      tableAllocationsSteal  
      storageEngine          
      tableSize              

  public void <init>(org.terracotta.offheapstore.paging.PageSource, org.terracotta.offheapstore.storage.StorageEngine<? super K, ? super V>, int, );
    descriptor: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;IZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // org.terracotta.offheapstore.paging.PageSource source
        start local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        start local 3 // int tableSize
        start local 4 // boolean bootstrap
         0: .line 76
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* storageEngine */
            iload 3 /* tableSize */
            iload 4 /* bootstrap */
            invokespecial org.terracotta.offheapstore.AbstractLockedOffHeapHashMap.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine;IZ)V
         1: .line 51
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
         2: .line 77
            return
        end local 4 // boolean bootstrap
        end local 3 // int tableSize
        end local 2 // org.terracotta.offheapstore.storage.StorageEngine storageEngine
        end local 1 // org.terracotta.offheapstore.paging.PageSource source
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1         source  Lorg/terracotta/offheapstore/paging/PageSource;
            0    3     2  storageEngine  Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;
            0    3     3      tableSize  I
            0    3     4      bootstrap  Z
    Signature: (Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/storage/StorageEngine<-TK;-TV;>;IZ)V
    MethodParameters:
               Name  Flags
      source         
      storageEngine  
      tableSize      
      bootstrap      

  protected void storageEngineFailure(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.lang.Object failure
         0: .line 81
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.isEmpty:()Z
            ifeq 2
         1: .line 82
            new org.terracotta.offheapstore.exceptions.OversizeMappingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Storage Engine and Eviction Failed - Empty Map\nStorage Engine : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.storageEngine:Lorg/terracotta/offheapstore/storage/StorageEngine;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.terracotta.offheapstore.exceptions.OversizeMappingException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getEvictionIndex:()I
            istore 2 /* evictionIndex */
        start local 2 // int evictionIndex
         3: .line 85
            iload 2 /* evictionIndex */
            ifge 5
         4: .line 86
            new org.terracotta.offheapstore.exceptions.OversizeMappingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Storage Engine and Eviction Failed - Everything Pinned ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getSize:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " mappings) \n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Storage Engine : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.storageEngine:Lorg/terracotta/offheapstore/storage/StorageEngine;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.terracotta.offheapstore.exceptions.OversizeMappingException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 88
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* evictionIndex */
            iconst_0
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evict:(IZ)Z
            pop
        end local 2 // int evictionIndex
         6: .line 91
            return
        end local 1 // java.lang.Object failure
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    7     1        failure  Ljava/lang/Object;
            3    6     2  evictionIndex  I
    MethodParameters:
         Name  Flags
      failure  

  protected void tableExpansionFailure(int, int);
    descriptor: (II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // int start
        start local 2 // int length
         0: .line 95
            aload 0 /* this */
            iload 1 /* start */
            iload 2 /* length */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getEvictionIndex:(II)I
            istore 3 /* evictionIndex */
        start local 3 // int evictionIndex
         1: .line 96
            iload 3 /* evictionIndex */
            ifge 11
         2: .line 97
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.tryIncreaseReprobe:()Z
            ifeq 5
         3: .line 98
            getstatic org.terracotta.offheapstore.AbstractOffHeapClockCache.LOGGER:Lorg/slf4j/Logger;
            ldc "Increased reprobe to {} slots for a {} slot table in a last ditch attempt to avoid storage failure."
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getReprobeLength:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getTableCapacity:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 99
            goto 12
         5: .line 100
      StackMap locals: int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Table Expansion and Eviction Failed.\nCurrent Table Size (slots) : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getTableCapacity:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         6: .line 101
            ldc "Current Reprobe Length     : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getReprobeLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         7: .line 102
            ldc "Resize Will Require        : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getTableCapacity:()J
            ldc 4
            lmul
            ldc 4
            lmul
            ldc 2
            lmul
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "B\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 103
            ldc "Table Page Source          : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.tableSource:Lorg/terracotta/offheapstore/paging/PageSource;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         9: .line 100
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* msg */
        start local 4 // java.lang.String msg
        10: .line 104
            new org.terracotta.offheapstore.exceptions.OversizeMappingException
            dup
            aload 4 /* msg */
            invokespecial org.terracotta.offheapstore.exceptions.OversizeMappingException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String msg
        11: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* evictionIndex */
            iconst_0
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evict:(IZ)Z
            pop
        12: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int evictionIndex
        end local 2 // int length
        end local 1 // int start
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0   13     1          start  I
            0   13     2         length  I
            1   13     3  evictionIndex  I
           10   11     4            msg  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      start   
      length  

  protected void hit(java.nio.IntBuffer);
    descriptor: (Ljava/nio/IntBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.nio.IntBuffer entry
         0: .line 113
            aload 1 /* entry */
            iconst_0
            ldc -2147483648
            aload 1 /* entry */
            iconst_0
            invokevirtual java.nio.IntBuffer.get:(I)I
            ior
            invokevirtual java.nio.IntBuffer.put:(II)Ljava/nio/IntBuffer;
            pop
         1: .line 114
            return
        end local 1 // java.nio.IntBuffer entry
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    2     1  entry  Ljava/nio/IntBuffer;
    MethodParameters:
       Name  Flags
      entry  

  public int getEvictionIndex();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
         0: .line 129
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            invokevirtual java.nio.IntBuffer.capacity:()I
            if_icmplt 2
         1: .line 130
            aload 0 /* this */
            iconst_0
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
         2: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            istore 1 /* initialHand */
        start local 1 // int initialHand
         3: .line 134
            iconst_0
            istore 2 /* loops */
        start local 2 // int loops
         4: .line 136
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            iconst_4
            iadd
            dup_x1
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            iconst_0
            iadd
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            invokevirtual java.nio.IntBuffer.capacity:()I
            if_icmplt 6
         5: .line 137
            aload 0 /* this */
            iconst_0
            putfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
         6: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            iconst_0
            iadd
            invokevirtual java.nio.IntBuffer.get:(I)I
            istore 3 /* hand */
        start local 3 // int hand
         7: .line 142
            aload 0 /* this */
            iload 3 /* hand */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evictable:(I)Z
            ifeq 9
            iload 3 /* hand */
            ldc -2147483648
            iand
            ifne 9
         8: .line 143
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            ireturn
         9: .line 144
      StackMap locals: int
      StackMap stack:
            iload 3 /* hand */
            ldc -2147483648
            iand
            ldc -2147483648
            if_icmpne 11
        10: .line 145
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            iconst_0
            iadd
            iload 3 /* hand */
            ldc 2147483647
            iand
            invokevirtual java.nio.IntBuffer.put:(II)Ljava/nio/IntBuffer;
            pop
        11: .line 148
      StackMap locals:
      StackMap stack:
            iload 1 /* initialHand */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.clockHand:I
            if_icmpne 4
            iinc 2 /* loops */ 1
            iload 2 /* loops */
            iconst_2
            if_icmpne 4
        12: .line 149
            iconst_m1
            ireturn
        end local 3 // int hand
        end local 2 // int loops
        end local 1 // int initialHand
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            3   13     1  initialHand  I
            4   13     2        loops  I
            7   13     3         hand  I

  private int getEvictionIndex(int, int);
    descriptor: (II)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=11, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // int start
        start local 2 // int length
         0: .line 177
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getEvictionIndex:()I
            istore 3 /* index */
        start local 3 // int index
         1: .line 179
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            invokevirtual java.nio.IntBuffer.capacity:()I
            istore 4 /* tableLength */
        start local 4 // int tableLength
         2: .line 180
            iload 2 /* length */
            iconst_4
            imul
            istore 5 /* probeLength */
        start local 5 // int probeLength
         3: .line 182
            iload 5 /* probeLength */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            invokevirtual java.nio.IntBuffer.capacity:()I
            if_icmplt 5
         4: .line 183
            iload 3 /* index */
            ireturn
         5: .line 186
      StackMap locals: int int int
      StackMap stack:
            iload 1 /* start */
            iload 5 /* probeLength */
            iadd
            iload 4 /* tableLength */
            iconst_1
            isub
            iand
            istore 6 /* end */
        start local 6 // int end
         6: .line 188
            iload 3 /* index */
            ifge 8
         7: .line 189
            iload 3 /* index */
            ireturn
         8: .line 190
      StackMap locals: int
      StackMap stack:
            iload 6 /* end */
            iload 1 /* start */
            if_icmple 10
            iload 3 /* index */
            iload 1 /* start */
            if_icmplt 10
            iload 3 /* index */
            iload 6 /* end */
            if_icmpgt 10
         9: .line 191
            iload 3 /* index */
            ireturn
        10: .line 192
      StackMap locals:
      StackMap stack:
            iload 6 /* end */
            iload 1 /* start */
            if_icmpge 12
            iload 3 /* index */
            iload 1 /* start */
            if_icmpge 11
            iload 3 /* index */
            iload 6 /* end */
            if_icmpge 12
        11: .line 193
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            ireturn
        12: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* index */
            iconst_0
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evict:(IZ)Z
            pop
        13: .line 197
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        14: iload 1 /* start */
            istore 8 /* clock */
        start local 8 // int clock
        15: goto 22
        16: .line 198
      StackMap locals: int int
      StackMap stack:
            iinc 8 /* clock */ 4
            iload 8 /* clock */
            iload 4 /* tableLength */
            if_icmplt 18
        17: .line 199
            iload 1 /* start */
            istore 8 /* clock */
        18: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            iload 8 /* clock */
            iconst_0
            iadd
            invokevirtual java.nio.IntBuffer.get:(I)I
            istore 9 /* hand */
        start local 9 // int hand
        19: .line 204
            aload 0 /* this */
            iload 9 /* hand */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evictable:(I)Z
            ifeq 21
            iload 9 /* hand */
            ldc -2147483648
            iand
            ifne 21
        20: .line 205
            iload 8 /* clock */
            ireturn
        end local 9 // int hand
        21: .line 197
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 7 /* i */
            iload 2 /* length */
            if_icmplt 16
        end local 8 // int clock
        end local 7 // int i
        23: .line 209
            iconst_m1
            istore 7 /* lastEvictable */
        start local 7 // int lastEvictable
        24: .line 210
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        25: iload 1 /* start */
            istore 9 /* clock */
        start local 9 // int clock
        26: goto 33
        27: .line 211
      StackMap locals: int
      StackMap stack:
            iinc 9 /* clock */ 4
            iload 9 /* clock */
            iload 4 /* tableLength */
            if_icmplt 29
        28: .line 212
            iload 1 /* start */
            istore 9 /* clock */
        29: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            iload 9 /* clock */
            iconst_0
            iadd
            invokevirtual java.nio.IntBuffer.get:(I)I
            istore 10 /* hand */
        start local 10 // int hand
        30: .line 217
            aload 0 /* this */
            iload 10 /* hand */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evictable:(I)Z
            ifeq 32
        31: .line 218
            iload 9 /* clock */
            istore 7 /* lastEvictable */
        end local 10 // int hand
        32: .line 210
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        33: iload 8 /* i */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.rndm:Ljava/util/Random;
            iload 2 /* length */
            invokevirtual java.util.Random.nextInt:(I)I
            if_icmplt 27
            iload 7 /* lastEvictable */
            ifge 34
            iload 8 /* i */
            iload 2 /* length */
            if_icmplt 27
        end local 9 // int clock
        end local 8 // int i
        34: .line 221
      StackMap locals:
      StackMap stack:
            iload 7 /* lastEvictable */
            ireturn
        end local 7 // int lastEvictable
        end local 6 // int end
        end local 5 // int probeLength
        end local 4 // int tableLength
        end local 3 // int index
        end local 2 // int length
        end local 1 // int start
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   35     0           this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0   35     1          start  I
            0   35     2         length  I
            1   35     3          index  I
            2   35     4    tableLength  I
            3   35     5    probeLength  I
            6   35     6            end  I
           14   23     7              i  I
           15   23     8          clock  I
           19   21     9           hand  I
           24   35     7  lastEvictable  I
           25   34     8              i  I
           26   34     9          clock  I
           30   32    10           hand  I
    MethodParameters:
        Name  Flags
      start   
      length  

  protected boolean evictable(int);
    descriptor: (I)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // int status
         0: .line 226
            iload 1 /* status */
            iconst_1
            iand
            iconst_1
            if_icmpne 1
            iload 1 /* status */
            ldc 1073741824
            iand
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int status
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    2     1  status  I
    MethodParameters:
        Name  Flags
      status  

  public boolean evict(int, boolean);
    descriptor: (IZ)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // int index
        start local 2 // boolean shrink
         0: .line 231
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.writeLock:()Ljava/util/concurrent/locks/Lock;
            astore 3 /* l */
        start local 3 // java.util.concurrent.locks.Lock l
         1: .line 232
            aload 3 /* l */
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         2: .line 234
            aload 0 /* this */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.AbstractOffHeapClockCache.hashtable:Ljava/nio/IntBuffer;
            iload 1 /* index */
            iconst_0
            iadd
            invokevirtual java.nio.IntBuffer.get:(I)I
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.evictable:(I)Z
            ifeq 6
         3: .line 235
            aload 0 /* this */
            iload 1 /* index */
            iload 2 /* shrink */
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.removeAtTableOffset:(IZ)V
         4: .line 241
            aload 3 /* l */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         5: .line 236
            iconst_1
            ireturn
         6: .line 241
      StackMap locals: java.util.concurrent.locks.Lock
      StackMap stack:
            aload 3 /* l */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         7: .line 238
            iconst_0
            ireturn
         8: .line 240
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         9: .line 241
            aload 3 /* l */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        10: .line 242
            aload 4
            athrow
        end local 3 // java.util.concurrent.locks.Lock l
        end local 2 // boolean shrink
        end local 1 // int index
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0   11     1   index  I
            0   11     2  shrink  Z
            1   11     3       l  Ljava/util/concurrent/locks/Lock;
      Exception table:
        from    to  target  type
           2     4       8  any
    MethodParameters:
        Name  Flags
      index   
      shrink  

  public boolean isPinned(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.lang.Object key
         0: .line 247
            aload 0 /* this */
            aload 1 /* key */
            ldc 1073741824
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getMetadata:(Ljava/lang/Object;I)Ljava/lang/Integer;
            astore 2 /* metadata */
        start local 2 // java.lang.Integer metadata
         1: .line 248
            aload 2 /* metadata */
            ifnull 2
            aload 2 /* metadata */
            invokevirtual java.lang.Integer.intValue:()I
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.lang.Integer
      StackMap stack:
         2: iconst_0
            ireturn
        end local 2 // java.lang.Integer metadata
        end local 1 // java.lang.Object key
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    3     1       key  Ljava/lang/Object;
            1    3     2  metadata  Ljava/lang/Integer;
    MethodParameters:
      Name  Flags
      key   

  public void setPinning(K, );
    descriptor: (Ljava/lang/Object;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.lang.Object key
        start local 2 // boolean pinned
         0: .line 253
            iload 2 /* pinned */
            ifeq 3
         1: .line 254
            aload 0 /* this */
            aload 1 /* key */
            ldc 1073741824
            ldc 1073741824
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getAndSetMetadata:(Ljava/lang/Object;II)Ljava/lang/Integer;
            pop
         2: .line 255
            goto 4
         3: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            ldc 1073741824
            iconst_0
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getAndSetMetadata:(Ljava/lang/Object;II)Ljava/lang/Integer;
            pop
         4: .line 258
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean pinned
        end local 1 // java.lang.Object key
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    5     1     key  TK;
            0    5     2  pinned  Z
    Signature: (TK;Z)V
    MethodParameters:
        Name  Flags
      key     
      pinned  

  public V putPinned(K, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
         0: .line 262
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* value */
            ldc 1073741824
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.put:(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    1     1    key  TK;
            0    1     2  value  TV;
    Signature: (TK;TV;)TV;
    MethodParameters:
       Name  Flags
      key    
      value  

  public V getAndPin();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
        start local 1 // java.lang.Object key
         0: .line 267
            aload 0 /* this */
            aload 1 /* key */
            ldc 1073741824
            ldc 1073741824
            invokevirtual org.terracotta.offheapstore.AbstractOffHeapClockCache.getValueAndSetMetadata:(Ljava/lang/Object;II)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Object key
        end local 0 // org.terracotta.offheapstore.AbstractOffHeapClockCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/terracotta/offheapstore/AbstractOffHeapClockCache<TK;TV;>;
            0    1     1   key  TK;
    Signature: (TK;)TV;
    MethodParameters:
      Name  Flags
      key   
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Lorg/terracotta/offheapstore/AbstractLockedOffHeapHashMap<TK;TV;>;Lorg/terracotta/offheapstore/pinning/PinnableCache<TK;TV;>;Lorg/terracotta/offheapstore/pinning/PinnableSegment<TK;TV;>;
SourceFile: "AbstractOffHeapClockCache.java"