public class org.graalvm.compiler.hotspot.replacements.MonitorSnippets implements org.graalvm.compiler.replacements.Snippets
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.replacements.MonitorSnippets
  super_class: java.lang.Object
{
  private static final boolean PROFILE_CONTEXT;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final boolean ENABLE_BREAKPOINT;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final org.graalvm.word.LocationIdentity MONITOR_COUNTER_LOCATION;
    descriptor: Lorg/graalvm/word/LocationIdentity;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.spi.ForeignCallDescriptor MONITORENTER;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.spi.ForeignCallDescriptor MONITOREXIT;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=0, args_size=0
         0: .line 617
            ldc "MonitorCounter"
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.mutable:(Ljava/lang/String;)Lorg/graalvm/compiler/nodes/NamedLocationIdentity;
            putstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
         1: .line 857
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "monitorenter"
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITORENTER:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         2: .line 858
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "monitorexit"
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            dup
            iconst_1
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOREXIT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            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 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets this
         0: .line 215
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets;

  static boolean doProfile(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 221
            getstatic org.graalvm.compiler.hotspot.replacements.HotspotSnippetsOptions.ProfileMonitors:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* options */
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  options  Lorg/graalvm/compiler/options/OptionValues;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    MethodParameters:
         Name  Flags
      options  

  public static void monitorenter(java.lang.Object, org.graalvm.compiler.hotspot.word.KlassPointer, int, jdk.vm.ci.code.Register, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/word/KlassPointer;ILjdk/vm/ci/code/Register;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=15, args_size=8
        start local 0 // java.lang.Object object
        start local 1 // org.graalvm.compiler.hotspot.word.KlassPointer hub
        start local 2 // int lockDepth
        start local 3 // jdk.vm.ci.code.Register threadRegister
        start local 4 // jdk.vm.ci.code.Register stackPointerRegister
        start local 5 // boolean trace
        start local 6 // org.graalvm.compiler.options.OptionValues options
        start local 7 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
         0: .line 227
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 230
            aload 0 /* object */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadWordFromObject:(Ljava/lang/Object;I)Lorg/graalvm/compiler/word/Word;
            astore 8 /* mark */
        start local 8 // org.graalvm.compiler.word.Word mark
         2: .line 232
            iload 2 /* lockDepth */
            invokestatic org.graalvm.compiler.hotspot.nodes.BeginLockScopeNode.beginLockScope:(I)Lorg/graalvm/compiler/word/Word;
            astore 9 /* lock */
        start local 9 // org.graalvm.compiler.word.Word lock
         3: .line 234
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 10 /* objectPointer */
        start local 10 // org.graalvm.word.Pointer objectPointer
         4: .line 235
            iload 5 /* trace */
            ldc "           object: 0x%016lx\n"
            aload 10 /* objectPointer */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         5: .line 236
            iload 5 /* trace */
            ldc "             lock: 0x%016lx\n"
            aload 9 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         6: .line 237
            iload 5 /* trace */
            ldc "             mark: 0x%016lx\n"
            aload 8 /* mark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         7: .line 239
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.incCounter:(Lorg/graalvm/compiler/options/OptionValues;)V
         8: .line 241
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useBiasedLocking:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)Z
            ifeq 11
         9: .line 242
            aload 0 /* object */
            aload 1 /* hub */
            aload 9 /* lock */
            aload 8 /* mark */
            aload 3 /* threadRegister */
            iload 5 /* trace */
            aload 6 /* options */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.tryEnterBiased:(Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/word/KlassPointer;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
            ifeq 11
        10: .line 243
            return
        11: .line 247
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.word.Pointer
      StackMap stack:
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.inlineFastLockSupported:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 14
            ldc 0.010000000000000009
            aload 8 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 14
        12: .line 249
            aload 0 /* object */
            aload 9 /* lock */
            aload 8 /* mark */
            aload 3 /* threadRegister */
            iload 5 /* trace */
            aload 6 /* options */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.tryEnterInflated:(Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
            ifeq 34
        13: .line 250
            return
        14: .line 254
      StackMap locals:
      StackMap stack:
            aload 8 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.unlockedMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.or:(I)Lorg/graalvm/compiler/word/Word;
            astore 11 /* unlockedMark */
        start local 11 // org.graalvm.compiler.word.Word unlockedMark
        15: .line 255
            iload 5 /* trace */
            ldc "     unlockedMark: 0x%016lx\n"
            aload 11 /* unlockedMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        16: .line 258
            aload 9 /* lock */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.lockDisplacedMarkOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 11 /* unlockedMark */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)V
        17: .line 261
            bipush 8
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(I)V
        18: .line 265
            aload 10 /* objectPointer */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 11 /* unlockedMark */
            aload 9 /* lock */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokeinterface org.graalvm.word.Pointer.compareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 12 /* currentMark */
        start local 12 // org.graalvm.compiler.word.Word currentMark
        19: .line 266
            ldc 0.99
            aload 12 /* currentMark */
            aload 11 /* unlockedMark */
            invokevirtual org.graalvm.compiler.word.Word.equal:(Lorg/graalvm/compiler/word/Word;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
        20: .line 267
            iload 5 /* trace */
            ldc "+lock{cas}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        21: .line 268
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockCas:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        22: .line 269
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.nodes.AcquiredCASLockNode.mark:(Ljava/lang/Object;)V
        23: .line 270
            return
        24: .line 272
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            iload 5 /* trace */
            ldc "      currentMark: 0x%016lx\n"
            aload 12 /* currentMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        25: .line 288
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            iconst_1
            isub
            invokestatic org.graalvm.word.WordFactory.unsigned:(I)Lorg/graalvm/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            astore 13 /* alignedMask */
        start local 13 // org.graalvm.compiler.word.Word alignedMask
        26: .line 289
            aload 4 /* stackPointerRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.config:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.stackBias:I
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 14 /* stackPointer */
        start local 14 // org.graalvm.compiler.word.Word stackPointer
        27: .line 290
            ldc 0.99
            aload 12 /* currentMark */
            aload 14 /* stackPointer */
            invokevirtual org.graalvm.compiler.word.Word.subtract:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            aload 13 /* alignedMask */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.pageSize:()I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.and:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 32
        28: .line 292
            aload 9 /* lock */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.lockDisplacedMarkOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)V
        29: .line 293
            iload 5 /* trace */
            ldc "+lock{cas:recursive}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        30: .line 294
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockCasRecursive:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        31: .line 295
            return
        32: .line 297
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            iload 5 /* trace */
            ldc "+lock{stub:failed-cas/stack}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        33: .line 298
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockStubFailedCas:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        end local 14 // org.graalvm.compiler.word.Word stackPointer
        end local 13 // org.graalvm.compiler.word.Word alignedMask
        end local 12 // org.graalvm.compiler.word.Word currentMark
        end local 11 // org.graalvm.compiler.word.Word unlockedMark
        34: .line 302
      StackMap locals: java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer int jdk.vm.ci.code.Register jdk.vm.ci.code.Register int org.graalvm.compiler.options.OptionValues org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.word.Pointer
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITORENTER:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 9 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorenterStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
        35: .line 303
            return
        end local 10 // org.graalvm.word.Pointer objectPointer
        end local 9 // org.graalvm.compiler.word.Word lock
        end local 8 // org.graalvm.compiler.word.Word mark
        end local 7 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
        end local 6 // org.graalvm.compiler.options.OptionValues options
        end local 5 // boolean trace
        end local 4 // jdk.vm.ci.code.Register stackPointerRegister
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // int lockDepth
        end local 1 // org.graalvm.compiler.hotspot.word.KlassPointer hub
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   36     0                object  Ljava/lang/Object;
            0   36     1                   hub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            0   36     2             lockDepth  I
            0   36     3        threadRegister  Ljdk/vm/ci/code/Register;
            0   36     4  stackPointerRegister  Ljdk/vm/ci/code/Register;
            0   36     5                 trace  Z
            0   36     6               options  Lorg/graalvm/compiler/options/OptionValues;
            0   36     7              counters  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;
            2   36     8                  mark  Lorg/graalvm/compiler/word/Word;
            3   36     9                  lock  Lorg/graalvm/compiler/word/Word;
            4   36    10         objectPointer  Lorg/graalvm/word/Pointer;
           15   34    11          unlockedMark  Lorg/graalvm/compiler/word/Word;
           19   34    12           currentMark  Lorg/graalvm/compiler/word/Word;
           26   34    13           alignedMask  Lorg/graalvm/compiler/word/Word;
           27   34    14          stackPointer  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                      Name  Flags
      object                
      hub                   
      lockDepth             
      threadRegister        
      stackPointerRegister  
      trace                 
      options               
      counters              

  private static boolean tryEnterBiased(java.lang.Object, org.graalvm.compiler.hotspot.word.KlassPointer, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/word/KlassPointer;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=15, args_size=8
        start local 0 // java.lang.Object object
        start local 1 // org.graalvm.compiler.hotspot.word.KlassPointer hub
        start local 2 // org.graalvm.compiler.word.Word lock
        start local 3 // org.graalvm.compiler.word.Word mark
        start local 4 // jdk.vm.ci.code.Register threadRegister
        start local 5 // boolean trace
        start local 6 // org.graalvm.compiler.options.OptionValues options
        start local 7 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
         0: .line 310
            aload 3 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            astore 8 /* biasableLockBits */
        start local 8 // org.graalvm.compiler.word.Word biasableLockBits
         1: .line 314
            aload 1 /* hub */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.prototypeMarkWordOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.PROTOTYPE_MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/word/Word;
            astore 9 /* prototypeMarkWord */
        start local 9 // org.graalvm.compiler.word.Word prototypeMarkWord
         2: .line 315
            aload 4 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 10 /* thread */
        start local 10 // org.graalvm.compiler.word.Word thread
         3: .line 316
            aload 9 /* prototypeMarkWord */
            aload 10 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.or:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            aload 3 /* mark */
            invokevirtual org.graalvm.compiler.word.Word.xor:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.ageMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iconst_m1
            ixor
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            astore 11 /* tmp */
        start local 11 // org.graalvm.compiler.word.Word tmp
         4: .line 317
            iload 5 /* trace */
            ldc "prototypeMarkWord: 0x%016lx\n"
            aload 9 /* prototypeMarkWord */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         5: .line 318
            iload 5 /* trace */
            ldc "           thread: 0x%016lx\n"
            aload 10 /* thread */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         6: .line 319
            iload 5 /* trace */
            ldc "              tmp: 0x%016lx\n"
            aload 11 /* tmp */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         7: .line 320
            ldc 0.99
            aload 11 /* tmp */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 12
         8: .line 322
            iload 5 /* trace */
            ldc "+lock{bias:existing}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
         9: .line 323
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockBiasExisting:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        10: .line 324
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.nodes.FastAcquireBiasedLockNode.mark:(Ljava/lang/Object;)V
        11: .line 325
            iconst_1
            ireturn
        12: .line 329
      StackMap locals: java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word jdk.vm.ci.code.Register int org.graalvm.compiler.options.OptionValues org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            ldc 0.09999999999999998
            aload 8 /* biasableLockBits */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockPattern:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokestatic org.graalvm.word.WordFactory.unsigned:(I)Lorg/graalvm/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            invokevirtual org.graalvm.compiler.word.Word.equal:(Lorg/graalvm/compiler/word/Word;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 40
        13: .line 330
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 12 /* objectPointer */
        start local 12 // org.graalvm.word.Pointer objectPointer
        14: .line 340
            ldc 0.9
            aload 11 /* tmp */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 37
        15: .line 350
            ldc 0.9
            aload 11 /* tmp */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.epochMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 27
        16: .line 357
            aload 3 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.ageMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            ior
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.epochMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            ior
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            astore 13 /* unbiasedMark */
        start local 13 // org.graalvm.compiler.word.Word unbiasedMark
        17: .line 358
            aload 13 /* unbiasedMark */
            aload 10 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.or:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 14 /* biasedMark */
        start local 14 // org.graalvm.compiler.word.Word biasedMark
        18: .line 359
            iload 5 /* trace */
            ldc "     unbiasedMark: 0x%016lx\n"
            aload 13 /* unbiasedMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        19: .line 360
            iload 5 /* trace */
            ldc "       biasedMark: 0x%016lx\n"
            aload 14 /* biasedMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        20: .line 361
            ldc 0.999
            aload 12 /* objectPointer */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 13 /* unbiasedMark */
            aload 14 /* biasedMark */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokeinterface org.graalvm.word.Pointer.logicCompareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
        21: .line 363
            iload 5 /* trace */
            ldc "+lock{bias:acquired}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        22: .line 364
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockBiasAcquired:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        23: .line 365
            iconst_1
            ireturn
        24: .line 370
      StackMap locals: org.graalvm.word.Pointer org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            iload 5 /* trace */
            ldc "+lock{stub:revoke}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        25: .line 371
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockStubRevoke:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        end local 14 // org.graalvm.compiler.word.Word biasedMark
        end local 13 // org.graalvm.compiler.word.Word unbiasedMark
        26: .line 372
            goto 35
        27: .line 379
      StackMap locals:
      StackMap stack:
            aload 9 /* prototypeMarkWord */
            aload 10 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.or:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 13 /* biasedMark */
        start local 13 // org.graalvm.compiler.word.Word biasedMark
        28: .line 380
            iload 5 /* trace */
            ldc "       biasedMark: 0x%016lx\n"
            aload 13 /* biasedMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        29: .line 381
            ldc 0.999
            aload 12 /* objectPointer */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 3 /* mark */
            aload 13 /* biasedMark */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokeinterface org.graalvm.word.Pointer.logicCompareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 33
        30: .line 383
            iload 5 /* trace */
            ldc "+lock{bias:transfer}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        31: .line 384
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockBiasTransfer:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        32: .line 385
            iconst_1
            ireturn
        33: .line 390
      StackMap locals: org.graalvm.compiler.word.Word
      StackMap stack:
            iload 5 /* trace */
            ldc "+lock{stub:epoch-expired}"
            aload 0 /* object */
            iconst_1
            aload 6 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        34: .line 391
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.lockStubEpochExpired:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        end local 13 // org.graalvm.compiler.word.Word biasedMark
        35: .line 394
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITORENTER:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 2 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorenterStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
        36: .line 395
            iconst_1
            ireturn
        37: .line 405
      StackMap locals:
      StackMap stack:
            aload 12 /* objectPointer */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 3 /* mark */
            aload 9 /* prototypeMarkWord */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokeinterface org.graalvm.word.Pointer.compareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 13 /* result */
        start local 13 // org.graalvm.compiler.word.Word result
        38: .line 414
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.revokeBias:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        39: .line 415
            iconst_0
            ireturn
        end local 13 // org.graalvm.compiler.word.Word result
        end local 12 // org.graalvm.word.Pointer objectPointer
        40: .line 419
      StackMap locals:
      StackMap stack:
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unbiasable:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        41: .line 420
            iconst_0
            ireturn
        end local 11 // org.graalvm.compiler.word.Word tmp
        end local 10 // org.graalvm.compiler.word.Word thread
        end local 9 // org.graalvm.compiler.word.Word prototypeMarkWord
        end local 8 // org.graalvm.compiler.word.Word biasableLockBits
        end local 7 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
        end local 6 // org.graalvm.compiler.options.OptionValues options
        end local 5 // boolean trace
        end local 4 // jdk.vm.ci.code.Register threadRegister
        end local 3 // org.graalvm.compiler.word.Word mark
        end local 2 // org.graalvm.compiler.word.Word lock
        end local 1 // org.graalvm.compiler.hotspot.word.KlassPointer hub
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   42     0             object  Ljava/lang/Object;
            0   42     1                hub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            0   42     2               lock  Lorg/graalvm/compiler/word/Word;
            0   42     3               mark  Lorg/graalvm/compiler/word/Word;
            0   42     4     threadRegister  Ljdk/vm/ci/code/Register;
            0   42     5              trace  Z
            0   42     6            options  Lorg/graalvm/compiler/options/OptionValues;
            0   42     7           counters  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;
            1   42     8   biasableLockBits  Lorg/graalvm/compiler/word/Word;
            2   42     9  prototypeMarkWord  Lorg/graalvm/compiler/word/Word;
            3   42    10             thread  Lorg/graalvm/compiler/word/Word;
            4   42    11                tmp  Lorg/graalvm/compiler/word/Word;
           14   40    12      objectPointer  Lorg/graalvm/word/Pointer;
           17   26    13       unbiasedMark  Lorg/graalvm/compiler/word/Word;
           18   26    14         biasedMark  Lorg/graalvm/compiler/word/Word;
           28   35    13         biasedMark  Lorg/graalvm/compiler/word/Word;
           38   40    13             result  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
                Name  Flags
      object          
      hub             
      lock            
      mark            
      threadRegister  
      trace           
      options         
      counters        

  public static boolean useFastInflatedLocking(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 426
            getstatic org.graalvm.compiler.hotspot.replacements.HotspotSnippetsOptions.SimpleFastInflatedLocking:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* options */
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  options  Lorg/graalvm/compiler/options/OptionValues;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    MethodParameters:
         Name  Flags
      options  

  private static boolean inlineFastLockSupported(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 430
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            aload 0 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.inlineFastLockSupported:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Lorg/graalvm/compiler/options/OptionValues;)Z
            ireturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  options  Lorg/graalvm/compiler/options/OptionValues;
    MethodParameters:
         Name  Flags
      options  

  private static boolean inlineFastLockSupported(org.graalvm.compiler.hotspot.GraalHotSpotVMConfig, org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        start local 1 // org.graalvm.compiler.options.OptionValues options
         0: .line 434
            aload 1 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.useFastInflatedLocking:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 1
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 1
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorOwnerOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0   config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            0    2     1  options  Lorg/graalvm/compiler/options/OptionValues;
    MethodParameters:
         Name  Flags
      config   
      options  

  private static boolean tryEnterInflated(java.lang.Object, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=10, args_size=7
        start local 0 // java.lang.Object object
        start local 1 // org.graalvm.compiler.word.Word lock
        start local 2 // org.graalvm.compiler.word.Word mark
        start local 3 // jdk.vm.ci.code.Register threadRegister
        start local 4 // boolean trace
        start local 5 // org.graalvm.compiler.options.OptionValues options
        start local 6 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
         0: .line 439
            aload 1 /* lock */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.lockDisplacedMarkOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 1 /* lock */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)V
         1: .line 441
            aload 2 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 7 /* monitor */
        start local 7 // org.graalvm.compiler.word.Word monitor
         2: .line 442
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorOwnerOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 8 /* ownerOffset */
        start local 8 // int ownerOffset
         3: .line 443
            aload 7 /* monitor */
            iload 8 /* ownerOffset */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_OWNER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 9 /* owner */
        start local 9 // org.graalvm.compiler.word.Word owner
         4: .line 444
            ldc 0.9
            aload 9 /* owner */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 12
         5: .line 446
            ldc 0.9
            aload 7 /* monitor */
            iload 8 /* ownerOffset */
            aload 9 /* owner */
            aload 3 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_OWNER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.logicCompareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 9
         6: .line 448
            iload 4 /* trace */
            ldc "+lock{inflated:cas}"
            aload 0 /* object */
            iconst_1
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
         7: .line 449
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.inflatedCas:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         8: .line 450
            iconst_1
            ireturn
         9: .line 452
      StackMap locals: org.graalvm.compiler.word.Word int org.graalvm.compiler.word.Word
      StackMap stack:
            iload 4 /* trace */
            ldc "+lock{stub:inflated:failed-cas}"
            aload 0 /* object */
            iconst_1
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        10: .line 453
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.inflatedFailedCas:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        11: .line 455
            goto 14
        12: .line 456
      StackMap locals:
      StackMap stack:
            iload 4 /* trace */
            ldc "+lock{stub:inflated:owned}"
            aload 0 /* object */
            iconst_1
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        13: .line 457
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.inflatedOwned:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        14: .line 459
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 9 // org.graalvm.compiler.word.Word owner
        end local 8 // int ownerOffset
        end local 7 // org.graalvm.compiler.word.Word monitor
        end local 6 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
        end local 5 // org.graalvm.compiler.options.OptionValues options
        end local 4 // boolean trace
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // org.graalvm.compiler.word.Word mark
        end local 1 // org.graalvm.compiler.word.Word lock
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0          object  Ljava/lang/Object;
            0   15     1            lock  Lorg/graalvm/compiler/word/Word;
            0   15     2            mark  Lorg/graalvm/compiler/word/Word;
            0   15     3  threadRegister  Ljdk/vm/ci/code/Register;
            0   15     4           trace  Z
            0   15     5         options  Lorg/graalvm/compiler/options/OptionValues;
            0   15     6        counters  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;
            2   15     7         monitor  Lorg/graalvm/compiler/word/Word;
            3   15     8     ownerOffset  I
            4   15     9           owner  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
                Name  Flags
      object          
      lock            
      mark            
      threadRegister  
      trace           
      options         
      counters        

  public static void monitorenterStub(java.lang.Object, int, boolean, org.graalvm.compiler.options.OptionValues);
    descriptor: (Ljava/lang/Object;IZLorg/graalvm/compiler/options/OptionValues;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // java.lang.Object object
        start local 1 // int lockDepth
        start local 2 // boolean trace
        start local 3 // org.graalvm.compiler.options.OptionValues options
         0: .line 467
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 468
            aload 3 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.incCounter:(Lorg/graalvm/compiler/options/OptionValues;)V
         2: .line 469
            aload 0 /* object */
            ifnonnull 4
         3: .line 470
            getstatic jdk.vm.ci.meta.DeoptimizationAction.InvalidateReprofile:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.NullCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
         4: .line 474
      StackMap locals:
      StackMap stack:
            iload 1 /* lockDepth */
            invokestatic org.graalvm.compiler.hotspot.nodes.BeginLockScopeNode.beginLockScope:(I)Lorg/graalvm/compiler/word/Word;
            astore 4 /* lock */
        start local 4 // org.graalvm.compiler.word.Word lock
         5: .line 475
            iload 2 /* trace */
            ldc "+lock{stub}"
            aload 0 /* object */
            iconst_1
            aload 3 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
         6: .line 476
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITORENTER:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 4 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorenterStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
         7: .line 477
            return
        end local 4 // org.graalvm.compiler.word.Word lock
        end local 3 // org.graalvm.compiler.options.OptionValues options
        end local 2 // boolean trace
        end local 1 // int lockDepth
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0     object  Ljava/lang/Object;
            0    8     1  lockDepth  I
            0    8     2      trace  Z
            0    8     3    options  Lorg/graalvm/compiler/options/OptionValues;
            5    8     4       lock  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
           Name  Flags
      object     
      lockDepth  
      trace      
      options    

  public static void monitorexit(java.lang.Object, int, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=10, args_size=6
        start local 0 // java.lang.Object object
        start local 1 // int lockDepth
        start local 2 // jdk.vm.ci.code.Register threadRegister
        start local 3 // boolean trace
        start local 4 // org.graalvm.compiler.options.OptionValues options
        start local 5 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
         0: .line 482
            iload 3 /* trace */
            ldc "           object: 0x%016lx\n"
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         1: .line 483
            aload 0 /* object */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadWordFromObject:(Ljava/lang/Object;I)Lorg/graalvm/compiler/word/Word;
            astore 6 /* mark */
        start local 6 // org.graalvm.compiler.word.Word mark
         2: .line 484
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useBiasedLocking:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)Z
            ifeq 10
         3: .line 491
            iload 3 /* trace */
            ldc "             mark: 0x%016lx\n"
            aload 6 /* mark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
         4: .line 492
            ldc 0.9
            aload 6 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockMaskInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.biasedLockPattern:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokestatic org.graalvm.word.WordFactory.unsigned:(I)Lorg/graalvm/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            invokevirtual org.graalvm.compiler.word.Word.equal:(Lorg/graalvm/compiler/word/Word;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 10
         5: .line 493
            invokestatic org.graalvm.compiler.hotspot.nodes.EndLockScopeNode.endLockScope:()V
         6: .line 494
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.decCounter:(Lorg/graalvm/compiler/options/OptionValues;)V
         7: .line 495
            iload 3 /* trace */
            ldc "-lock{bias}"
            aload 0 /* object */
            iconst_0
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
         8: .line 496
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockBias:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         9: .line 497
            return
        10: .line 501
      StackMap locals: org.graalvm.compiler.word.Word
      StackMap stack:
            iload 1 /* lockDepth */
            invokestatic org.graalvm.compiler.hotspot.nodes.CurrentLockNode.currentLock:(I)Lorg/graalvm/compiler/word/Word;
            astore 7 /* lock */
        start local 7 // org.graalvm.compiler.word.Word lock
        11: .line 504
            aload 7 /* lock */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.lockDisplacedMarkOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 8 /* displacedMark */
        start local 8 // org.graalvm.compiler.word.Word displacedMark
        12: .line 505
            iload 3 /* trace */
            ldc "    displacedMark: 0x%016lx\n"
            aload 8 /* displacedMark */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.trace:(ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
        13: .line 507
            ldc 0.4
            aload 8 /* displacedMark */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 17
        14: .line 509
            iload 3 /* trace */
            ldc "-lock{recursive}"
            aload 0 /* object */
            iconst_0
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        15: .line 510
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockCasRecursive:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        16: .line 511
            goto 27
        17: .line 512
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            aload 0 /* object */
            aload 6 /* mark */
            aload 7 /* lock */
            aload 2 /* threadRegister */
            iload 3 /* trace */
            aload 4 /* options */
            aload 5 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.tryExitInflated:(Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
            ifne 27
        18: .line 513
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 518
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 9 /* objectPointer */
        start local 9 // org.graalvm.word.Pointer objectPointer
        20: .line 519
            ldc 0.999
            aload 9 /* objectPointer */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.markOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            aload 7 /* lock */
            aload 8 /* displacedMark */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokeinterface org.graalvm.word.Pointer.logicCompareAndSwapWord:(ILorg/graalvm/word/WordBase;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/LocationIdentity;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
        21: .line 520
            iload 3 /* trace */
            ldc "-lock{cas}"
            aload 0 /* object */
            iconst_0
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        22: .line 521
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockCas:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        23: .line 522
            goto 27
        24: .line 524
      StackMap locals: org.graalvm.word.Pointer
      StackMap stack:
            iload 3 /* trace */
            ldc "-lock{stub}"
            aload 0 /* object */
            iconst_0
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        25: .line 525
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockStub:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        26: .line 526
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOREXIT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 7 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorexitStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
        end local 9 // org.graalvm.word.Pointer objectPointer
        27: .line 530
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.compiler.hotspot.nodes.EndLockScopeNode.endLockScope:()V
        28: .line 531
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.decCounter:(Lorg/graalvm/compiler/options/OptionValues;)V
        29: .line 532
            return
        end local 8 // org.graalvm.compiler.word.Word displacedMark
        end local 7 // org.graalvm.compiler.word.Word lock
        end local 6 // org.graalvm.compiler.word.Word mark
        end local 5 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
        end local 4 // org.graalvm.compiler.options.OptionValues options
        end local 3 // boolean trace
        end local 2 // jdk.vm.ci.code.Register threadRegister
        end local 1 // int lockDepth
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   30     0          object  Ljava/lang/Object;
            0   30     1       lockDepth  I
            0   30     2  threadRegister  Ljdk/vm/ci/code/Register;
            0   30     3           trace  Z
            0   30     4         options  Lorg/graalvm/compiler/options/OptionValues;
            0   30     5        counters  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;
            2   30     6            mark  Lorg/graalvm/compiler/word/Word;
           11   30     7            lock  Lorg/graalvm/compiler/word/Word;
           12   30     8   displacedMark  Lorg/graalvm/compiler/word/Word;
           20   27     9   objectPointer  Lorg/graalvm/word/Pointer;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      object          
      lockDepth       
      threadRegister  
      trace           
      options         
      counters        

  private static boolean inlineFastUnlockSupported(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 535
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            aload 0 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.inlineFastUnlockSupported:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Lorg/graalvm/compiler/options/OptionValues;)Z
            ireturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  options  Lorg/graalvm/compiler/options/OptionValues;
    MethodParameters:
         Name  Flags
      options  

  private static boolean inlineFastUnlockSupported(org.graalvm.compiler.hotspot.GraalHotSpotVMConfig, org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        start local 1 // org.graalvm.compiler.options.OptionValues options
         0: .line 539
            aload 1 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.useFastInflatedLocking:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 3
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorEntryListOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 3
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorCxqOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 3
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 3
         1: .line 540
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorOwnerOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iflt 3
            aload 0 /* config */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorRecursionsOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
         2: .line 539
            iflt 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0   config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            0    4     1  options  Lorg/graalvm/compiler/options/OptionValues;
    MethodParameters:
         Name  Flags
      config   
      options  

  private static boolean tryExitInflated(java.lang.Object, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Ljdk/vm/ci/code/Register;ZLorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=17, args_size=7
        start local 0 // java.lang.Object object
        start local 1 // org.graalvm.compiler.word.Word mark
        start local 2 // org.graalvm.compiler.word.Word lock
        start local 3 // jdk.vm.ci.code.Register threadRegister
        start local 4 // boolean trace
        start local 5 // org.graalvm.compiler.options.OptionValues options
        start local 6 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
         0: .line 544
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.inlineFastUnlockSupported:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifne 2
         1: .line 545
            iconst_0
            ireturn
         2: .line 547
      StackMap locals:
      StackMap stack:
            ldc 0.010000000000000009
            aload 1 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.and:(I)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
         3: .line 550
            aload 1 /* mark */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.monitorMask:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 7 /* monitor */
        start local 7 // org.graalvm.compiler.word.Word monitor
         4: .line 551
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorOwnerOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 8 /* ownerOffset */
        start local 8 // int ownerOffset
         5: .line 552
            aload 7 /* monitor */
            iload 8 /* ownerOffset */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_OWNER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 9 /* owner */
        start local 9 // org.graalvm.compiler.word.Word owner
         6: .line 553
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorRecursionsOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 10 /* recursionsOffset */
        start local 10 // int recursionsOffset
         7: .line 554
            aload 7 /* monitor */
            iload 10 /* recursionsOffset */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_RECURSION_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 11 /* recursions */
        start local 11 // org.graalvm.compiler.word.Word recursions
         8: .line 555
            aload 3 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 12 /* thread */
        start local 12 // org.graalvm.compiler.word.Word thread
         9: .line 556
            ldc 0.99
            aload 9 /* owner */
            aload 12 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.xor:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            aload 11 /* recursions */
            invokevirtual org.graalvm.compiler.word.Word.or:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 20
        10: .line 558
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorCxqOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 13 /* cxqOffset */
        start local 13 // int cxqOffset
        11: .line 559
            aload 7 /* monitor */
            iload 13 /* cxqOffset */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_CXQ_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 14 /* cxq */
        start local 14 // org.graalvm.compiler.word.Word cxq
        12: .line 560
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorEntryListOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 15 /* entryListOffset */
        start local 15 // int entryListOffset
        13: .line 561
            aload 7 /* monitor */
            iload 15 /* entryListOffset */
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJECT_MONITOR_ENTRY_LIST_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readWord:(ILorg/graalvm/word/LocationIdentity;)Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 16 /* entryList */
        start local 16 // org.graalvm.compiler.word.Word entryList
        14: .line 562
            ldc 0.9
            aload 14 /* cxq */
            aload 16 /* entryList */
            invokevirtual org.graalvm.compiler.word.Word.or:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.equal:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 20
        15: .line 566
            bipush 10
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(I)V
        16: .line 567
            aload 7 /* monitor */
            iload 8 /* ownerOffset */
            invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/word/WordBase;)V
        17: .line 568
            iload 4 /* trace */
            ldc "-lock{inflated:simple}"
            aload 0 /* object */
            iconst_0
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        18: .line 569
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockInflatedSimple:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        19: .line 570
            iconst_1
            ireturn
        end local 16 // org.graalvm.compiler.word.Word entryList
        end local 15 // int entryListOffset
        end local 14 // org.graalvm.compiler.word.Word cxq
        end local 13 // int cxqOffset
        20: .line 573
      StackMap locals: java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word jdk.vm.ci.code.Register int org.graalvm.compiler.options.OptionValues org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters org.graalvm.compiler.word.Word int org.graalvm.compiler.word.Word int org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters.unlockStubInflated:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        21: .line 574
            iload 4 /* trace */
            ldc "-lock{stub:inflated}"
            aload 0 /* object */
            iconst_0
            aload 5 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
        22: .line 575
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOREXIT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 2 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorexitStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
        23: .line 576
            iconst_1
            ireturn
        end local 12 // org.graalvm.compiler.word.Word thread
        end local 11 // org.graalvm.compiler.word.Word recursions
        end local 10 // int recursionsOffset
        end local 9 // org.graalvm.compiler.word.Word owner
        end local 8 // int ownerOffset
        end local 7 // org.graalvm.compiler.word.Word monitor
        24: .line 578
      StackMap locals: java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word jdk.vm.ci.code.Register int org.graalvm.compiler.options.OptionValues org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters
      StackMap stack:
            iconst_0
            ireturn
        end local 6 // org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters counters
        end local 5 // org.graalvm.compiler.options.OptionValues options
        end local 4 // boolean trace
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // org.graalvm.compiler.word.Word lock
        end local 1 // org.graalvm.compiler.word.Word mark
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   25     0            object  Ljava/lang/Object;
            0   25     1              mark  Lorg/graalvm/compiler/word/Word;
            0   25     2              lock  Lorg/graalvm/compiler/word/Word;
            0   25     3    threadRegister  Ljdk/vm/ci/code/Register;
            0   25     4             trace  Z
            0   25     5           options  Lorg/graalvm/compiler/options/OptionValues;
            0   25     6          counters  Lorg/graalvm/compiler/hotspot/replacements/MonitorSnippets$Counters;
            4   24     7           monitor  Lorg/graalvm/compiler/word/Word;
            5   24     8       ownerOffset  I
            6   24     9             owner  Lorg/graalvm/compiler/word/Word;
            7   24    10  recursionsOffset  I
            8   24    11        recursions  Lorg/graalvm/compiler/word/Word;
            9   24    12            thread  Lorg/graalvm/compiler/word/Word;
           11   20    13         cxqOffset  I
           12   20    14               cxq  Lorg/graalvm/compiler/word/Word;
           13   20    15   entryListOffset  I
           14   20    16         entryList  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
                Name  Flags
      object          
      mark            
      lock            
      threadRegister  
      trace           
      options         
      counters        

  public static void monitorexitStub(java.lang.Object, int, boolean, org.graalvm.compiler.options.OptionValues);
    descriptor: (Ljava/lang/Object;IZLorg/graalvm/compiler/options/OptionValues;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // java.lang.Object object
        start local 1 // int lockDepth
        start local 2 // boolean trace
        start local 3 // org.graalvm.compiler.options.OptionValues options
         0: .line 586
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 587
            iload 2 /* trace */
            ldc "-lock{stub}"
            aload 0 /* object */
            iconst_0
            aload 3 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.traceObject:(ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
         2: .line 588
            iload 1 /* lockDepth */
            invokestatic org.graalvm.compiler.hotspot.nodes.CurrentLockNode.currentLock:(I)Lorg/graalvm/compiler/word/Word;
            astore 4 /* lock */
        start local 4 // org.graalvm.compiler.word.Word lock
         3: .line 589
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOREXIT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* object */
            aload 4 /* lock */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.monitorexitStubC:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
         4: .line 590
            invokestatic org.graalvm.compiler.hotspot.nodes.EndLockScopeNode.endLockScope:()V
         5: .line 591
            aload 3 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.decCounter:(Lorg/graalvm/compiler/options/OptionValues;)V
         6: .line 592
            return
        end local 4 // org.graalvm.compiler.word.Word lock
        end local 3 // org.graalvm.compiler.options.OptionValues options
        end local 2 // boolean trace
        end local 1 // int lockDepth
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0     object  Ljava/lang/Object;
            0    7     1  lockDepth  I
            0    7     2      trace  Z
            0    7     3    options  Lorg/graalvm/compiler/options/OptionValues;
            3    7     4       lock  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
           Name  Flags
      object     
      lockDepth  
      trace      
      options    

  public static void traceObject(boolean, java.lang.String, java.lang.Object, boolean, org.graalvm.compiler.options.OptionValues);
    descriptor: (ZLjava/lang/String;Ljava/lang/Object;ZLorg/graalvm/compiler/options/OptionValues;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // boolean enabled
        start local 1 // java.lang.String action
        start local 2 // java.lang.Object object
        start local 3 // boolean enter
        start local 4 // org.graalvm.compiler.options.OptionValues options
         0: .line 595
            aload 4 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.doProfile:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 4
         1: .line 596
            aload 1 /* action */
            iload 3 /* enter */
            ifeq 2
            ldc "number of monitor enters"
            goto 3
      StackMap locals:
      StackMap stack: java.lang.String
         2: ldc "number of monitor exits"
      StackMap locals: int java.lang.String java.lang.Object int org.graalvm.compiler.options.OptionValues
      StackMap stack: java.lang.String java.lang.String
         3: lconst_1
            iconst_0
            invokestatic org.graalvm.compiler.nodes.debug.DynamicCounterNode.counter:(Ljava/lang/String;Ljava/lang/String;JZ)V
         4: .line 598
      StackMap locals:
      StackMap stack:
            iload 0 /* enabled */
            ifeq 8
         5: .line 599
            aload 1 /* action */
            invokestatic org.graalvm.compiler.replacements.Log.print:(Ljava/lang/String;)V
         6: .line 600
            bipush 32
            invokestatic org.graalvm.compiler.replacements.Log.print:(C)V
         7: .line 601
            aload 2 /* object */
            invokestatic org.graalvm.compiler.replacements.Log.printlnObject:(Ljava/lang/Object;)V
         8: .line 603
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.compiler.options.OptionValues options
        end local 3 // boolean enter
        end local 2 // java.lang.Object object
        end local 1 // java.lang.String action
        end local 0 // boolean enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0  enabled  Z
            0    9     1   action  Ljava/lang/String;
            0    9     2   object  Ljava/lang/Object;
            0    9     3    enter  Z
            0    9     4  options  Lorg/graalvm/compiler/options/OptionValues;
    MethodParameters:
         Name  Flags
      enabled  
      action   
      object   
      enter    
      options  

  public static void trace(boolean, java.lang.String, org.graalvm.word.WordBase);
    descriptor: (ZLjava/lang/String;Lorg/graalvm/word/WordBase;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // boolean enabled
        start local 1 // java.lang.String format
        start local 2 // org.graalvm.word.WordBase value
         0: .line 606
            iload 0 /* enabled */
            ifeq 2
         1: .line 607
            aload 1 /* format */
            aload 2 /* value */
            invokeinterface org.graalvm.word.WordBase.rawValue:()J
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;J)V
         2: .line 609
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.graalvm.word.WordBase value
        end local 1 // java.lang.String format
        end local 0 // boolean enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  enabled  Z
            0    3     1   format  Ljava/lang/String;
            0    3     2    value  Lorg/graalvm/word/WordBase;
    MethodParameters:
         Name  Flags
      enabled  
      format   
      value    

  static native void bkpt(java.lang.Object, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/BreakpointNode;)
    MethodParameters:
        Name  Flags
      object  
      mark    
      tmp     
      value   

  static boolean verifyBalancedMonitors(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 624
            getstatic org.graalvm.compiler.hotspot.replacements.HotspotSnippetsOptions.VerifyBalancedMonitors:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* options */
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  options  Lorg/graalvm/compiler/options/OptionValues;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    MethodParameters:
         Name  Flags
      options  

  public static void incCounter(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 628
            aload 0 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.verifyBalancedMonitors:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 4
         1: .line 629
            invokestatic org.graalvm.compiler.hotspot.nodes.MonitorCounterNode.counter:()Lorg/graalvm/compiler/word/Word;
            astore 1 /* counter */
        start local 1 // org.graalvm.compiler.word.Word counter
         2: .line 630
            aload 1 /* counter */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readInt:(ILorg/graalvm/word/LocationIdentity;)I
            istore 2 /* count */
        start local 2 // int count
         3: .line 631
            aload 1 /* counter */
            iconst_0
            iload 2 /* count */
            iconst_1
            iadd
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeInt:(IILorg/graalvm/word/LocationIdentity;)V
        end local 2 // int count
        end local 1 // org.graalvm.compiler.word.Word counter
         4: .line 633
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  options  Lorg/graalvm/compiler/options/OptionValues;
            2    4     1  counter  Lorg/graalvm/compiler/word/Word;
            3    4     2    count  I
    MethodParameters:
         Name  Flags
      options  

  public static void decCounter(org.graalvm.compiler.options.OptionValues);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.options.OptionValues options
         0: .line 636
            aload 0 /* options */
            invokestatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.verifyBalancedMonitors:(Lorg/graalvm/compiler/options/OptionValues;)Z
            ifeq 4
         1: .line 637
            invokestatic org.graalvm.compiler.hotspot.nodes.MonitorCounterNode.counter:()Lorg/graalvm/compiler/word/Word;
            astore 1 /* counter */
        start local 1 // org.graalvm.compiler.word.Word counter
         2: .line 638
            aload 1 /* counter */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readInt:(ILorg/graalvm/word/LocationIdentity;)I
            istore 2 /* count */
        start local 2 // int count
         3: .line 639
            aload 1 /* counter */
            iconst_0
            iload 2 /* count */
            iconst_1
            isub
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeInt:(IILorg/graalvm/word/LocationIdentity;)V
        end local 2 // int count
        end local 1 // org.graalvm.compiler.word.Word counter
         4: .line 641
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  options  Lorg/graalvm/compiler/options/OptionValues;
            2    4     1  counter  Lorg/graalvm/compiler/word/Word;
            3    4     2    count  I
    MethodParameters:
         Name  Flags
      options  

  private static void initCounter();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 645
            invokestatic org.graalvm.compiler.hotspot.nodes.MonitorCounterNode.counter:()Lorg/graalvm/compiler/word/Word;
            astore 0 /* counter */
        start local 0 // org.graalvm.compiler.word.Word counter
         1: .line 646
            aload 0 /* counter */
            iconst_0
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeInt:(IILorg/graalvm/word/LocationIdentity;)V
         2: .line 647
            return
        end local 0 // org.graalvm.compiler.word.Word counter
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            1    3     0  counter  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()

  private static void checkCounter(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String errMsg
         0: .line 651
            invokestatic org.graalvm.compiler.hotspot.nodes.MonitorCounterNode.counter:()Lorg/graalvm/compiler/word/Word;
            astore 1 /* counter */
        start local 1 // org.graalvm.compiler.word.Word counter
         1: .line 652
            aload 1 /* counter */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.MonitorSnippets.MONITOR_COUNTER_LOCATION:Lorg/graalvm/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readInt:(ILorg/graalvm/word/LocationIdentity;)I
            istore 2 /* count */
        start local 2 // int count
         2: .line 653
            iload 2 /* count */
            ifeq 4
         3: .line 654
            aload 0 /* errMsg */
            iload 2 /* count */
            i2l
            invokestatic org.graalvm.compiler.hotspot.nodes.VMErrorNode.vmError:(Ljava/lang/String;J)V
         4: .line 656
      StackMap locals: org.graalvm.compiler.word.Word int
      StackMap stack:
            return
        end local 2 // int count
        end local 1 // org.graalvm.compiler.word.Word counter
        end local 0 // java.lang.String errMsg
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0   errMsg  Ljava/lang/String;
            1    5     1  counter  Lorg/graalvm/compiler/word/Word;
            2    5     2    count  I
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
        Name  Flags
      errMsg  

  private static native void monitorenterStubC(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, java.lang.Object, org.graalvm.compiler.word.Word);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;)
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
      1:
      2:
    MethodParameters:
            Name  Flags
      descriptor  
      object      
      lock        

  public static native void monitorexitStubC(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, java.lang.Object, org.graalvm.compiler.word.Word);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Lorg/graalvm/compiler/word/Word;)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;)
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
      1:
      2:
    MethodParameters:
            Name  Flags
      descriptor  
      object      
      lock        
}
SourceFile: "MonitorSnippets.java"
NestMembers:
  org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters  org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Templates
InnerClasses:
  public abstract ConstantParameter = org.graalvm.compiler.api.replacements.Snippet$ConstantParameter of org.graalvm.compiler.api.replacements.Snippet
  public abstract ConstantNodeParameter = org.graalvm.compiler.graph.Node$ConstantNodeParameter of org.graalvm.compiler.graph.Node
  public abstract NodeIntrinsic = org.graalvm.compiler.graph.Node$NodeIntrinsic of org.graalvm.compiler.graph.Node
  public Counters = org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Counters of org.graalvm.compiler.hotspot.replacements.MonitorSnippets
  public Templates = org.graalvm.compiler.hotspot.replacements.MonitorSnippets$Templates of org.graalvm.compiler.hotspot.replacements.MonitorSnippets