public abstract class org.graalvm.compiler.hotspot.HotSpotCounterOp extends org.graalvm.compiler.lir.LIRInstruction
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.hotspot.HotSpotCounterOp
  super_class: org.graalvm.compiler.lir.LIRInstruction
{
  public static final org.graalvm.compiler.lir.LIRInstructionClass<org.graalvm.compiler.hotspot.HotSpotCounterOp> TYPE;
    descriptor: Lorg/graalvm/compiler/lir/LIRInstructionClass;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/compiler/lir/LIRInstructionClass<Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;>;

  private final java.lang.String[] names;
    descriptor: [Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String[] groups;
    descriptor: [Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final jdk.vm.ci.code.Register thread;
    descriptor: Ljdk/vm/ci/code/Register;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config;
    descriptor: Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected jdk.vm.ci.meta.Value[] increments;
    descriptor: [Ljdk/vm/ci/meta/Value;
    flags: (0x0004) ACC_PROTECTED
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.lir.LIRInstruction$Alive(value = {org.graalvm.compiler.lir.LIRInstruction$OperandFlag.CONST:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;, org.graalvm.compiler.lir.LIRInstruction$OperandFlag.REG:Lorg/graalvm/compiler/lir/LIRInstruction$OperandFlag;})

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 50
            ldc Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$assertionsDisabled:Z
         3: .line 51
            ldc Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            invokestatic org.graalvm.compiler.lir.LIRInstructionClass.create:(Ljava/lang/Class;)Lorg/graalvm/compiler/lir/LIRInstructionClass;
            putstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.TYPE:Lorg/graalvm/compiler/lir/LIRInstructionClass;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.lir.LIRInstructionClass<? extends org.graalvm.compiler.hotspot.HotSpotCounterOp>, java.lang.String, java.lang.String, jdk.vm.ci.meta.Value, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.hotspot.GraalHotSpotVMConfig);
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstructionClass;Ljava/lang/String;Ljava/lang/String;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=7
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
        start local 1 // org.graalvm.compiler.lir.LIRInstructionClass c
        start local 2 // java.lang.String name
        start local 3 // java.lang.String group
        start local 4 // jdk.vm.ci.meta.Value increment
        start local 5 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
         0: .line 60
            aload 0 /* this */
            aload 1 /* c */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 2 /* name */
            aastore
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 3 /* group */
            aastore
            iconst_1
            anewarray jdk.vm.ci.meta.Value
            dup
            iconst_0
            aload 4 /* increment */
            aastore
            aload 5 /* registers */
            aload 6 /* config */
            invokespecial org.graalvm.compiler.hotspot.HotSpotCounterOp.<init>:(Lorg/graalvm/compiler/lir/LIRInstructionClass;[Ljava/lang/String;[Ljava/lang/String;[Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
         1: .line 61
            return
        end local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        end local 5 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 4 // jdk.vm.ci.meta.Value increment
        end local 3 // java.lang.String group
        end local 2 // java.lang.String name
        end local 1 // org.graalvm.compiler.lir.LIRInstructionClass c
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            0    2     1          c  Lorg/graalvm/compiler/lir/LIRInstructionClass<+Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;>;
            0    2     2       name  Ljava/lang/String;
            0    2     3      group  Ljava/lang/String;
            0    2     4  increment  Ljdk/vm/ci/meta/Value;
            0    2     5  registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0    2     6     config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    Signature: (Lorg/graalvm/compiler/lir/LIRInstructionClass<+Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;>;Ljava/lang/String;Ljava/lang/String;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    MethodParameters:
           Name  Flags
      c          
      name       
      group      
      increment  
      registers  
      config     

  public void <init>(org.graalvm.compiler.lir.LIRInstructionClass<? extends org.graalvm.compiler.hotspot.HotSpotCounterOp>, java.lang.String[], java.lang.String[], jdk.vm.ci.meta.Value[], org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.hotspot.GraalHotSpotVMConfig);
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstructionClass;[Ljava/lang/String;[Ljava/lang/String;[Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
        start local 1 // org.graalvm.compiler.lir.LIRInstructionClass c
        start local 2 // java.lang.String[] names
        start local 3 // java.lang.String[] groups
        start local 4 // jdk.vm.ci.meta.Value[] increments
        start local 5 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
         0: .line 64
            aload 0 /* this */
            aload 1 /* c */
            invokespecial org.graalvm.compiler.lir.LIRInstruction.<init>:(Lorg/graalvm/compiler/lir/LIRInstructionClass;)V
         1: .line 66
            getstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$assertionsDisabled:Z
            ifne 2
            aload 2 /* names */
            arraylength
            aload 3 /* groups */
            arraylength
            if_icmpeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 67
      StackMap locals: org.graalvm.compiler.hotspot.HotSpotCounterOp org.graalvm.compiler.lir.LIRInstructionClass java.lang.String[] java.lang.String[] jdk.vm.ci.meta.Value[] org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider org.graalvm.compiler.hotspot.GraalHotSpotVMConfig
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$assertionsDisabled:Z
            ifne 3
            aload 3 /* groups */
            arraylength
            aload 4 /* increments */
            arraylength
            if_icmpeq 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 69
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* names */
            putfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
         4: .line 70
            aload 0 /* this */
            aload 3 /* groups */
            putfield org.graalvm.compiler.hotspot.HotSpotCounterOp.groups:[Ljava/lang/String;
         5: .line 71
            aload 0 /* this */
            aload 4 /* increments */
            putfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
         6: .line 72
            aload 0 /* this */
            aload 5 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            putfield org.graalvm.compiler.hotspot.HotSpotCounterOp.thread:Ljdk/vm/ci/code/Register;
         7: .line 73
            aload 0 /* this */
            aload 6 /* config */
            putfield org.graalvm.compiler.hotspot.HotSpotCounterOp.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
         8: .line 74
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.HotSpotCounterOp.checkIncrements:()Z
            pop
         9: .line 75
            return
        end local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        end local 5 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 4 // jdk.vm.ci.meta.Value[] increments
        end local 3 // java.lang.String[] groups
        end local 2 // java.lang.String[] names
        end local 1 // org.graalvm.compiler.lir.LIRInstructionClass c
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            0   10     1           c  Lorg/graalvm/compiler/lir/LIRInstructionClass<+Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;>;
            0   10     2       names  [Ljava/lang/String;
            0   10     3      groups  [Ljava/lang/String;
            0   10     4  increments  [Ljdk/vm/ci/meta/Value;
            0   10     5   registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0   10     6      config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    Signature: (Lorg/graalvm/compiler/lir/LIRInstructionClass<+Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;>;[Ljava/lang/String;[Ljava/lang/String;[Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    MethodParameters:
            Name  Flags
      c           
      names       
      groups      
      increments  
      registers   
      config      

  private boolean checkIncrements();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
         0: .line 78
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 9
         2: .line 79
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            iload 1 /* i */
            aaload
            astore 2 /* increment */
        start local 2 // jdk.vm.ci.meta.Value increment
         3: .line 80
            aload 2 /* increment */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant:(Ljdk/vm/ci/meta/Value;)Z
            ifeq 8
         4: .line 81
            aload 2 /* increment */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.asJavaConstant:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/JavaConstant;
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.asLong:(Ljdk/vm/ci/meta/JavaConstant;)J
            lstore 3 /* incValue */
        start local 3 // long incValue
         5: .line 82
            lload 3 /* incValue */
            lconst_0
            lcmp
            iflt 6
            lload 3 /* incValue */
            ldc 10000
            lcmp
            ifle 8
         6: .line 83
      StackMap locals: jdk.vm.ci.meta.Value long
      StackMap stack:
            ldc "Benchmark counter %s:%s has increment out of range [%d .. %d]: %d"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.groups:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            aastore
            dup
            iconst_2
            lconst_0
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_3
            ldc 10000
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_4
            lload 3 /* incValue */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* message */
        start local 5 // java.lang.String message
         7: .line 84
            getstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$assertionsDisabled:Z
            ifne 8
            new java.lang.AssertionError
            dup
            aload 5 /* message */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 5 // java.lang.String message
        end local 3 // long incValue
        end local 2 // jdk.vm.ci.meta.Value increment
         8: .line 78
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 1 /* i */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            arraylength
            if_icmplt 2
        end local 1 // int i
        10: .line 88
            iconst_1
            ireturn
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            1   10     1          i  I
            3    8     2  increment  Ljdk/vm/ci/meta/Value;
            5    8     3   incValue  J
            7    8     5    message  Ljava/lang/String;

  protected static int getDisplacementForLongIndex(jdk.vm.ci.code.TargetDescription, long);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;J)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // jdk.vm.ci.code.TargetDescription target
        start local 1 // long index
         0: .line 92
            lload 1 /* index */
            aload 0 /* target */
            getfield jdk.vm.ci.code.TargetDescription.arch:Ljdk/vm/ci/code/Architecture;
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.code.Architecture.getPlatformKind:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/PlatformKind;
            invokeinterface jdk.vm.ci.meta.PlatformKind.getSizeInBytes:()I
            i2l
            lmul
            lstore 3 /* finalDisp */
        start local 3 // long finalDisp
         1: .line 93
            lload 3 /* finalDisp */
            invokestatic org.graalvm.compiler.core.common.NumUtil.isInt:(J)Z
            ifne 3
         2: .line 94
            new java.lang.StringBuilder
            dup
            ldc "cannot deal with indices that big: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* index */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 96
      StackMap locals: long
      StackMap stack:
            lload 3 /* finalDisp */
            l2i
            ireturn
        end local 3 // long finalDisp
        end local 1 // long index
        end local 0 // jdk.vm.ci.code.TargetDescription target
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0     target  Ljdk/vm/ci/code/TargetDescription;
            0    4     1      index  J
            1    4     3  finalDisp  J
    MethodParameters:
        Name  Flags
      target  
      index   

  protected void forEachCounter(org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure, jdk.vm.ci.code.TargetDescription);
    descriptor: (Lorg/graalvm/compiler/hotspot/HotSpotCounterOp$CounterProcedure;Ljdk/vm/ci/code/TargetDescription;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
        start local 1 // org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure proc
        start local 2 // jdk.vm.ci.code.TargetDescription target
         0: .line 118
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            arraylength
            iconst_1
            if_icmpne 5
         1: .line 119
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            iconst_0
            aaload
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.groups:[Ljava/lang/String;
            iconst_0
            aaload
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            iconst_0
            aaload
            invokevirtual org.graalvm.compiler.hotspot.HotSpotCounterOp.getIndex:(Ljava/lang/String;Ljava/lang/String;Ljdk/vm/ci/meta/Value;)I
            istore 3 /* arrayIndex */
        start local 3 // int arrayIndex
         2: .line 120
            aload 2 /* target */
            iload 3 /* arrayIndex */
            i2l
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.getDisplacementForLongIndex:(Ljdk/vm/ci/code/TargetDescription;J)I
            istore 4 /* displacement */
        start local 4 // int displacement
         3: .line 121
            aload 1 /* proc */
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            iconst_0
            aaload
            iload 4 /* displacement */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure.apply:(ILjdk/vm/ci/meta/Value;I)V
        end local 4 // int displacement
        end local 3 // int arrayIndex
         4: .line 122
            goto 21
         5: .line 123
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            arraylength
            newarray 10
            astore 3 /* displacements */
        start local 3 // int[] displacements
         6: .line 124
            invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:()Ljdk/internal/vm/compiler/collections/EconomicMap;
            astore 4 /* offsetMap */
        start local 4 // jdk.internal.vm.compiler.collections.EconomicMap offsetMap
         7: .line 125
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 13
         9: .line 126
      StackMap locals: int[] jdk.internal.vm.compiler.collections.EconomicMap int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            iload 5 /* i */
            aaload
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.groups:[Ljava/lang/String;
            iload 5 /* i */
            aaload
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            iload 5 /* i */
            aaload
            invokevirtual org.graalvm.compiler.hotspot.HotSpotCounterOp.getIndex:(Ljava/lang/String;Ljava/lang/String;Ljdk/vm/ci/meta/Value;)I
            istore 6 /* arrayIndex */
        start local 6 // int arrayIndex
        10: .line 127
            aload 3 /* displacements */
            iload 5 /* i */
            aload 2 /* target */
            iload 6 /* arrayIndex */
            i2l
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.getDisplacementForLongIndex:(Ljdk/vm/ci/code/TargetDescription;J)I
            iastore
        11: .line 128
            aload 4 /* offsetMap */
            aload 3 /* displacements */
            iload 5 /* i */
            iaload
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iload 5 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // int arrayIndex
        12: .line 125
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 5 /* i */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            arraylength
            if_icmplt 9
        end local 5 // int i
        14: .line 130
            aload 3 /* displacements */
            invokestatic java.util.Arrays.sort:([I)V
        15: .line 132
            aload 3 /* displacements */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 20
      StackMap locals: org.graalvm.compiler.hotspot.HotSpotCounterOp org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure jdk.vm.ci.code.TargetDescription int[] jdk.internal.vm.compiler.collections.EconomicMap top int int int[]
      StackMap stack:
        16: aload 8
            iload 6
            iaload
            istore 5 /* offset */
        start local 5 // int offset
        17: .line 133
            aload 4 /* offsetMap */
            iload 5 /* offset */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 9 /* idx */
        start local 9 // int idx
        18: .line 134
            aload 1 /* proc */
            iload 9 /* idx */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.increments:[Ljdk/vm/ci/meta/Value;
            iload 9 /* idx */
            aaload
            aload 3 /* displacements */
            iload 9 /* idx */
            iaload
            invokeinterface org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure.apply:(ILjdk/vm/ci/meta/Value;I)V
        end local 9 // int idx
        end local 5 // int offset
        19: .line 132
            iinc 6 1
      StackMap locals:
      StackMap stack:
        20: iload 6
            iload 7
            if_icmplt 16
        end local 4 // jdk.internal.vm.compiler.collections.EconomicMap offsetMap
        end local 3 // int[] displacements
        21: .line 137
      StackMap locals: org.graalvm.compiler.hotspot.HotSpotCounterOp org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure jdk.vm.ci.code.TargetDescription
      StackMap stack:
            return
        end local 2 // jdk.vm.ci.code.TargetDescription target
        end local 1 // org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure proc
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   22     0           this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            0   22     1           proc  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp$CounterProcedure;
            0   22     2         target  Ljdk/vm/ci/code/TargetDescription;
            2    4     3     arrayIndex  I
            3    4     4   displacement  I
            6   21     3  displacements  [I
            7   21     4      offsetMap  Ljdk/internal/vm/compiler/collections/EconomicMap<Ljava/lang/Integer;Ljava/lang/Integer;>;
            8   14     5              i  I
           10   12     6     arrayIndex  I
           17   19     5         offset  I
           18   19     9            idx  I
    MethodParameters:
        Name  Flags
      proc    
      target  

  protected int getIndex(java.lang.String, java.lang.String, jdk.vm.ci.meta.Value);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljdk/vm/ci/meta/Value;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String group
        start local 3 // jdk.vm.ci.meta.Value increment
         0: .line 140
            aload 3 /* increment */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant:(Ljdk/vm/ci/meta/Value;)Z
            ifeq 2
         1: .line 142
            aload 1 /* name */
            aload 2 /* group */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            aload 3 /* increment */
            invokestatic org.graalvm.compiler.lir.LIRValueUtil.asJavaConstant:(Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/JavaConstant;
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.asLong:(Ljdk/vm/ci/meta/JavaConstant;)J
            invokestatic org.graalvm.compiler.hotspot.debug.BenchmarkCounters.getIndexConstantIncrement:(Ljava/lang/String;Ljava/lang/String;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;J)I
            ireturn
         2: .line 144
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$assertionsDisabled:Z
            ifne 3
            aload 3 /* increment */
            invokestatic jdk.vm.ci.code.ValueUtil.isRegister:(Ljdk/vm/ci/meta/Value;)Z
            ifne 3
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected Value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* increment */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         3: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            aload 2 /* group */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.debug.BenchmarkCounters.getIndex:(Ljava/lang/String;Ljava/lang/String;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            ireturn
        end local 3 // jdk.vm.ci.meta.Value increment
        end local 2 // java.lang.String group
        end local 1 // java.lang.String name
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            0    4     1       name  Ljava/lang/String;
            0    4     2      group  Ljava/lang/String;
            0    4     3  increment  Ljdk/vm/ci/meta/Value;
    MethodParameters:
           Name  Flags
      name       
      group      
      increment  

  public void patchCounterIncrement(org.graalvm.compiler.asm.Assembler, int[]);
    descriptor: (Lorg/graalvm/compiler/asm/Assembler;[I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
        start local 1 // org.graalvm.compiler.asm.Assembler asm
        start local 2 // int[] increment
         0: .line 157
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:()Ljava/lang/RuntimeException;
            athrow
        end local 2 // int[] increment
        end local 1 // org.graalvm.compiler.asm.Assembler asm
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;
            0    1     1        asm  Lorg/graalvm/compiler/asm/Assembler;
            0    1     2  increment  [I
    MethodParameters:
           Name  Flags
      asm        
      increment  

  private static long asLong(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaConstant value
         0: .line 161
            aload 0 /* value */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            astore 1 /* kind */
        start local 1 // jdk.vm.ci.meta.JavaKind kind
         1: .line 162
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 1 /* kind */
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 2 - 7
                    2: 2
                    3: 2
                    4: 2
                    5: 2
                    6: 4
                    7: 3
              default: 4
          }
         2: .line 167
      StackMap locals: jdk.vm.ci.meta.JavaKind
      StackMap stack:
            aload 0 /* value */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            i2l
            lreturn
         3: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            lreturn
         4: .line 171
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "not an integer kind: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // jdk.vm.ci.meta.JavaKind kind
        end local 0 // jdk.vm.ci.meta.JavaConstant value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0  value  Ljdk/vm/ci/meta/JavaConstant;
            1    5     1   kind  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
       Name  Flags
      value  

  protected static int asInt(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaConstant value
         0: .line 176
            aload 0 /* value */
            invokestatic org.graalvm.compiler.hotspot.HotSpotCounterOp.asLong:(Ljdk/vm/ci/meta/JavaConstant;)J
            lstore 1 /* l */
        start local 1 // long l
         1: .line 177
            lload 1 /* l */
            invokestatic org.graalvm.compiler.core.common.NumUtil.isInt:(J)Z
            ifne 3
         2: .line 178
            new java.lang.StringBuilder
            dup
            ldc "value does not fit into int: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* l */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 180
      StackMap locals: long
      StackMap stack:
            lload 1 /* l */
            l2i
            ireturn
        end local 1 // long l
        end local 0 // jdk.vm.ci.meta.JavaConstant value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  value  Ljdk/vm/ci/meta/JavaConstant;
            1    4     1      l  J
    MethodParameters:
       Name  Flags
      value  

  public java.lang.String[] getNames();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
         0: .line 184
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.names:[Ljava/lang/String;
            areturn
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;

  public java.lang.String[] getGroups();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
         0: .line 188
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.HotSpotCounterOp.groups:[Ljava/lang/String;
            areturn
        end local 0 // org.graalvm.compiler.hotspot.HotSpotCounterOp this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/HotSpotCounterOp;

  static int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 50
            getstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic jdk.vm.ci.meta.JavaKind.values:()[Ljdk/vm/ci/meta/JavaKind;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Boolean:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Byte:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Char:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Double:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 8
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Float:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 6
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 11
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_5
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 7
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 9
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Short:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_3
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Void:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 10
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            dup
            putstatic org.graalvm.compiler.hotspot.HotSpotCounterOp.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[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
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
}
SourceFile: "HotSpotCounterOp.java"
NestMembers:
  org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure
InnerClasses:
  protected abstract CounterProcedure = org.graalvm.compiler.hotspot.HotSpotCounterOp$CounterProcedure of org.graalvm.compiler.hotspot.HotSpotCounterOp
  public abstract Alive = org.graalvm.compiler.lir.LIRInstruction$Alive of org.graalvm.compiler.lir.LIRInstruction
  public final OperandFlag = org.graalvm.compiler.lir.LIRInstruction$OperandFlag of org.graalvm.compiler.lir.LIRInstruction