public class org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource implements org.terracotta.offheapstore.paging.PageSource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
  super_class: java.lang.Object
{
  public static final java.lang.String ALLOCATION_LOG_LOCATION;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final org.slf4j.Logger LOGGER;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final double PROGRESS_LOGGING_STEP_SIZE;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0.1

  private static final long PROGRESS_LOGGING_THRESHOLD;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Comparator<org.terracotta.offheapstore.paging.Page> REGION_COMPARATOR;
    descriptor: Ljava/util/Comparator;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Comparator<Lorg/terracotta/offheapstore/paging/Page;>;

  private final java.util.SortedMap<java.lang.Long, java.lang.Runnable> risingThresholds;
    descriptor: Ljava/util/SortedMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/SortedMap<Ljava/lang/Long;Ljava/lang/Runnable;>;

  private final java.util.SortedMap<java.lang.Long, java.lang.Runnable> fallingThresholds;
    descriptor: Ljava/util/SortedMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/SortedMap<Ljava/lang/Long;Ljava/lang/Runnable;>;

  private final java.util.List<org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator> sliceAllocators;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;>;

  private final java.util.List<org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator> victimAllocators;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;>;

  private final java.util.List<java.nio.ByteBuffer> buffers;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/nio/ByteBuffer;>;

  private final java.util.List<java.util.NavigableSet<org.terracotta.offheapstore.paging.Page>> victims;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/util/NavigableSet<Lorg/terracotta/offheapstore/paging/Page;>;>;

  private volatile int availableSet;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static volatile int[] $SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 64
            new java.lang.StringBuilder
            dup
            ldc Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".allocationDump"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.ALLOCATION_LOG_LOCATION:Ljava/lang/String;
         1: .line 66
            ldc Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
         2: .line 68
            getstatic org.terracotta.offheapstore.util.MemoryUnit.GIGABYTES:Lorg/terracotta/offheapstore/util/MemoryUnit;
            ldc 4
            invokevirtual org.terracotta.offheapstore.util.MemoryUnit.toBytes:(J)J
            putstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.PROGRESS_LOGGING_THRESHOLD:J
         3: .line 70
            invokedynamic compare()Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  org/terracotta/offheapstore/paging/UpfrontAllocatingPageSource.lambda$0(Lorg/terracotta/offheapstore/paging/Page;Lorg/terracotta/offheapstore/paging/Page;)I (6)
                  (Lorg/terracotta/offheapstore/paging/Page;Lorg/terracotta/offheapstore/paging/Page;)I
            putstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.REGION_COMPARATOR:Ljava/util/Comparator;
         4: .line 76
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.terracotta.offheapstore.buffersource.BufferSource, long, int);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;JI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        start local 2 // long toAllocate
        start local 4 // int chunkSize
         0: .line 106
            aload 0 /* this */
            aload 1 /* source */
            lload 2 /* toAllocate */
            iload 4 /* chunkSize */
            iconst_m1
            iconst_1
            invokespecial org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.<init>:(Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)V
         1: .line 107
            return
        end local 4 // int chunkSize
        end local 2 // long toAllocate
        end local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    2     1      source  Lorg/terracotta/offheapstore/buffersource/BufferSource;
            0    2     2  toAllocate  J
            0    2     4   chunkSize  I
    MethodParameters:
            Name  Flags
      source      
      toAllocate  
      chunkSize   

  public void <init>(org.terracotta.offheapstore.buffersource.BufferSource, long, int, int);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;JII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        start local 2 // long toAllocate
        start local 4 // int maxChunk
        start local 5 // int minChunk
         0: .line 119
            aload 0 /* this */
            aload 1 /* source */
            lload 2 /* toAllocate */
            iload 4 /* maxChunk */
            iload 5 /* minChunk */
            iconst_0
            invokespecial org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.<init>:(Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)V
         1: .line 120
            return
        end local 5 // int minChunk
        end local 4 // int maxChunk
        end local 2 // long toAllocate
        end local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    2     1      source  Lorg/terracotta/offheapstore/buffersource/BufferSource;
            0    2     2  toAllocate  J
            0    2     4    maxChunk  I
            0    2     5    minChunk  I
    MethodParameters:
            Name  Flags
      source      
      toAllocate  
      maxChunk    
      minChunk    

  private void <init>(org.terracotta.offheapstore.buffersource.BufferSource, long, int, int, boolean);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=6
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        start local 2 // long toAllocate
        start local 4 // int maxChunk
        start local 5 // int minChunk
        start local 6 // boolean fixed
         0: .line 136
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            new java.util.TreeMap
            dup
            invokespecial java.util.TreeMap.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.risingThresholds:Ljava/util/SortedMap;
         2: .line 79
            aload 0 /* this */
            new java.util.TreeMap
            dup
            invokespecial java.util.TreeMap.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fallingThresholds:Ljava/util/SortedMap;
         3: .line 81
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
         4: .line 82
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
         5: .line 84
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
         6: .line 93
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
         7: .line 95
            aload 0 /* this */
            iconst_m1
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.availableSet:I
         8: .line 137
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.totalPhysicalMemory:()Ljava/lang/Long;
            astore 7 /* totalPhysical */
        start local 7 // java.lang.Long totalPhysical
         9: .line 138
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.freePhysicalMemory:()Ljava/lang/Long;
            astore 8 /* freePhysical */
        start local 8 // java.lang.Long freePhysical
        10: .line 139
            aload 7 /* totalPhysical */
            ifnull 14
            lload 2 /* toAllocate */
            aload 7 /* totalPhysical */
            invokevirtual java.lang.Long.longValue:()J
            lcmp
            ifle 14
        11: .line 140
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Attempting to allocate "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 2 /* toAllocate */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "B of memory "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 141
            ldc "when the host only contains "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* totalPhysical */
            invokevirtual java.lang.Long.longValue:()J
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "B of physical memory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 140
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 143
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource org.terracotta.offheapstore.buffersource.BufferSource long int int int java.lang.Long java.lang.Long
      StackMap stack:
            aload 8 /* freePhysical */
            ifnull 18
            lload 2 /* toAllocate */
            aload 8 /* freePhysical */
            invokevirtual java.lang.Long.longValue:()J
            lcmp
            ifle 18
        15: .line 144
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Attempting to allocate {}B of offheap when there is only {}B of free physical memory - some paging will therefore occur."
        16: .line 145
            lload 2 /* toAllocate */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aload 8 /* freePhysical */
            invokevirtual java.lang.Long.longValue:()J
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
        17: .line 144
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        18: .line 148
      StackMap locals:
      StackMap stack:
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isInfoEnabled:()Z
            ifeq 20
        19: .line 149
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Allocating {}B in chunks"
            lload 2 /* toAllocate */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
        20: .line 152
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            lload 2 /* toAllocate */
            iload 4 /* maxChunk */
            iload 5 /* minChunk */
            iload 6 /* fixed */
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateBackingBuffers:(Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 10
            goto 26
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource org.terracotta.offheapstore.buffersource.BufferSource long int int int java.lang.Long java.lang.Long top java.util.Iterator
      StackMap stack:
        21: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 9 /* buffer */
        start local 9 // java.nio.ByteBuffer buffer
        22: .line 153
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            new org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            dup
            aload 9 /* buffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            invokespecial org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.<init>:(I)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        23: .line 154
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            new org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            dup
            aload 9 /* buffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            invokespecial org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.<init>:(I)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        24: .line 155
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            new java.util.TreeSet
            dup
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.REGION_COMPARATOR:Ljava/util/Comparator;
            invokespecial java.util.TreeSet.<init>:(Ljava/util/Comparator;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        25: .line 156
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
            aload 9 /* buffer */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.nio.ByteBuffer buffer
        26: .line 152
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        27: .line 158
            return
        end local 8 // java.lang.Long freePhysical
        end local 7 // java.lang.Long totalPhysical
        end local 6 // boolean fixed
        end local 5 // int minChunk
        end local 4 // int maxChunk
        end local 2 // long toAllocate
        end local 1 // org.terracotta.offheapstore.buffersource.BufferSource source
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   28     0           this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0   28     1         source  Lorg/terracotta/offheapstore/buffersource/BufferSource;
            0   28     2     toAllocate  J
            0   28     4       maxChunk  I
            0   28     5       minChunk  I
            0   28     6          fixed  Z
            9   28     7  totalPhysical  Ljava/lang/Long;
           10   28     8   freePhysical  Ljava/lang/Long;
           22   26     9         buffer  Ljava/nio/ByteBuffer;
    MethodParameters:
            Name  Flags
      source      
      toAllocate  
      maxChunk    
      minChunk    
      fixed       

  public long getCapacity();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
         0: .line 166
            lconst_0
            lstore 1 /* capacity */
        start local 1 // long capacity
         1: .line 167
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 3 /* buffer */
        start local 3 // java.nio.ByteBuffer buffer
         3: .line 168
            lload 1 /* capacity */
            aload 3 /* buffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            i2l
            ladd
            lstore 1 /* capacity */
        end local 3 // java.nio.ByteBuffer buffer
         4: .line 167
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 170
            lload 1 /* capacity */
            lreturn
        end local 1 // long capacity
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            1    6     1  capacity  J
            3    4     3    buffer  Ljava/nio/ByteBuffer;

  public org.terracotta.offheapstore.paging.Page allocate(int, boolean, boolean, org.terracotta.offheapstore.paging.OffHeapStorageArea);
    descriptor: (IZZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int size
        start local 2 // boolean thief
        start local 3 // boolean victim
        start local 4 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
         0: .line 184
            iload 2 /* thief */
            ifeq 2
         1: .line 185
            aload 0 /* this */
            iload 1 /* size */
            iload 3 /* victim */
            aload 4 /* owner */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateAsThief:(IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
            areturn
         2: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* size */
            iload 3 /* victim */
            aload 4 /* owner */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateFromFree:(IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
            areturn
        end local 4 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
        end local 3 // boolean victim
        end local 2 // boolean thief
        end local 1 // int size
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    3     1    size  I
            0    3     2   thief  Z
            0    3     3  victim  Z
            0    3     4   owner  Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
    MethodParameters:
        Name  Flags
      size    
      thief   
      victim  
      owner   

  private org.terracotta.offheapstore.paging.Page allocateAsThief(int, boolean, org.terracotta.offheapstore.paging.OffHeapStorageArea);
    descriptor: (IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=17, args_size=4
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int size
        start local 2 // boolean victim
        start local 3 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
         0: .line 192
            aload 0 /* this */
            iload 1 /* size */
            iload 2 /* victim */
            aload 3 /* owner */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateFromFree:(IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
            astore 4 /* free */
        start local 4 // org.terracotta.offheapstore.paging.Page free
         1: .line 194
            aload 4 /* free */
            ifnull 3
         2: .line 195
            aload 4 /* free */
            areturn
         3: .line 199
      StackMap locals: org.terracotta.offheapstore.paging.Page
      StackMap stack:
            aconst_null
            astore 5 /* victimAllocator */
        start local 5 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator victimAllocator
         4: .line 200
            aconst_null
            astore 6 /* sliceAllocator */
        start local 6 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator sliceAllocator
         5: .line 201
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            astore 7 /* targets */
        start local 7 // java.util.List targets
         6: .line 202
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 8 /* tempHolds */
        start local 8 // java.util.Collection tempHolds
         7: .line 203
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            astore 9 /* releases */
        start local 9 // java.util.Map releases
         8: .line 205
            aload 0 /* this */
            dup
            astore 10
            monitorenter
         9: .line 206
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        10: goto 36
        11: .line 207
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            iload 11 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            iload 1 /* size */
            iload 2 /* victim */
            ifeq 12
            getstatic org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing.CEILING:Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;
            goto 13
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack: org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator int
        12: getstatic org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing.FLOOR:Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack: org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator int org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing
        13: invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.find:(ILorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;)I
            istore 12 /* address */
        start local 12 // int address
        14: .line 208
            iload 12 /* address */
            iflt 35
        15: .line 209
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            iload 11 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            astore 5 /* victimAllocator */
        16: .line 210
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            iload 11 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            astore 6 /* sliceAllocator */
        17: .line 211
            aload 0 /* this */
            iload 11 /* i */
            iload 12 /* address */
            iload 1 /* size */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.findVictimPages:(III)Ljava/util/List;
            astore 7 /* targets */
        18: .line 214
            iload 12 /* address */
            istore 13 /* claimAddress */
        start local 13 // int claimAddress
        19: .line 215
            aload 7 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 15
            goto 28
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int int top java.util.Iterator
      StackMap stack:
        20: aload 15
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 14 /* p */
        start local 14 // org.terracotta.offheapstore.paging.Page p
        21: .line 216
            aload 5 /* victimAllocator */
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        22: .line 217
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            iload 13 /* claimAddress */
            isub
            istore 16 /* claimSize */
        start local 16 // int claimSize
        23: .line 218
            iload 16 /* claimSize */
            ifle 27
        24: .line 219
            aload 8 /* tempHolds */
            new org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion
            dup
            iload 13 /* claimAddress */
            iload 16 /* claimSize */
            invokespecial org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.<init>:(II)V
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        25: .line 220
            aload 6 /* sliceAllocator */
            iload 13 /* claimAddress */
            iload 16 /* claimSize */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        26: .line 221
            aload 5 /* victimAllocator */
            iload 13 /* claimAddress */
            iload 16 /* claimSize */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        27: .line 223
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int int org.terracotta.offheapstore.paging.Page java.util.Iterator int
      StackMap stack:
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            iadd
            istore 13 /* claimAddress */
        end local 16 // int claimSize
        end local 14 // org.terracotta.offheapstore.paging.Page p
        28: .line 215
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int int top java.util.Iterator
      StackMap stack:
            aload 15
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        29: .line 225
            iload 12 /* address */
            iload 1 /* size */
            iadd
            iload 13 /* claimAddress */
            isub
            istore 14 /* claimSize */
        start local 14 // int claimSize
        30: .line 226
            iload 14 /* claimSize */
            ifle 37
        31: .line 227
            aload 8 /* tempHolds */
            new org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion
            dup
            iload 13 /* claimAddress */
            iload 14 /* claimSize */
            invokespecial org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.<init>:(II)V
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        32: .line 228
            aload 6 /* sliceAllocator */
            iload 13 /* claimAddress */
            iload 14 /* claimSize */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        33: .line 229
            aload 5 /* victimAllocator */
            iload 13 /* claimAddress */
            iload 14 /* claimSize */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        34: .line 231
            goto 37
        end local 14 // int claimSize
        end local 13 // int claimAddress
        end local 12 // int address
        35: .line 206
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack:
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 11 /* i */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 11
        end local 11 // int i
        37: .line 235
      StackMap locals:
      StackMap stack:
            aload 7 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12
            goto 47
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
        38: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 11 /* p */
        start local 11 // org.terracotta.offheapstore.paging.Page p
        39: .line 236
            aload 11 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.binding:()Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
            astore 13 /* a */
        start local 13 // org.terracotta.offheapstore.paging.OffHeapStorageArea a
        40: .line 237
            aload 9 /* releases */
            aload 13 /* a */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            astore 14 /* c */
        start local 14 // java.util.Collection c
        41: .line 238
            aload 14 /* c */
            ifnonnull 46
        42: .line 239
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 14 /* c */
        43: .line 240
            aload 14 /* c */
            aload 11 /* p */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        44: .line 241
            aload 9 /* releases */
            aload 13 /* a */
            aload 14 /* c */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        45: .line 242
            goto 47
        46: .line 243
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource org.terracotta.offheapstore.paging.Page java.util.Iterator org.terracotta.offheapstore.paging.OffHeapStorageArea java.util.Collection
      StackMap stack:
            aload 14 /* c */
            aload 11 /* p */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 14 // java.util.Collection c
        end local 13 // org.terracotta.offheapstore.paging.OffHeapStorageArea a
        end local 11 // org.terracotta.offheapstore.paging.Page p
        47: .line 235
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 38
        48: .line 205
            aload 10
            monitorexit
        49: goto 52
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack: java.lang.Throwable
        50: aload 10
            monitorexit
        51: athrow
        52: .line 252
      StackMap locals:
      StackMap stack:
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 10 /* results */
        start local 10 // java.util.Collection results
        53: .line 253
            aload 9 /* releases */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 12
            goto 58
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection top java.util.Iterator
      StackMap stack:
        54: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 11 /* e */
        start local 11 // java.util.Map$Entry e
        55: .line 254
            aload 11 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.OffHeapStorageArea
            astore 13 /* a */
        start local 13 // org.terracotta.offheapstore.paging.OffHeapStorageArea a
        56: .line 255
            aload 11 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.Collection
            astore 14 /* p */
        start local 14 // java.util.Collection p
        57: .line 256
            aload 10 /* results */
            aload 13 /* a */
            aload 14 /* p */
            invokevirtual org.terracotta.offheapstore.paging.OffHeapStorageArea.release:(Ljava/util/Collection;)Ljava/util/Collection;
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        end local 14 // java.util.Collection p
        end local 13 // org.terracotta.offheapstore.paging.OffHeapStorageArea a
        end local 11 // java.util.Map$Entry e
        58: .line 253
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 54
        59: .line 259
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 11 /* failedReleases */
        start local 11 // java.util.List failedReleases
        60: .line 260
            aload 0 /* this */
            dup
            astore 12
            monitorenter
        61: .line 261
            aload 8 /* tempHolds */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 14
            goto 65
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
        62: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion
            astore 13 /* r */
        start local 13 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion r
        63: .line 262
            aload 6 /* sliceAllocator */
            aload 13 /* r */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.address:I
            aload 13 /* r */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.size:I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        64: .line 263
            aload 5 /* victimAllocator */
            aload 13 /* r */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.address:I
            aload 13 /* r */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion.size:I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        end local 13 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion r
        65: .line 261
      StackMap locals:
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 62
        66: .line 266
            aload 10 /* results */
            invokeinterface java.util.Collection.size:()I
            aload 7 /* targets */
            invokeinterface java.util.List.size:()I
            if_icmpne 74
        67: .line 267
            aload 7 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 14
            goto 71
      StackMap locals:
      StackMap stack:
        68: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 13 /* p */
        start local 13 // org.terracotta.offheapstore.paging.Page p
        69: .line 268
            aload 5 /* victimAllocator */
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        70: .line 269
            aload 0 /* this */
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.free:(Lorg/terracotta/offheapstore/paging/Page;)V
        end local 13 // org.terracotta.offheapstore.paging.Page p
        71: .line 267
      StackMap locals:
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 68
        72: .line 271
            aload 0 /* this */
            iload 1 /* size */
            iload 2 /* victim */
            aload 3 /* owner */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateFromFree:(IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
            aload 12
            monitorexit
        73: areturn
        74: .line 273
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack:
            aload 7 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 14
            goto 81
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
        75: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 13 /* p */
        start local 13 // org.terracotta.offheapstore.paging.Page p
        76: .line 274
            aload 10 /* results */
            aload 13 /* p */
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 80
        77: .line 275
            aload 5 /* victimAllocator */
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        78: .line 276
            aload 0 /* this */
            aload 13 /* p */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.free:(Lorg/terracotta/offheapstore/paging/Page;)V
        79: .line 277
            goto 81
        80: .line 278
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource org.terracotta.offheapstore.paging.Page java.util.Iterator
      StackMap stack:
            aload 11 /* failedReleases */
            aload 13 /* p */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 13 // org.terracotta.offheapstore.paging.Page p
        81: .line 273
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 75
        82: .line 260
            aload 12
            monitorexit
        83: goto 86
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack: java.lang.Throwable
        84: aload 12
            monitorexit
        85: athrow
        86: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* size */
            iload 2 /* victim */
            aload 3 /* owner */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.allocateAsThief:(IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
            astore 13
        87: .line 287
            aload 0 /* this */
            dup
            astore 14
            monitorenter
        88: .line 288
            aload 11 /* failedReleases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 16
            goto 92
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List top org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
        89: aload 16
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 15 /* p */
        start local 15 // org.terracotta.offheapstore.paging.Page p
        90: .line 290
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.NavigableSet
            aload 15 /* p */
            invokeinterface java.util.NavigableSet.floor:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 15 /* p */
            if_acmpne 92
        91: .line 291
            aload 5 /* victimAllocator */
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        end local 15 // org.terracotta.offheapstore.paging.Page p
        92: .line 288
      StackMap locals:
      StackMap stack:
            aload 16
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 89
        93: .line 287
            aload 14
            monitorexit
        94: goto 97
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List top org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack: java.lang.Throwable
        95: aload 14
            monitorexit
        96: athrow
        97: .line 285
      StackMap locals:
      StackMap stack:
            aload 13
            areturn
        98: .line 286
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List
      StackMap stack: java.lang.Throwable
            astore 12
        99: .line 287
            aload 0 /* this */
            dup
            astore 14
            monitorenter
       100: .line 288
            aload 11 /* failedReleases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 16
            goto 104
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List java.lang.Throwable top org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource top java.util.Iterator
      StackMap stack:
       101: aload 16
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.paging.Page
            astore 15 /* p */
        start local 15 // org.terracotta.offheapstore.paging.Page p
       102: .line 290
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.NavigableSet
            aload 15 /* p */
            invokeinterface java.util.NavigableSet.floor:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 15 /* p */
            if_acmpne 104
       103: .line 291
            aload 5 /* victimAllocator */
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 15 /* p */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
        end local 15 // org.terracotta.offheapstore.paging.Page p
       104: .line 288
      StackMap locals:
      StackMap stack:
            aload 16
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 101
       105: .line 287
            aload 14
            monitorexit
       106: goto 109
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List java.lang.Throwable top org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack: java.lang.Throwable
       107: aload 14
            monitorexit
       108: athrow
       109: .line 295
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.Page org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator java.util.List java.util.Collection java.util.Map java.util.Collection java.util.List java.lang.Throwable
      StackMap stack:
            aload 12
            athrow
        end local 11 // java.util.List failedReleases
        end local 10 // java.util.Collection results
        end local 9 // java.util.Map releases
        end local 8 // java.util.Collection tempHolds
        end local 7 // java.util.List targets
        end local 6 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator sliceAllocator
        end local 5 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator victimAllocator
        end local 4 // org.terracotta.offheapstore.paging.Page free
        end local 3 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
        end local 2 // boolean victim
        end local 1 // int size
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0  110     0             this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0  110     1             size  I
            0  110     2           victim  Z
            0  110     3            owner  Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
            1  110     4             free  Lorg/terracotta/offheapstore/paging/Page;
            4  110     5  victimAllocator  Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;
            5  110     6   sliceAllocator  Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;
            6  110     7          targets  Ljava/util/List<Lorg/terracotta/offheapstore/paging/Page;>;
            7  110     8        tempHolds  Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$AllocatedRegion;>;
            8  110     9         releases  Ljava/util/Map<Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/Page;>;>;
           10   37    11                i  I
           14   35    12          address  I
           19   35    13     claimAddress  I
           21   28    14                p  Lorg/terracotta/offheapstore/paging/Page;
           23   28    16        claimSize  I
           30   35    14        claimSize  I
           39   47    11                p  Lorg/terracotta/offheapstore/paging/Page;
           40   47    13                a  Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
           41   47    14                c  Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/Page;>;
           53  110    10          results  Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/Page;>;
           55   58    11                e  Ljava/util/Map$Entry<Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/Page;>;>;
           56   58    13                a  Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
           57   58    14                p  Ljava/util/Collection<Lorg/terracotta/offheapstore/paging/Page;>;
           60  110    11   failedReleases  Ljava/util/List<Lorg/terracotta/offheapstore/paging/Page;>;
           63   65    13                r  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$AllocatedRegion;
           69   71    13                p  Lorg/terracotta/offheapstore/paging/Page;
           76   81    13                p  Lorg/terracotta/offheapstore/paging/Page;
           90   92    15                p  Lorg/terracotta/offheapstore/paging/Page;
          102  104    15                p  Lorg/terracotta/offheapstore/paging/Page;
      Exception table:
        from    to  target  type
           9    49      50  any
          50    51      50  any
          61    73      84  any
          74    83      84  any
          84    85      84  any
          88    94      95  any
          95    96      95  any
          86    87      98  any
         100   106     107  any
         107   108     107  any
    MethodParameters:
        Name  Flags
      size    final
      victim  
      owner   

  private java.util.List<org.terracotta.offheapstore.paging.Page> findVictimPages(int, int, int);
    descriptor: (III)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=4, args_size=4
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int chunk
        start local 2 // int address
        start local 3 // int size
         0: .line 299
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            iload 1 /* chunk */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.NavigableSet
            new org.terracotta.offheapstore.paging.Page
            dup
            aconst_null
            iconst_m1
            iload 2 /* address */
            aconst_null
            invokespecial org.terracotta.offheapstore.paging.Page.<init>:(Ljava/nio/ByteBuffer;IILorg/terracotta/offheapstore/paging/OffHeapStorageArea;)V
         1: .line 300
            new org.terracotta.offheapstore.paging.Page
            dup
            aconst_null
            iconst_m1
            iload 2 /* address */
            iload 3 /* size */
            iadd
            aconst_null
            invokespecial org.terracotta.offheapstore.paging.Page.<init>:(Ljava/nio/ByteBuffer;IILorg/terracotta/offheapstore/paging/OffHeapStorageArea;)V
         2: .line 299
            invokeinterface java.util.NavigableSet.subSet:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedSet;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            areturn
        end local 3 // int size
        end local 2 // int address
        end local 1 // int chunk
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    3     1    chunk  I
            0    3     2  address  I
            0    3     3     size  I
    Signature: (III)Ljava/util/List<Lorg/terracotta/offheapstore/paging/Page;>;
    MethodParameters:
         Name  Flags
      chunk    
      address  
      size     

  private org.terracotta.offheapstore.paging.Page allocateFromFree(int, boolean, org.terracotta.offheapstore.paging.OffHeapStorageArea);
    descriptor: (IZLorg/terracotta/offheapstore/paging/OffHeapStorageArea;)Lorg/terracotta/offheapstore/paging/Page;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=11, args_size=4
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int size
        start local 2 // boolean victim
        start local 3 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
         0: .line 304
            iload 1 /* size */
            invokestatic java.lang.Integer.bitCount:(I)I
            iconst_1
            if_icmpeq 4
         1: .line 305
            iload 1 /* size */
            invokestatic java.lang.Integer.highestOneBit:(I)I
            iconst_1
            ishl
            istore 4 /* rounded */
        start local 4 // int rounded
         2: .line 306
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Request to allocate {}B will allocate {}B"
            iload 1 /* size */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iload 4 /* rounded */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 307
            iload 4 /* rounded */
            istore 1 /* size */
        end local 4 // int rounded
         4: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* size */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.isUnavailable:(I)Z
            ifeq 6
         5: .line 311
            aconst_null
            areturn
         6: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         7: .line 315
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 27
         9: .line 316
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            iload 1 /* size */
            iload 2 /* victim */
            ifeq 10
            getstatic org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing.CEILING:Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;
            goto 11
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack: org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator int
        10: getstatic org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing.FLOOR:Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int
      StackMap stack: org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator int org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing
        11: invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.allocate:(ILorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator$Packing;)I
            istore 6 /* address */
        start local 6 // int address
        12: .line 317
            iload 6 /* address */
            iflt 26
        13: .line 318
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 15
        14: .line 319
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Allocating a {}B buffer from chunk {} &{}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            iload 1 /* size */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aastore
            dup
            iconst_1
            iload 5 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 6 /* address */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 321
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            iload 6 /* address */
            iload 1 /* size */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            iload 6 /* address */
            invokevirtual java.nio.Buffer.position:(I)Ljava/nio/Buffer;
            checkcast java.nio.ByteBuffer
            invokevirtual java.nio.ByteBuffer.slice:()Ljava/nio/ByteBuffer;
            astore 7 /* b */
        start local 7 // java.nio.ByteBuffer b
        16: .line 322
            new org.terracotta.offheapstore.paging.Page
            dup
            aload 7 /* b */
            iload 5 /* i */
            iload 6 /* address */
            aload 3 /* owner */
            invokespecial org.terracotta.offheapstore.paging.Page.<init>:(Ljava/nio/ByteBuffer;IILorg/terracotta/offheapstore/paging/OffHeapStorageArea;)V
            astore 8 /* p */
        start local 8 // org.terracotta.offheapstore.paging.Page p
        17: .line 323
            iload 2 /* victim */
            ifeq 20
        18: .line 324
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.NavigableSet
            aload 8 /* p */
            invokeinterface java.util.NavigableSet.add:(Ljava/lang/Object;)Z
            pop
        19: .line 325
            goto 21
        20: .line 326
      StackMap locals: java.nio.ByteBuffer org.terracotta.offheapstore.paging.Page
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            iload 6 /* address */
            iload 1 /* size */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.claim:(II)V
        21: .line 328
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.risingThresholds:Ljava/util/SortedMap;
            invokeinterface java.util.SortedMap.isEmpty:()Z
            ifne 24
        22: .line 329
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.getAllocatedSize:()J
            lstore 9 /* allocated */
        start local 9 // long allocated
        23: .line 330
            aload 0 /* this */
            lload 9 /* allocated */
            iload 1 /* size */
            i2l
            lsub
            lload 9 /* allocated */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fireThresholds:(JJ)V
        end local 9 // long allocated
        24: .line 332
      StackMap locals:
      StackMap stack:
            aload 8 /* p */
            aload 4
            monitorexit
        25: areturn
        end local 8 // org.terracotta.offheapstore.paging.Page p
        end local 7 // java.nio.ByteBuffer b
        end local 6 // int address
        26: .line 315
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 5 /* i */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 9
        end local 5 // int i
        28: .line 335
            aload 0 /* this */
            iload 1 /* size */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.markUnavailable:(I)V
        29: .line 336
            aload 4
            monitorexit
        30: aconst_null
            areturn
        31: .line 314
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource int int org.terracotta.offheapstore.paging.OffHeapStorageArea org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        32: athrow
        end local 3 // org.terracotta.offheapstore.paging.OffHeapStorageArea owner
        end local 2 // boolean victim
        end local 1 // int size
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   33     0       this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0   33     1       size  I
            0   33     2     victim  Z
            0   33     3      owner  Lorg/terracotta/offheapstore/paging/OffHeapStorageArea;
            2    4     4    rounded  I
            8   28     5          i  I
           12   26     6    address  I
           16   26     7          b  Ljava/nio/ByteBuffer;
           17   26     8          p  Lorg/terracotta/offheapstore/paging/Page;
           23   24     9  allocated  J
      Exception table:
        from    to  target  type
           7    25      31  any
          26    30      31  any
          31    32      31  any
    MethodParameters:
        Name  Flags
      size    
      victim  
      owner   

  public synchronized void free(org.terracotta.offheapstore.paging.Page);
    descriptor: (Lorg/terracotta/offheapstore/paging/Page;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.paging.Page page
         0: .line 348
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.isFreeable:()Z
            ifeq 10
         1: .line 349
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 3
         2: .line 350
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Freeing a {}B buffer from chunk {} &{}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.markAllAvailable:()V
         4: .line 353
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.free:(II)V
         5: .line 354
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victims:Ljava/util/List;
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.util.NavigableSet
            aload 1 /* page */
            invokeinterface java.util.NavigableSet.remove:(Ljava/lang/Object;)Z
            pop
         6: .line 355
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.index:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.tryFree:(II)V
         7: .line 356
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fallingThresholds:Ljava/util/SortedMap;
            invokeinterface java.util.SortedMap.isEmpty:()Z
            ifne 10
         8: .line 357
            aload 0 /* this */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.getAllocatedSize:()J
            lstore 2 /* allocated */
        start local 2 // long allocated
         9: .line 358
            aload 0 /* this */
            lload 2 /* allocated */
            aload 1 /* page */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            i2l
            ladd
            lload 2 /* allocated */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fireThresholds:(JJ)V
        end local 2 // long allocated
        10: .line 361
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.terracotta.offheapstore.paging.Page page
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0   11     1       page  Lorg/terracotta/offheapstore/paging/Page;
            9   10     2  allocated  J
    MethodParameters:
      Name  Flags
      page  

  public synchronized long getAllocatedSize();
    descriptor: ()J
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
         0: .line 364
            lconst_0
            lstore 1 /* sum */
        start local 1 // long sum
         1: .line 365
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            astore 3 /* a */
        start local 3 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator a
         3: .line 366
            lload 1 /* sum */
            aload 3 /* a */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.occupied:()I
            i2l
            ladd
            lstore 1 /* sum */
        end local 3 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator a
         4: .line 365
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 368
            lload 1 /* sum */
            lreturn
        end local 1 // long sum
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            1    6     1   sum  J
            3    4     3     a  Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;

  public long getAllocatedSizeUnSync();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
         0: .line 372
            lconst_0
            lstore 1 /* sum */
        start local 1 // long sum
         1: .line 373
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator
            astore 3 /* a */
        start local 3 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator a
         3: .line 374
            lload 1 /* sum */
            aload 3 /* a */
            invokevirtual org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator.occupied:()I
            i2l
            ladd
            lstore 1 /* sum */
        end local 3 // org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator a
         4: .line 373
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 376
            lload 1 /* sum */
            lreturn
        end local 1 // long sum
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            1    6     1   sum  J
            3    4     3     a  Lorg/terracotta/offheapstore/storage/allocator/PowerOfTwoAllocator;

  private boolean isUnavailable(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int size
         0: .line 380
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.availableSet:I
            iload 1 /* size */
            iand
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int size
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    2     1  size  I
    MethodParameters:
      Name  Flags
      size  

  private synchronized void markAllAvailable();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
         0: .line 384
            aload 0 /* this */
            iconst_m1
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.availableSet:I
         1: .line 385
            return
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;

  private synchronized void markUnavailable(int);
    descriptor: (I)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // int size
         0: .line 388
            aload 0 /* this */
            dup
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.availableSet:I
            iload 1 /* size */
            iconst_m1
            ixor
            iand
            putfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.availableSet:I
         1: .line 389
            return
        end local 1 // int size
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    2     1  size  I
    MethodParameters:
      Name  Flags
      size  

  public synchronized java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
         0: .line 393
            new java.lang.StringBuilder
            dup
            ldc "UpfrontAllocatingPageSource"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 394
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 8
         3: .line 395
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 1 /* sb */
            ldc "\nChunk "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         4: .line 396
            aload 1 /* sb */
            ldc "Size             : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            invokevirtual java.nio.ByteBuffer.capacity:()I
            i2l
            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;
            pop
         5: .line 397
            aload 1 /* sb */
            ldc "Free Allocator   : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.sliceAllocators:Ljava/util/List;
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 398
            aload 1 /* sb */
            ldc "Victim Allocator : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.victimAllocators:Ljava/util/List;
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         7: .line 394
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.buffers:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 3
        end local 2 // int i
         9: .line 400
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            1   10     1    sb  Ljava/lang/StringBuilder;
            2    9     2     i  I

  private synchronized void fireThresholds(long, long);
    descriptor: (JJ)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // long incoming
        start local 3 // long outgoing
         0: .line 406
            lload 3 /* outgoing */
            lload 1 /* incoming */
            lcmp
            ifle 3
         1: .line 407
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.risingThresholds:Ljava/util/SortedMap;
            lload 1 /* incoming */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            lload 3 /* outgoing */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.SortedMap.subMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;
            invokeinterface java.util.SortedMap.values:()Ljava/util/Collection;
            astore 5 /* thresholds */
        start local 5 // java.util.Collection thresholds
         2: .line 408
            goto 7
        end local 5 // java.util.Collection thresholds
      StackMap locals:
      StackMap stack:
         3: lload 3 /* outgoing */
            lload 1 /* incoming */
            lcmp
            ifge 6
         4: .line 409
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fallingThresholds:Ljava/util/SortedMap;
            lload 3 /* outgoing */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            lload 1 /* incoming */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.SortedMap.subMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;
            invokeinterface java.util.SortedMap.values:()Ljava/util/Collection;
            astore 5 /* thresholds */
        start local 5 // java.util.Collection thresholds
         5: .line 410
            goto 7
        end local 5 // java.util.Collection thresholds
         6: .line 411
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            astore 5 /* thresholds */
        start local 5 // java.util.Collection thresholds
         7: .line 414
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 5 /* thresholds */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 13
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long long java.util.Collection top java.util.Iterator
      StackMap stack:
         8: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 6 /* r */
        start local 6 // java.lang.Runnable r
         9: .line 416
            aload 6 /* r */
            invokeinterface java.lang.Runnable.run:()V
        10: .line 417
            goto 13
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long long java.util.Collection java.lang.Runnable java.util.Iterator
      StackMap stack: java.lang.Throwable
        11: astore 8 /* t */
        start local 8 // java.lang.Throwable t
        12: .line 418
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Throwable thrown by threshold action"
            aload 8 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 8 // java.lang.Throwable t
        end local 6 // java.lang.Runnable r
        13: .line 414
      StackMap locals: org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource long long java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        14: .line 421
            return
        end local 5 // java.util.Collection thresholds
        end local 3 // long outgoing
        end local 1 // long incoming
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0   15     1    incoming  J
            0   15     3    outgoing  J
            2    3     5  thresholds  Ljava/util/Collection<Ljava/lang/Runnable;>;
            5    6     5  thresholds  Ljava/util/Collection<Ljava/lang/Runnable;>;
            7   15     5  thresholds  Ljava/util/Collection<Ljava/lang/Runnable;>;
            9   13     6           r  Ljava/lang/Runnable;
           12   13     8           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           9    10      11  Class java.lang.Throwable
    MethodParameters:
          Name  Flags
      incoming  
      outgoing  

  public synchronized java.lang.Runnable addAllocationThreshold(org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection, long, java.lang.Runnable);
    descriptor: (Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;JLjava/lang/Runnable;)Ljava/lang/Runnable;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection direction
        start local 2 // long threshold
        start local 4 // java.lang.Runnable action
         0: .line 444
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.$SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection:()[I
            aload 1 /* direction */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 1
                    2: 2
              default: 3
          }
         1: .line 446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.risingThresholds:Ljava/util/SortedMap;
            lload 2 /* threshold */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 4 /* action */
            invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            areturn
         2: .line 448
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fallingThresholds:Ljava/util/SortedMap;
            lload 2 /* threshold */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 4 /* action */
            invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            areturn
         3: .line 450
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 4 // java.lang.Runnable action
        end local 2 // long threshold
        end local 1 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection direction
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    4     1  direction  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;
            0    4     2  threshold  J
            0    4     4     action  Ljava/lang/Runnable;
    MethodParameters:
           Name  Flags
      direction  
      threshold  
      action     

  public synchronized java.lang.Runnable removeAllocationThreshold(org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection, long);
    descriptor: (Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;J)Ljava/lang/Runnable;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
        start local 1 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection direction
        start local 2 // long threshold
         0: .line 463
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.$SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection:()[I
            aload 1 /* direction */
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 1
                    2: 2
              default: 3
          }
         1: .line 465
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.risingThresholds:Ljava/util/SortedMap;
            lload 2 /* threshold */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.SortedMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            areturn
         2: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.fallingThresholds:Ljava/util/SortedMap;
            lload 2 /* threshold */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.SortedMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            areturn
         3: .line 469
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 2 // long threshold
        end local 1 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection direction
        end local 0 // org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource;
            0    4     1  direction  Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;
            0    4     2  threshold  J
    MethodParameters:
           Name  Flags
      direction  
      threshold  

  private static java.util.Collection<java.nio.ByteBuffer> allocateBackingBuffers(org.terracotta.offheapstore.buffersource.BufferSource, long, int, int, boolean);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)Ljava/util/Collection;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=24, args_size=5
        start local 0 // org.terracotta.offheapstore.buffersource.BufferSource source
        start local 1 // long toAllocate
        start local 3 // int maxChunk
        start local 4 // int minChunk
        start local 5 // boolean fixed
         0: .line 495
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 1
            invokestatic java.lang.System.nanoTime:()J
            goto 2
      StackMap locals:
      StackMap stack:
         1: lconst_0
      StackMap locals:
      StackMap stack: long
         2: lstore 6 /* start */
        start local 6 // long start
         3: .line 497
            lload 1 /* toAllocate */
            iload 3 /* maxChunk */
            iload 4 /* minChunk */
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.createAllocatorLog:(JII)Ljava/io/PrintStream;
            astore 8 /* allocatorLog */
        start local 8 // java.io.PrintStream allocatorLog
         4: .line 499
            new java.util.ArrayList
            dup
            lload 1 /* toAllocate */
            iload 3 /* maxChunk */
            i2l
            ldiv
            ldc 10
            ladd
            l2i
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 9 /* buffers */
        start local 9 // java.util.Collection buffers
         5: .line 502
            aload 8 /* allocatorLog */
            ifnull 7
         6: .line 503
            aload 8 /* allocatorLog */
            ldc "timestamp,threadid,duration,size,physfree,totalswap,freeswap,committed%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         7: .line 506
      StackMap locals: long java.io.PrintStream java.util.Collection
      StackMap stack:
            new java.util.ArrayList
            dup
            lload 1 /* toAllocate */
            iload 3 /* maxChunk */
            i2l
            ldiv
            lconst_1
            ladd
            l2i
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 10 /* futures */
        start local 10 // java.util.List futures
         8: .line 508
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            invokevirtual java.lang.Runtime.availableProcessors:()I
            invokestatic java.util.concurrent.Executors.newFixedThreadPool:(I)Ljava/util/concurrent/ExecutorService;
            astore 11 /* executorService */
        start local 11 // java.util.concurrent.ExecutorService executorService
         9: .line 511
            lconst_0
            lstore 12 /* dispatched */
        start local 12 // long dispatched
        10: goto 14
        11: .line 512
      StackMap locals: java.util.List java.util.concurrent.ExecutorService long
      StackMap stack:
            iload 3 /* maxChunk */
            i2l
            lload 1 /* toAllocate */
            lload 12 /* dispatched */
            lsub
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 14 /* currentChunkSize */
        start local 14 // int currentChunkSize
        12: .line 513
            aload 10 /* futures */
            aload 11 /* executorService */
            aload 0 /* source */
            iload 14 /* currentChunkSize */
            iload 4 /* minChunk */
            iload 5 /* fixed */
            aload 8 /* allocatorLog */
            lload 6 /* start */
            invokedynamic call(Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/concurrent/Callable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/terracotta/offheapstore/paging/UpfrontAllocatingPageSource.lambda$1(Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/Collection; (6)
                  ()Ljava/util/Collection;
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 514
            lload 12 /* dispatched */
            iload 14 /* currentChunkSize */
            i2l
            ladd
            lstore 12 /* dispatched */
        end local 14 // int currentChunkSize
        14: .line 511
      StackMap locals:
      StackMap stack:
            lload 12 /* dispatched */
            lload 1 /* toAllocate */
            lcmp
            iflt 11
        end local 12 // long dispatched
        15: .line 516
            goto 19
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection java.util.List java.util.concurrent.ExecutorService
      StackMap stack: java.lang.Throwable
        16: astore 15
        17: .line 517
            aload 11 /* executorService */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
        18: .line 518
            aload 15
            athrow
        19: .line 517
      StackMap locals:
      StackMap stack:
            aload 11 /* executorService */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
        20: .line 520
            lconst_0
            lstore 12 /* allocated */
        start local 12 // long allocated
        21: .line 521
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.PROGRESS_LOGGING_THRESHOLD:J
            lload 1 /* toAllocate */
            l2d
            ldc 0.1
            dmul
            d2l
            invokestatic java.lang.Math.max:(JJ)J
            lstore 14 /* progressStep */
        start local 14 // long progressStep
        22: .line 522
            lload 14 /* progressStep */
            lstore 16 /* nextProgressLogAt */
        start local 16 // long nextProgressLogAt
        23: .line 524
            aload 10 /* futures */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 19
            goto 34
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection java.util.List java.util.concurrent.ExecutorService long long long top java.util.Iterator
      StackMap stack:
        24: aload 19
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            astore 18 /* future */
        start local 18 // java.util.concurrent.Future future
        25: .line 525
            aload 18 /* future */
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.uninterruptibleGet:(Ljava/util/concurrent/Future;)Ljava/lang/Object;
            checkcast java.util.Collection
            astore 20 /* result */
        start local 20 // java.util.Collection result
        26: .line 526
            aload 9 /* buffers */
            aload 20 /* result */
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        27: .line 527
            aload 20 /* result */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 22
            goto 33
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection java.util.List java.util.concurrent.ExecutorService long long long java.util.concurrent.Future java.util.Iterator java.util.Collection top java.util.Iterator
      StackMap stack:
        28: aload 22
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 21 /* buffer */
        start local 21 // java.nio.ByteBuffer buffer
        29: .line 528
            lload 12 /* allocated */
            aload 21 /* buffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            i2l
            ladd
            lstore 12 /* allocated */
        30: .line 529
            lload 12 /* allocated */
            lload 16 /* nextProgressLogAt */
            lcmp
            ifle 33
        31: .line 530
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Allocation {}% complete"
            ldc 100
            lload 12 /* allocated */
            lmul
            lload 1 /* toAllocate */
            ldiv
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
        32: .line 531
            lload 16 /* nextProgressLogAt */
            lload 14 /* progressStep */
            ladd
            lstore 16 /* nextProgressLogAt */
        end local 21 // java.nio.ByteBuffer buffer
        33: .line 527
      StackMap locals:
      StackMap stack:
            aload 22
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 28
        end local 20 // java.util.Collection result
        end local 18 // java.util.concurrent.Future future
        34: .line 524
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection java.util.List java.util.concurrent.ExecutorService long long long top java.util.Iterator
      StackMap stack:
            aload 19
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        end local 16 // long nextProgressLogAt
        end local 14 // long progressStep
        end local 12 // long allocated
        end local 11 // java.util.concurrent.ExecutorService executorService
        end local 10 // java.util.List futures
        35: .line 536
            goto 40
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection
      StackMap stack: java.lang.Throwable
        36: astore 23
        37: .line 537
            aload 8 /* allocatorLog */
            ifnull 39
        38: .line 538
            aload 8 /* allocatorLog */
            invokevirtual java.io.PrintStream.close:()V
        39: .line 540
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection top top top top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 23
            athrow
        40: .line 537
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource long int int int long java.io.PrintStream java.util.Collection
      StackMap stack:
            aload 8 /* allocatorLog */
            ifnull 42
        41: .line 538
            aload 8 /* allocatorLog */
            invokevirtual java.io.PrintStream.close:()V
        42: .line 542
      StackMap locals:
      StackMap stack:
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 45
        43: .line 543
            invokestatic java.lang.System.nanoTime:()J
            lload 6 /* start */
            lsub
            lstore 10 /* duration */
        start local 10 // long duration
        44: .line 544
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Took {} ms to create off-heap storage of {}B."
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 10 /* duration */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            lload 1 /* toAllocate */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 10 // long duration
        45: .line 547
      StackMap locals:
      StackMap stack:
            aload 9 /* buffers */
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            areturn
        end local 9 // java.util.Collection buffers
        end local 8 // java.io.PrintStream allocatorLog
        end local 6 // long start
        end local 5 // boolean fixed
        end local 4 // int minChunk
        end local 3 // int maxChunk
        end local 1 // long toAllocate
        end local 0 // org.terracotta.offheapstore.buffersource.BufferSource source
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   46     0             source  Lorg/terracotta/offheapstore/buffersource/BufferSource;
            0   46     1         toAllocate  J
            0   46     3           maxChunk  I
            0   46     4           minChunk  I
            0   46     5              fixed  Z
            3   46     6              start  J
            4   46     8       allocatorLog  Ljava/io/PrintStream;
            5   46     9            buffers  Ljava/util/Collection<Ljava/nio/ByteBuffer;>;
            8   35    10            futures  Ljava/util/List<Ljava/util/concurrent/Future<Ljava/util/Collection<Ljava/nio/ByteBuffer;>;>;>;
            9   35    11    executorService  Ljava/util/concurrent/ExecutorService;
           10   15    12         dispatched  J
           12   14    14   currentChunkSize  I
           21   35    12          allocated  J
           22   35    14       progressStep  J
           23   35    16  nextProgressLogAt  J
           25   34    18             future  Ljava/util/concurrent/Future<Ljava/util/Collection<Ljava/nio/ByteBuffer;>;>;
           26   34    20             result  Ljava/util/Collection<Ljava/nio/ByteBuffer;>;
           29   33    21             buffer  Ljava/nio/ByteBuffer;
           44   45    10           duration  J
      Exception table:
        from    to  target  type
           9    16      16  any
           5    36      36  any
    Signature: (Lorg/terracotta/offheapstore/buffersource/BufferSource;JIIZ)Ljava/util/Collection<Ljava/nio/ByteBuffer;>;
    MethodParameters:
            Name  Flags
      source      final
      toAllocate  
      maxChunk    
      minChunk    final
      fixed       final

  private static java.util.Collection<java.nio.ByteBuffer> bufferAllocation(org.terracotta.offheapstore.buffersource.BufferSource, int, int, boolean, java.io.PrintStream, long);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/Collection;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=18, args_size=6
        start local 0 // org.terracotta.offheapstore.buffersource.BufferSource source
        start local 1 // int toAllocate
        start local 2 // int minChunk
        start local 3 // boolean fixed
        start local 4 // java.io.PrintStream allocatorLog
        start local 5 // long start
         0: .line 551
            lconst_0
            lstore 7 /* allocated */
        start local 7 // long allocated
         1: .line 552
            iload 1 /* toAllocate */
            i2l
            lstore 9 /* currentChunkSize */
        start local 9 // long currentChunkSize
         2: .line 554
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 11 /* buffers */
        start local 11 // java.util.Collection buffers
         3: .line 556
            goto 23
         4: .line 557
      StackMap locals: long long java.util.Collection
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lstore 12 /* blockStart */
        start local 12 // long blockStart
         5: .line 558
            lload 9 /* currentChunkSize */
            iload 1 /* toAllocate */
            i2l
            lload 7 /* allocated */
            lsub
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 14 /* currentAllocation */
        start local 14 // int currentAllocation
         6: .line 559
            aload 0 /* source */
            iload 14 /* currentAllocation */
            invokeinterface org.terracotta.offheapstore.buffersource.BufferSource.allocateBuffer:(I)Ljava/nio/ByteBuffer;
            astore 15 /* b */
        start local 15 // java.nio.ByteBuffer b
         7: .line 560
            invokestatic java.lang.System.nanoTime:()J
            lload 12 /* blockStart */
            lsub
            lstore 16 /* blockDuration */
        start local 16 // long blockDuration
         8: .line 562
            aload 15 /* b */
            ifnonnull 15
         9: .line 563
            iload 3 /* fixed */
            ifne 10
            lload 9 /* currentChunkSize */
            iconst_1
            lushr
            iload 2 /* minChunk */
            i2l
            lcmp
            ifge 11
        10: .line 564
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource int int int java.io.PrintStream long long long java.util.Collection long int java.nio.ByteBuffer long
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "An attempt was made to allocate more off-heap memory than the JVM can allow. The limit on off-heap memory size is given by the -XX:MaxDirectMemorySize command (or equivalent)."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 569
      StackMap locals:
      StackMap stack:
            lload 9 /* currentChunkSize */
            iconst_1
            lushr
            lstore 9 /* currentChunkSize */
        12: .line 571
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 23
        13: .line 572
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Allocated failed at {}B, trying  {}B chunks."
            iload 14 /* currentAllocation */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            lload 9 /* currentChunkSize */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        14: .line 574
            goto 23
        15: .line 575
      StackMap locals:
      StackMap stack:
            aload 11 /* buffers */
            aload 15 /* b */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        16: .line 576
            lload 7 /* allocated */
            iload 14 /* currentAllocation */
            i2l
            ladd
            lstore 7 /* allocated */
        17: .line 578
            aload 4 /* allocatorLog */
            ifnull 21
        18: .line 579
            aload 4 /* allocatorLog */
            ldc "%d,%d,%d,%d,%d,%d,%d,%d%n"
            bipush 8
            anewarray java.lang.Object
            dup
            iconst_0
            invokestatic java.lang.System.nanoTime:()J
            lload 5 /* start */
            lsub
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
        19: .line 580
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getId:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
            lload 16 /* blockDuration */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_3
            iload 14 /* currentAllocation */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.freePhysicalMemory:()Ljava/lang/Long;
            aastore
            dup
            iconst_5
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.totalSwapSpace:()Ljava/lang/Long;
            aastore
            dup
            bipush 6
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.freeSwapSpace:()Ljava/lang/Long;
            aastore
            dup
            bipush 7
            invokestatic org.terracotta.offheapstore.util.PhysicalMemory.ourCommittedVirtualMemory:()Ljava/lang/Long;
            aastore
        20: .line 579
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        21: .line 583
      StackMap locals:
      StackMap stack:
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 23
        22: .line 584
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "{}B chunk allocated"
            iload 14 /* currentAllocation */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 16 // long blockDuration
        end local 15 // java.nio.ByteBuffer b
        end local 14 // int currentAllocation
        end local 12 // long blockStart
        23: .line 556
      StackMap locals: org.terracotta.offheapstore.buffersource.BufferSource int int int java.io.PrintStream long long long java.util.Collection
      StackMap stack:
            lload 7 /* allocated */
            iload 1 /* toAllocate */
            i2l
            lcmp
            iflt 4
        24: .line 589
            aload 11 /* buffers */
            areturn
        end local 11 // java.util.Collection buffers
        end local 9 // long currentChunkSize
        end local 7 // long allocated
        end local 5 // long start
        end local 4 // java.io.PrintStream allocatorLog
        end local 3 // boolean fixed
        end local 2 // int minChunk
        end local 1 // int toAllocate
        end local 0 // org.terracotta.offheapstore.buffersource.BufferSource source
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   25     0             source  Lorg/terracotta/offheapstore/buffersource/BufferSource;
            0   25     1         toAllocate  I
            0   25     2           minChunk  I
            0   25     3              fixed  Z
            0   25     4       allocatorLog  Ljava/io/PrintStream;
            0   25     5              start  J
            1   25     7          allocated  J
            2   25     9   currentChunkSize  J
            3   25    11            buffers  Ljava/util/Collection<Ljava/nio/ByteBuffer;>;
            5   23    12         blockStart  J
            6   23    14  currentAllocation  I
            7   23    15                  b  Ljava/nio/ByteBuffer;
            8   23    16      blockDuration  J
    Signature: (Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/Collection<Ljava/nio/ByteBuffer;>;
    MethodParameters:
              Name  Flags
      source        
      toAllocate    
      minChunk      
      fixed         
      allocatorLog  
      start         

  private static <T> T uninterruptibleGet(java.util.concurrent.Future<T>);
    descriptor: (Ljava/util/concurrent/Future;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.util.concurrent.Future future
         0: .line 593
            invokestatic java.lang.Thread.interrupted:()Z
            istore 1 /* interrupted */
        start local 1 // boolean interrupted
         1: .line 597
      StackMap locals: int
      StackMap stack:
            aload 0 /* future */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            astore 4
         2: .line 609
            iload 1 /* interrupted */
            ifeq 4
         3: .line 610
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
         4: .line 597
      StackMap locals: java.util.concurrent.Future int top top java.lang.Object
      StackMap stack:
            aload 4
            areturn
         5: .line 598
      StackMap locals: java.util.concurrent.Future int
      StackMap stack: java.util.concurrent.ExecutionException
            astore 2 /* e */
        start local 2 // java.util.concurrent.ExecutionException e
         6: .line 599
            aload 2 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            instanceof java.lang.RuntimeException
            ifeq 8
         7: .line 600
            aload 2 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            checkcast java.lang.RuntimeException
            athrow
         8: .line 602
      StackMap locals: java.util.concurrent.ExecutionException
      StackMap stack:
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.util.concurrent.ExecutionException e
         9: .line 603
      StackMap locals: java.util.concurrent.Future int
      StackMap stack: java.lang.InterruptedException
            pop
        10: .line 605
            iconst_1
            istore 1 /* interrupted */
        11: .line 595
            goto 1
        12: .line 608
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        13: .line 609
            iload 1 /* interrupted */
            ifeq 15
        14: .line 610
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        15: .line 612
      StackMap locals: java.util.concurrent.Future int top java.lang.Throwable
      StackMap stack:
            aload 3
            athrow
        end local 1 // boolean interrupted
        end local 0 // java.util.concurrent.Future future
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0       future  Ljava/util/concurrent/Future<TT;>;
            1   16     1  interrupted  Z
            6    9     2            e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           1     2       5  Class java.util.concurrent.ExecutionException
           1     2       9  Class java.lang.InterruptedException
           1     2      12  any
           5    12      12  any
    Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Future<TT;>;)TT;
    MethodParameters:
        Name  Flags
      future  

  private static java.io.PrintStream createAllocatorLog(long, int, int);
    descriptor: (JII)Ljava/io/PrintStream;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // long max
        start local 2 // int maxChunk
        start local 3 // int minChunk
         0: .line 616
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.ALLOCATION_LOG_LOCATION:Ljava/lang/String;
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* path */
        start local 4 // java.lang.String path
         1: .line 617
            aload 4 /* path */
            ifnonnull 3
         2: .line 618
            aconst_null
            areturn
         3: .line 622
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "allocation"
            ldc ".csv"
            new java.io.File
            dup
            aload 4 /* path */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
            astore 6 /* allocatorLogFile */
        start local 6 // java.io.File allocatorLogFile
         4: .line 623
            new java.io.PrintStream
            dup
            aload 6 /* allocatorLogFile */
            ldc "US-ASCII"
            invokespecial java.io.PrintStream.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 5 /* allocatorLogStream */
        end local 6 // java.io.File allocatorLogFile
        start local 5 // java.io.PrintStream allocatorLogStream
         5: .line 624
            goto 9
        end local 5 // java.io.PrintStream allocatorLogStream
      StackMap locals:
      StackMap stack: java.io.IOException
         6: astore 6 /* e */
        start local 6 // java.io.IOException e
         7: .line 625
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.LOGGER:Lorg/slf4j/Logger;
            ldc "Exception creating allocation log"
            aload 6 /* e */
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
         8: .line 626
            aconst_null
            areturn
        end local 6 // java.io.IOException e
        start local 5 // java.io.PrintStream allocatorLogStream
         9: .line 628
      StackMap locals: java.io.PrintStream
      StackMap stack:
            aload 5 /* allocatorLogStream */
            ldc "Timestamp: %s%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        10: .line 629
            aload 5 /* allocatorLogStream */
            ldc "Allocating: %sB%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            lload 0 /* max */
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        11: .line 630
            aload 5 /* allocatorLogStream */
            ldc "Max Chunk: %sB%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 2 /* maxChunk */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        12: .line 631
            aload 5 /* allocatorLogStream */
            ldc "Min Chunk: %sB%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 3 /* minChunk */
            i2l
            invokestatic org.terracotta.offheapstore.util.DebuggingUtils.toBase2SuffixedString:(J)Ljava/lang/String;
            aastore
            invokevirtual java.io.PrintStream.printf:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
        13: .line 632
            aload 5 /* allocatorLogStream */
            areturn
        end local 5 // java.io.PrintStream allocatorLogStream
        end local 4 // java.lang.String path
        end local 3 // int minChunk
        end local 2 // int maxChunk
        end local 0 // long max
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   14     0                 max  J
            0   14     2            maxChunk  I
            0   14     3            minChunk  I
            1   14     4                path  Ljava/lang/String;
            5    6     5  allocatorLogStream  Ljava/io/PrintStream;
            9   14     5  allocatorLogStream  Ljava/io/PrintStream;
            4    5     6    allocatorLogFile  Ljava/io/File;
            7    9     6                   e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     5       6  Class java.io.IOException
    MethodParameters:
          Name  Flags
      max       
      maxChunk  
      minChunk  

  static int[] $SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 62
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.$SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.values:()[Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.FALLING:Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.RISING:Lorg/terracotta/offheapstore/paging/UpfrontAllocatingPageSource$ThresholdDirection;
            invokevirtual org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            dup
            putstatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.$SWITCH_TABLE$org$terracotta$offheapstore$paging$UpfrontAllocatingPageSource$ThresholdDirection:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError

  private static int lambda$0(org.terracotta.offheapstore.paging.Page, org.terracotta.offheapstore.paging.Page);
    descriptor: (Lorg/terracotta/offheapstore/paging/Page;Lorg/terracotta/offheapstore/paging/Page;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.terracotta.offheapstore.paging.Page a
        start local 1 // org.terracotta.offheapstore.paging.Page b
         0: .line 71
            aload 0 /* a */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 1 /* b */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            if_icmpne 2
         1: .line 72
            aload 0 /* a */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            aload 1 /* b */
            invokevirtual org.terracotta.offheapstore.paging.Page.size:()I
            isub
            ireturn
         2: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            aload 1 /* b */
            invokevirtual org.terracotta.offheapstore.paging.Page.address:()I
            isub
            ireturn
        end local 1 // org.terracotta.offheapstore.paging.Page b
        end local 0 // org.terracotta.offheapstore.paging.Page a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     a  Lorg/terracotta/offheapstore/paging/Page;
            0    3     1     b  Lorg/terracotta/offheapstore/paging/Page;

  private static java.util.Collection lambda$1(org.terracotta.offheapstore.buffersource.BufferSource, int, int, boolean, java.io.PrintStream, long);
    descriptor: (Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/Collection;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=7, locals=7, args_size=6
         0: .line 513
            aload 0
            iload 1
            iload 2
            iload 3
            aload 4
            lload 5
            invokestatic org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.bufferAllocation:(Lorg/terracotta/offheapstore/buffersource/BufferSource;IIZLjava/io/PrintStream;J)Ljava/util/Collection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
SourceFile: "UpfrontAllocatingPageSource.java"
NestMembers:
  org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion  org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map
  AllocatedRegion = org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$AllocatedRegion of org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
  public final ThresholdDirection = org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource$ThresholdDirection of org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
  public abstract Packing = org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator$Packing of org.terracotta.offheapstore.storage.allocator.PowerOfTwoAllocator