public class micro.benchmarks.ConcurrentHashBenchmark extends micro.benchmarks.BenchmarkBase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: micro.benchmarks.ConcurrentHashBenchmark
  super_class: micro.benchmarks.BenchmarkBase
{
  private static final int MULTIPLIER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  private static final int SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 100000

  private static final int PARALLELISM;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final java.lang.Integer[] KEYS;
    descriptor: [Ljava/lang/Integer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] STRKEYS;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.util.concurrent.ConcurrentHashMap<java.lang.Integer, java.lang.Integer> prefilledMap;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Integer;Ljava/lang/Integer;>;

  private java.util.concurrent.ConcurrentHashMap<java.lang.String, java.lang.String> prefilledStringMap;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 44
            ldc 100000
            anewarray java.lang.Integer
            putstatic micro.benchmarks.ConcurrentHashBenchmark.KEYS:[Ljava/lang/Integer;
         1: .line 45
            ldc 100000
            anewarray java.lang.String
            putstatic micro.benchmarks.ConcurrentHashBenchmark.STRKEYS:[Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 39
            aload 0 /* this */
            invokespecial micro.benchmarks.BenchmarkBase.<init>:()V
            return
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;

  public void setupInts();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 52
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield micro.benchmarks.ConcurrentHashBenchmark.prefilledMap:Ljava/util/concurrent/ConcurrentHashMap;
         1: .line 53
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 7
         3: .line 54
      StackMap locals: int
      StackMap stack:
            getstatic micro.benchmarks.ConcurrentHashBenchmark.KEYS:[Ljava/lang/Integer;
            iload 1 /* i */
            iload 1 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         4: .line 55
            getstatic micro.benchmarks.ConcurrentHashBenchmark.KEYS:[Ljava/lang/Integer;
            iload 1 /* i */
            aaload
            astore 2 /* key */
        start local 2 // java.lang.Integer key
         5: .line 56
            aload 0 /* this */
            getfield micro.benchmarks.ConcurrentHashBenchmark.prefilledMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* key */
            aload 2 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.lang.Integer key
         6: .line 53
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            ldc 100000
            if_icmplt 3
        end local 1 // int i
         8: .line 58
            return
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
            2    8     1     i  I
            5    6     2   key  Ljava/lang/Integer;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.Setup(value = org.openjdk.jmh.annotations.Level.Trial:Lorg/openjdk/jmh/annotations/Level;)

  public void setupStrings();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 62
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield micro.benchmarks.ConcurrentHashBenchmark.prefilledStringMap:Ljava/util/concurrent/ConcurrentHashMap;
         1: .line 63
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         2: goto 7
         3: .line 64
      StackMap locals: int
      StackMap stack:
            getstatic micro.benchmarks.ConcurrentHashBenchmark.STRKEYS:[Ljava/lang/String;
            iload 1 /* i */
            iload 1 /* i */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            aastore
         4: .line 65
            getstatic micro.benchmarks.ConcurrentHashBenchmark.STRKEYS:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            astore 2 /* key */
        start local 2 // java.lang.String key
         5: .line 66
            aload 0 /* this */
            getfield micro.benchmarks.ConcurrentHashBenchmark.prefilledStringMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* key */
            aload 2 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.lang.String key
         6: .line 63
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            ldc 100000
            if_icmplt 3
        end local 1 // int i
         8: .line 68
            return
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
            2    8     1     i  I
            5    6     2   key  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.Setup(value = org.openjdk.jmh.annotations.Level.Trial:Lorg/openjdk/jmh/annotations/Level;)

  private int keySum();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 71
            iconst_0
            istore 1 /* sum */
        start local 1 // int sum
         1: .line 72
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 73
      StackMap locals: int int
      StackMap stack:
            getstatic micro.benchmarks.ConcurrentHashBenchmark.KEYS:[Ljava/lang/Integer;
            iload 2 /* i */
            ldc 100000
            irem
            aaload
            astore 3 /* key */
        start local 3 // java.lang.Integer key
         4: .line 74
            iload 1 /* sum */
            aload 0 /* this */
            getfield micro.benchmarks.ConcurrentHashBenchmark.prefilledMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 3 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            iadd
            istore 1 /* sum */
        end local 3 // java.lang.Integer key
         5: .line 72
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            ldc 1000000
            if_icmplt 3
        end local 2 // int i
         7: .line 76
            iload 1 /* sum */
            ireturn
        end local 1 // int sum
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
            1    8     1   sum  I
            2    7     2     i  I
            4    5     3   key  Ljava/lang/Integer;

  private static int inParallel(java.util.function.Supplier<java.lang.Integer>);
    descriptor: (Ljava/util/function/Supplier;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=1
        start local 0 // java.util.function.Supplier action
         0: .line 80
            iconst_4
            newarray 10
            astore 1 /* results */
        start local 1 // int[] results
         1: .line 81
            iconst_4
            anewarray java.lang.Thread
            astore 2 /* threads */
        start local 2 // java.lang.Thread[] threads
         2: .line 82
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 83
      StackMap locals: int[] java.lang.Thread[] int
      StackMap stack:
            iload 3 /* i */
            istore 4 /* index */
        start local 4 // int index
         5: .line 84
            aload 2 /* threads */
            iload 3 /* i */
            new micro.benchmarks.ConcurrentHashBenchmark$1
            dup
            aload 1 /* results */
            iload 4 /* index */
            aload 0 /* action */
            invokespecial micro.benchmarks.ConcurrentHashBenchmark$1.<init>:([IILjava/util/function/Supplier;)V
            aastore
        end local 4 // int index
         6: .line 82
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            iconst_4
            if_icmplt 4
        end local 3 // int i
         8: .line 91
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         9: goto 12
        10: .line 92
      StackMap locals:
      StackMap stack:
            aload 2 /* threads */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.Thread.start:()V
        11: .line 91
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* i */
            iconst_4
            if_icmplt 10
        end local 3 // int i
        13: .line 94
            iconst_0
            istore 3 /* result */
        start local 3 // int result
        14: .line 95
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        15: goto 22
        16: .line 97
      StackMap locals: int
      StackMap stack:
            aload 2 /* threads */
            iload 4 /* i */
            aaload
            invokevirtual java.lang.Thread.join:()V
        17: .line 98
            goto 20
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        18: astore 5 /* e */
        start local 5 // java.lang.InterruptedException e
        19: .line 99
            new java.lang.RuntimeException
            dup
            aload 5 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.InterruptedException e
        20: .line 101
      StackMap locals:
      StackMap stack:
            iload 3 /* result */
            aload 1 /* results */
            iload 4 /* i */
            iaload
            iadd
            istore 3 /* result */
        21: .line 95
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 4 /* i */
            iconst_4
            if_icmplt 16
        end local 4 // int i
        23: .line 103
            iload 3 /* result */
            ireturn
        end local 3 // int result
        end local 2 // java.lang.Thread[] threads
        end local 1 // int[] results
        end local 0 // java.util.function.Supplier action
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   24     0   action  Ljava/util/function/Supplier<Ljava/lang/Integer;>;
            1   24     1  results  [I
            2   24     2  threads  [Ljava/lang/Thread;
            3    8     3        i  I
            5    6     4    index  I
            9   13     3        i  I
           14   24     3   result  I
           15   23     4        i  I
           19   20     5        e  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
          16    17      18  Class java.lang.InterruptedException
    Signature: (Ljava/util/function/Supplier<Ljava/lang/Integer;>;)I
    MethodParameters:
        Name  Flags
      action  

  public int sequentialGet();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 109
            aload 0 /* this */
            invokevirtual micro.benchmarks.ConcurrentHashBenchmark.keySum:()I
            ireturn
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.OutputTimeUnit(value = java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;)
      org.openjdk.jmh.annotations.Benchmark()

  public int parallelGet();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 115
            new micro.benchmarks.ConcurrentHashBenchmark$2
            dup
            aload 0 /* this */
            invokespecial micro.benchmarks.ConcurrentHashBenchmark$2.<init>:(Lmicro/benchmarks/ConcurrentHashBenchmark;)V
            invokestatic micro.benchmarks.ConcurrentHashBenchmark.inParallel:(Ljava/util/function/Supplier;)I
            ireturn
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.OutputTimeUnit(value = java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;)
      org.openjdk.jmh.annotations.Benchmark()

  private int keyHash();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 124
            iconst_0
            istore 1 /* hash */
        start local 1 // int hash
         1: .line 125
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 126
      StackMap locals: int int
      StackMap stack:
            getstatic micro.benchmarks.ConcurrentHashBenchmark.STRKEYS:[Ljava/lang/String;
            iload 2 /* i */
            ldc 100000
            irem
            aaload
            astore 3 /* key */
        start local 3 // java.lang.String key
         4: .line 127
            iload 1 /* hash */
            aload 0 /* this */
            getfield micro.benchmarks.ConcurrentHashBenchmark.prefilledStringMap:Ljava/util/concurrent/ConcurrentHashMap;
            aload 3 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.hashCode:()I
            ixor
            istore 1 /* hash */
        end local 3 // java.lang.String key
         5: .line 125
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            ldc 1000000
            if_icmplt 3
        end local 2 // int i
         7: .line 129
            iload 1 /* hash */
            ireturn
        end local 1 // int hash
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
            1    8     1  hash  I
            2    7     2     i  I
            4    5     3   key  Ljava/lang/String;

  public int sequentialStringGet();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 135
            aload 0 /* this */
            invokevirtual micro.benchmarks.ConcurrentHashBenchmark.keyHash:()I
            ireturn
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.OutputTimeUnit(value = java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;)
      org.openjdk.jmh.annotations.Benchmark()

  public int parallelStringGet();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 141
            new micro.benchmarks.ConcurrentHashBenchmark$3
            dup
            aload 0 /* this */
            invokespecial micro.benchmarks.ConcurrentHashBenchmark$3.<init>:(Lmicro/benchmarks/ConcurrentHashBenchmark;)V
            invokestatic micro.benchmarks.ConcurrentHashBenchmark.inParallel:(Ljava/util/function/Supplier;)I
            ireturn
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.OutputTimeUnit(value = java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;)
      org.openjdk.jmh.annotations.Benchmark()

  public int sequentialPut();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // micro.benchmarks.ConcurrentHashBenchmark this
         0: .line 152
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            astore 1 /* map */
        start local 1 // java.util.concurrent.ConcurrentHashMap map
         1: .line 153
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 154
      StackMap locals: java.util.concurrent.ConcurrentHashMap int
      StackMap stack:
            getstatic micro.benchmarks.ConcurrentHashBenchmark.KEYS:[Ljava/lang/Integer;
            iload 2 /* i */
            aaload
            astore 3 /* key */
        start local 3 // java.lang.Integer key
         4: .line 155
            aload 1 /* map */
            aload 3 /* key */
            aload 3 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.lang.Integer key
         5: .line 153
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            ldc 100000
            if_icmplt 3
        end local 2 // int i
         7: .line 157
            aload 1 /* map */
            ldc 50000
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 1 // java.util.concurrent.ConcurrentHashMap map
        end local 0 // micro.benchmarks.ConcurrentHashBenchmark this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lmicro/benchmarks/ConcurrentHashBenchmark;
            1    8     1   map  Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Integer;Ljava/lang/Integer;>;
            2    7     2     i  I
            4    5     3   key  Ljava/lang/Integer;
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.OutputTimeUnit(value = java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;)
      org.openjdk.jmh.annotations.Benchmark()
}
SourceFile: "ConcurrentHashBenchmark.java"
NestMembers:
  micro.benchmarks.ConcurrentHashBenchmark$1  micro.benchmarks.ConcurrentHashBenchmark$2  micro.benchmarks.ConcurrentHashBenchmark$3
InnerClasses:
  micro.benchmarks.ConcurrentHashBenchmark$1
  micro.benchmarks.ConcurrentHashBenchmark$2
  micro.benchmarks.ConcurrentHashBenchmark$3
    RuntimeVisibleAnnotations: 
      org.openjdk.jmh.annotations.State(value = org.openjdk.jmh.annotations.Scope.Benchmark:Lorg/openjdk/jmh/annotations/Scope;)