public class com.oracle.svm.core.monitor.MonitorSnippets extends com.oracle.svm.core.graal.snippets.SubstrateTemplates implements org.graalvm.compiler.replacements.Snippets
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.monitor.MonitorSnippets
  super_class: com.oracle.svm.core.graal.snippets.SubstrateTemplates
{
  protected static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor SLOW_PATH_MONITOR_ENTER;
    descriptor: Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor SLOW_PATH_MONITOR_EXIT;
    descriptor: Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[] FOREIGN_CALLS;
    descriptor: [Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=0, args_size=0
         0: .line 82
            ldc Lcom/oracle/svm/core/monitor/MultiThreadedMonitorSupport;
            ldc "slowPathMonitorEnter"
            iconst_0
            iconst_1
            anewarray org.graalvm.word.LocationIdentity
            dup
            iconst_0
         1: .line 83
            invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
            aastore
         2: .line 82
            invokestatic com.oracle.svm.core.snippets.SnippetRuntime.findForeignCall:(Ljava/lang/Class;Ljava/lang/String;Z[Lorg/graalvm/word/LocationIdentity;)Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            putstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_ENTER:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
         3: .line 84
            ldc Lcom/oracle/svm/core/monitor/MultiThreadedMonitorSupport;
            ldc "slowPathMonitorExit"
            iconst_0
            iconst_1
            anewarray org.graalvm.word.LocationIdentity
            dup
            iconst_0
         4: .line 85
            invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
            aastore
         5: .line 84
            invokestatic com.oracle.svm.core.snippets.SnippetRuntime.findForeignCall:(Ljava/lang/Class;Ljava/lang/String;Z[Lorg/graalvm/word/LocationIdentity;)Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            putstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_EXIT:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
         6: .line 87
            iconst_2
            anewarray com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor
            dup
            iconst_0
            getstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_ENTER:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            aastore
            dup
            iconst_1
            getstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_EXIT:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            aastore
            putstatic com.oracle.svm.core.monitor.MonitorSnippets.FOREIGN_CALLS:[Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected static void monitorEnterSnippet(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 92
            invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
            invokestatic com.oracle.svm.core.graal.nodes.KillMemoryNode.killMemory:(Lorg/graalvm/word/LocationIdentity;)V
         1: .line 94
            getstatic com.oracle.svm.core.SubstrateOptions.MultiThreaded:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 3
         2: .line 95
            getstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_ENTER:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            aload 0 /* obj */
            invokestatic com.oracle.svm.core.monitor.MonitorSnippets.callSlowPath:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
         3: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   obj  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
      Name  Flags
      obj   

  protected static void monitorExitSnippet(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 102
            invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
            invokestatic com.oracle.svm.core.graal.nodes.KillMemoryNode.killMemory:(Lorg/graalvm/word/LocationIdentity;)V
         1: .line 104
            getstatic com.oracle.svm.core.SubstrateOptions.MultiThreaded:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 3
         2: .line 105
            getstatic com.oracle.svm.core.monitor.MonitorSnippets.SLOW_PATH_MONITOR_EXIT:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            aload 0 /* obj */
            invokestatic com.oracle.svm.core.monitor.MonitorSnippets.callSlowPath:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
         3: .line 107
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   obj  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
      Name  Flags
      obj   

  protected static native void callSlowPath(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, java.lang.Object);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
    flags: (0x010c) ACC_PROTECTED, 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:
    MethodParameters:
            Name  Flags
      descriptor  
      obj         

  protected void <init>(org.graalvm.compiler.options.OptionValues, java.lang.Iterable<org.graalvm.compiler.debug.DebugHandlersFactory>, org.graalvm.compiler.phases.util.Providers, org.graalvm.compiler.api.replacements.SnippetReflectionProvider);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.svm.core.monitor.MonitorSnippets this
        start local 1 // org.graalvm.compiler.options.OptionValues options
        start local 2 // java.lang.Iterable factories
        start local 3 // org.graalvm.compiler.phases.util.Providers providers
        start local 4 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
         0: .line 113
            aload 0 /* this */
            aload 1 /* options */
            aload 2 /* factories */
            aload 3 /* providers */
            aload 4 /* snippetReflection */
            invokespecial com.oracle.svm.core.graal.snippets.SubstrateTemplates.<init>:(Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;)V
         1: .line 114
            return
        end local 4 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
        end local 3 // org.graalvm.compiler.phases.util.Providers providers
        end local 2 // java.lang.Iterable factories
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // com.oracle.svm.core.monitor.MonitorSnippets this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lcom/oracle/svm/core/monitor/MonitorSnippets;
            0    2     1            options  Lorg/graalvm/compiler/options/OptionValues;
            0    2     2          factories  Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;
            0    2     3          providers  Lorg/graalvm/compiler/phases/util/Providers;
            0    2     4  snippetReflection  Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
    Signature: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;)V
    MethodParameters:
                   Name  Flags
      options            
      factories          
      providers          
      snippetReflection  

  protected void registerLowerings(java.util.Map<java.lang.Class<? extends org.graalvm.compiler.graph.Node>, com.oracle.svm.core.graal.snippets.NodeLoweringProvider<?>>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.svm.core.monitor.MonitorSnippets this
        start local 1 // java.util.Map lowerings
         0: .line 117
            new com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering
            dup
            aload 0 /* this */
            invokespecial com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering.<init>:(Lcom/oracle/svm/core/monitor/MonitorSnippets;)V
            astore 2 /* lowering */
        start local 2 // com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering lowering
         1: .line 118
            aload 1 /* lowerings */
            ldc Lorg/graalvm/compiler/nodes/java/MonitorEnterNode;
            aload 2 /* lowering */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 119
            aload 1 /* lowerings */
            ldc Lorg/graalvm/compiler/nodes/java/MonitorExitNode;
            aload 2 /* lowering */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 120
            return
        end local 2 // com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering lowering
        end local 1 // java.util.Map lowerings
        end local 0 // com.oracle.svm.core.monitor.MonitorSnippets this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/oracle/svm/core/monitor/MonitorSnippets;
            0    4     1  lowerings  Ljava/util/Map<Ljava/lang/Class<+Lorg/graalvm/compiler/graph/Node;>;Lcom/oracle/svm/core/graal/snippets/NodeLoweringProvider<*>;>;
            1    4     2   lowering  Lcom/oracle/svm/core/monitor/MonitorSnippets$MonitorLowering;
    Signature: (Ljava/util/Map<Ljava/lang/Class<+Lorg/graalvm/compiler/graph/Node;>;Lcom/oracle/svm/core/graal/snippets/NodeLoweringProvider<*>;>;)V
    MethodParameters:
           Name  Flags
      lowerings  

  static org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo access$0(com.oracle.svm.core.monitor.MonitorSnippets, java.lang.Class, java.lang.String, org.graalvm.word.LocationIdentity[]);
    descriptor: (Lcom/oracle/svm/core/monitor/MonitorSnippets;Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            invokevirtual com.oracle.svm.core.monitor.MonitorSnippets.snippet:(Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static org.graalvm.compiler.phases.util.Providers access$1(com.oracle.svm.core.monitor.MonitorSnippets);
    descriptor: (Lcom/oracle/svm/core/monitor/MonitorSnippets;)Lorg/graalvm/compiler/phases/util/Providers;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 80
            aload 0
            getfield com.oracle.svm.core.monitor.MonitorSnippets.providers:Lorg/graalvm/compiler/phases/util/Providers;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "MonitorSnippets.java"
NestMembers:
  com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering
InnerClasses:
  protected MonitorLowering = com.oracle.svm.core.monitor.MonitorSnippets$MonitorLowering of com.oracle.svm.core.monitor.MonitorSnippets
  public SubstrateForeignCallDescriptor = com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor of com.oracle.svm.core.snippets.SnippetRuntime
  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 abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate