public class com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider implements org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider
  super_class: java.lang.Object
{
  private final java.util.Map<org.graalvm.compiler.core.common.spi.ForeignCallSignature, com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage> foreignCalls;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;>;

  protected org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup arrayCopyLookup;
    descriptor: Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.foreignCalls:Ljava/util/Map;
         2: .line 57
            return
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.Platforms(value = {Lorg/graalvm/nativeimage/Platform$HOSTED_ONLY;})

  public java.util.Map<org.graalvm.compiler.core.common.spi.ForeignCallSignature, com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage> getForeignCalls();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
         0: .line 60
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.foreignCalls:Ljava/util/Map;
            areturn
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
    Signature: ()Ljava/util/Map<Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;>;

  public void register(org.graalvm.compiler.phases.util.Providers, com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[]);
    descriptor: (Lorg/graalvm/compiler/phases/util/Providers;[Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // org.graalvm.compiler.phases.util.Providers providers
        start local 2 // com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[] descriptors
         0: .line 64
            aload 2 /* descriptors */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 5
      StackMap locals: com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider org.graalvm.compiler.phases.util.Providers com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[] top int int com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* descriptor */
        start local 3 // com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor descriptor
         2: .line 65
            new com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage
            dup
            aload 1 /* providers */
            aload 3 /* descriptor */
            invokespecial com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage.<init>:(Lorg/graalvm/compiler/phases/util/Providers;Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;)V
            astore 7 /* linkage */
        start local 7 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage linkage
         3: .line 66
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.foreignCalls:Ljava/util/Map;
            aload 3 /* descriptor */
            invokevirtual com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor.getSignature:()Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            aload 7 /* linkage */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage linkage
        end local 3 // com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor descriptor
         4: .line 64
            iinc 4 1
      StackMap locals:
      StackMap stack:
         5: iload 4
            iload 5
            if_icmplt 1
         6: .line 68
            return
        end local 2 // com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[] descriptors
        end local 1 // org.graalvm.compiler.phases.util.Providers providers
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    7     1    providers  Lorg/graalvm/compiler/phases/util/Providers;
            0    7     2  descriptors  [Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            2    4     3   descriptor  Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            3    4     7      linkage  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;
    MethodParameters:
             Name  Flags
      providers    
      descriptors  

  public com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage lookupForeignCall(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 72
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.foreignCalls:Ljava/util/Map;
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getSignature:()Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage
            astore 2 /* callTarget */
        start local 2 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage callTarget
         1: .line 73
            aload 2 /* callTarget */
            ifnonnull 3
         2: .line 74
            new java.lang.StringBuilder
            dup
            ldc "missing implementation for runtime call: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* descriptor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         3: .line 76
      StackMap locals: com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage
      StackMap stack:
            aload 2 /* callTarget */
            areturn
        end local 2 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage callTarget
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    4     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            1    4     2  callTarget  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;
    MethodParameters:
            Name  Flags
      descriptor  

  public org.graalvm.compiler.core.common.spi.ForeignCallDescriptor getDescriptor(org.graalvm.compiler.core.common.spi.ForeignCallSignature);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
         0: .line 81
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.foreignCalls:Ljava/util/Map;
            aload 1 /* signature */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage
            astore 2 /* linkage */
        start local 2 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage linkage
         1: .line 82
            aload 2 /* linkage */
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage.getDescriptor:()Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
            areturn
        end local 2 // com.oracle.svm.core.graal.meta.SubstrateForeignCallLinkage linkage
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    2     1  signature  Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            1    2     2    linkage  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;
    MethodParameters:
           Name  Flags
      signature  

  public org.graalvm.compiler.core.common.LIRKind getValueKind(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/LIRKind;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // jdk.vm.ci.meta.JavaKind javaKind
         0: .line 87
            ldc Lcom/oracle/svm/core/SubstrateTargetDescription;
            invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.svm.core.SubstrateTargetDescription
            getfield com.oracle.svm.core.SubstrateTargetDescription.arch:Ljdk/vm/ci/code/Architecture;
            aload 1 /* javaKind */
            invokestatic org.graalvm.compiler.core.common.LIRKind.fromJavaKind:(Ljdk/vm/ci/code/Architecture;Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/LIRKind;
            areturn
        end local 1 // jdk.vm.ci.meta.JavaKind javaKind
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    1     1  javaKind  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
          Name  Flags
      javaKind  

  public void registerArrayCopyForeignCallsDelegate(org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup arraycopyForeignCalls
         0: .line 91
            aload 0 /* this */
            aload 1 /* arraycopyForeignCalls */
            putfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.arrayCopyLookup:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
         1: .line 92
            return
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup arraycopyForeignCalls
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    2     0                   this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    2     1  arraycopyForeignCalls  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
    MethodParameters:
                       Name  Flags
      arraycopyForeignCalls  

  public org.graalvm.compiler.core.common.spi.ForeignCallDescriptor lookupCheckcastArraycopyDescriptor(boolean);
    descriptor: (Z)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // boolean uninit
         0: .line 96
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.arrayCopyLookup:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
            ifnull 2
         1: .line 97
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.arrayCopyLookup:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
            iload 1 /* uninit */
            invokeinterface org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup.lookupCheckcastArraycopyDescriptor:(Z)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            areturn
         2: .line 99
      StackMap locals:
      StackMap stack:
            ldc "Fast checkcast ArrayCopy not supported yet."
            invokestatic com.oracle.svm.core.util.VMError.unsupportedFeature:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // boolean uninit
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    3     1  uninit  Z
    MethodParameters:
        Name  Flags
      uninit  

  public org.graalvm.compiler.core.common.spi.ForeignCallDescriptor lookupArraycopyDescriptor(jdk.vm.ci.meta.JavaKind, boolean, boolean, boolean, org.graalvm.word.LocationIdentity);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;ZZZLorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
        start local 1 // jdk.vm.ci.meta.JavaKind kind
        start local 2 // boolean aligned
        start local 3 // boolean disjoint
        start local 4 // boolean uninit
        start local 5 // org.graalvm.word.LocationIdentity killedLocation
         0: .line 105
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.arrayCopyLookup:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
            ifnull 2
         1: .line 106
            aload 0 /* this */
            getfield com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.arrayCopyLookup:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyLookup;
            aload 1 /* kind */
            iload 2 /* aligned */
            iload 3 /* disjoint */
            iload 4 /* uninit */
            aload 5 /* killedLocation */
            invokeinterface org.graalvm.compiler.replacements.arraycopy.ArrayCopyLookup.lookupArraycopyDescriptor:(Ljdk/vm/ci/meta/JavaKind;ZZZLorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            areturn
         2: .line 108
      StackMap locals:
      StackMap stack:
            ldc "Fast ArrayCopy not supported yet."
            invokestatic com.oracle.svm.core.util.VMError.unsupportedFeature:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // org.graalvm.word.LocationIdentity killedLocation
        end local 4 // boolean uninit
        end local 3 // boolean disjoint
        end local 2 // boolean aligned
        end local 1 // jdk.vm.ci.meta.JavaKind kind
        end local 0 // com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallsProvider;
            0    3     1            kind  Ljdk/vm/ci/meta/JavaKind;
            0    3     2         aligned  Z
            0    3     3        disjoint  Z
            0    3     4          uninit  Z
            0    3     5  killedLocation  Lorg/graalvm/word/LocationIdentity;
    MethodParameters:
                Name  Flags
      kind            
      aligned         
      disjoint        
      uninit          
      killedLocation  

  public jdk.vm.ci.meta.ValueKind getValueKind(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)Ljdk/vm/ci/meta/ValueKind;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.getValueKind:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/LIRKind;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.graalvm.compiler.core.common.spi.ForeignCallLinkage lookupForeignCall(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Lorg/graalvm/compiler/core/common/spi/ForeignCallLinkage;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.svm.core.graal.meta.SubstrateForeignCallsProvider.lookupForeignCall:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Lcom/oracle/svm/core/graal/meta/SubstrateForeignCallLinkage;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "SubstrateForeignCallsProvider.java"
InnerClasses:
  public SubstrateForeignCallDescriptor = com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor of com.oracle.svm.core.snippets.SnippetRuntime