public abstract class org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl implements org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl
  super_class: java.lang.Object
{
  public static final jdk.internal.vm.compiler.word.LocationIdentity[] NO_LOCATIONS;
    descriptor: [Ljdk/internal/vm/compiler/word/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor OSR_MIGRATION_END;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor IDENTITY_HASHCODE;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor VERIFY_OOP;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor LOAD_AND_CLEAR_EXCEPTION;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor TEST_DEOPTIMIZE_CALL_INT;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  protected final jdk.vm.ci.hotspot.HotSpotJVMCIRuntime jvmciRuntime;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

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

  protected final jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.core.common.spi.ForeignCallSignature, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage> foreignCalls;
    descriptor: Ljdk/internal/vm/compiler/collections/EconomicMap;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;>;

  protected final jdk.internal.vm.compiler.collections.EconomicMap<org.graalvm.compiler.core.common.spi.ForeignCallSignature, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor> signatureMap;
    descriptor: Ljdk/internal/vm/compiler/collections/EconomicMap;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljdk/internal/vm/compiler/collections/EconomicMap<Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;>;

  protected final jdk.vm.ci.meta.MetaAccessProvider metaAccess;
    descriptor: Ljdk/vm/ci/meta/MetaAccessProvider;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

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

  protected final org.graalvm.compiler.word.WordTypes wordTypes;
    descriptor: Lorg/graalvm/compiler/word/WordTypes;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  public static final boolean PREPEND_THREAD;
    descriptor: Z
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final boolean DONT_PREPEND_THREAD;
    descriptor: Z
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=11, locals=0, args_size=0
         0: .line 67
            ldc Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
         3: .line 69
            iconst_0
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.NO_LOCATIONS:[Ljdk/internal/vm/compiler/word/LocationIdentity;
         4: .line 71
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.LEAF_NO_VZERO:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability.NOT_REEXECUTABLE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.NO_LOCATIONS:[Ljdk/internal/vm/compiler/word/LocationIdentity;
            ldc "OSR_migration_end"
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            aastore
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;[Ljdk/internal/vm/compiler/word/LocationIdentity;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.OSR_MIGRATION_END:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
         5: .line 72
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.SAFEPOINT:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability.NOT_REEXECUTABLE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.MARK_WORD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            ldc "identity_hashcode"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
         6: .line 73
            ldc Ljava/lang/Object;
         7: .line 72
            aastore
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;Ljdk/internal/vm/compiler/word/LocationIdentity;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.IDENTITY_HASHCODE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
         8: .line 74
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.LEAF_NO_VZERO:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability.REEXECUTABLE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.NO_LOCATIONS:[Ljdk/internal/vm/compiler/word/LocationIdentity;
            ldc "verify_oop"
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
         9: .line 75
            ldc Ljava/lang/Object;
        10: .line 74
            aastore
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;[Ljdk/internal/vm/compiler/word/LocationIdentity;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.VERIFY_OOP:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
        11: .line 76
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.LEAF_NO_VZERO:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability.NOT_REEXECUTABLE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            ldc "load_and_clear_exception"
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
        12: .line 77
            ldc Lorg/graalvm/compiler/word/Word;
        13: .line 76
            aastore
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;Ljdk/internal/vm/compiler/word/LocationIdentity;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.LOAD_AND_CLEAR_EXCEPTION:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
        14: .line 79
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.SAFEPOINT:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability.REEXECUTABLE:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            ldc "test_deoptimize_call_int"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;Ljdk/internal/vm/compiler/word/LocationIdentity;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.TEST_DEOPTIMIZE_CALL_INT:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
        15: .line 193
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.vm.ci.hotspot.HotSpotJVMCIRuntime, org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider, jdk.vm.ci.meta.MetaAccessProvider, jdk.vm.ci.code.CodeCacheProvider, org.graalvm.compiler.word.WordTypes);
    descriptor: (Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/CodeCacheProvider;Lorg/graalvm/compiler/word/WordTypes;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime jvmciRuntime
        start local 2 // org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider runtime
        start local 3 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        start local 4 // jdk.vm.ci.code.CodeCacheProvider codeCache
        start local 5 // org.graalvm.compiler.word.WordTypes wordTypes
         0: .line 90
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 84
            aload 0 /* this */
            invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:()Ljdk/internal/vm/compiler/collections/EconomicMap;
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
         2: .line 85
            aload 0 /* this */
            invokestatic jdk.internal.vm.compiler.collections.EconomicMap.create:()Ljdk/internal/vm/compiler/collections/EconomicMap;
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.signatureMap:Ljdk/internal/vm/compiler/collections/EconomicMap;
         3: .line 92
            aload 0 /* this */
            aload 1 /* jvmciRuntime */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.jvmciRuntime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
         4: .line 93
            aload 0 /* this */
            aload 2 /* runtime */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.runtime:Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;
         5: .line 94
            aload 0 /* this */
            aload 3 /* metaAccess */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         6: .line 95
            aload 0 /* this */
            aload 4 /* codeCache */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
         7: .line 96
            aload 0 /* this */
            aload 5 /* wordTypes */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
         8: .line 97
            return
        end local 5 // org.graalvm.compiler.word.WordTypes wordTypes
        end local 4 // jdk.vm.ci.code.CodeCacheProvider codeCache
        end local 3 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 2 // org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider runtime
        end local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime jvmciRuntime
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    9     1  jvmciRuntime  Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
            0    9     2       runtime  Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;
            0    9     3    metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            0    9     4     codeCache  Ljdk/vm/ci/code/CodeCacheProvider;
            0    9     5     wordTypes  Lorg/graalvm/compiler/word/WordTypes;
    MethodParameters:
              Name  Flags
      jvmciRuntime  
      runtime       
      metaAccess    
      codeCache     
      wordTypes     

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage register(org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage);
    descriptor: (Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
         0: .line 103
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getSignature:()Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "already registered linkage for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getSignature:()Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            aload 1 /* linkage */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 105
            aload 1 /* linkage */
            areturn
        end local 1 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    3     1  linkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    MethodParameters:
         Name  Flags
      linkage  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage registerStubCall(org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect);
    descriptor: (Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        start local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
         0: .line 116
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         1: .line 117
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
         2: .line 118
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
         3: .line 119
            aload 0 /* this */
         4: .line 120
            aload 1 /* descriptor */
         5: .line 121
            lconst_0
            aload 2 /* effect */
         6: .line 122
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.JavaCall:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
         7: .line 123
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.JavaCallee:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
         8: .line 116
            invokestatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkageImpl.create:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/CodeCacheProvider;Lorg/graalvm/compiler/word/WordTypes;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProvider;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;JLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/code/CallingConvention$Type;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            areturn
        end local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
        end local 1 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    9     1  descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            0    9     2      effect  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
    MethodParameters:
            Name  Flags
      descriptor  
      effect      

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage registerStubCall(org.graalvm.compiler.core.common.spi.ForeignCallSignature, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect, jdk.internal.vm.compiler.word.LocationIdentity[]);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition transition
        start local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability reexecutability
        start local 4 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
        start local 5 // jdk.internal.vm.compiler.word.LocationIdentity[] killedLocations
         0: .line 132
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            aload 1 /* signature */
            aload 2 /* transition */
            aload 3 /* reexecutability */
            aload 5 /* killedLocations */
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;[Ljdk/internal/vm/compiler/word/LocationIdentity;)V
            astore 6 /* descriptor */
        start local 6 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
         1: .line 133
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.signatureMap:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* signature */
            aload 6 /* descriptor */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 134
            aload 0 /* this */
            aload 6 /* descriptor */
            aload 4 /* effect */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.registerStubCall:(Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            areturn
        end local 6 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 5 // jdk.internal.vm.compiler.word.LocationIdentity[] killedLocations
        end local 4 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
        end local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability reexecutability
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition transition
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    3     1        signature  Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            0    3     2       transition  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            0    3     3  reexecutability  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            0    3     4           effect  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
            0    3     5  killedLocations  [Ljdk/internal/vm/compiler/word/LocationIdentity;
            1    3     6       descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    MethodParameters:
                 Name  Flags
      signature        
      transition       
      reexecutability  
      effect           
      killedLocations  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage registerForeignCall(org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor, long, jdk.vm.ci.code.CallingConvention$Type);
    descriptor: (Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;JLjdk/vm/ci/code/CallingConvention$Type;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=6, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        start local 2 // long address
        start local 4 // jdk.vm.ci.code.CallingConvention$Type outgoingCcType
         0: .line 150
            lload 2 /* address */
            lconst_0
            lcmp
            ifne 2
         1: .line 151
            new java.lang.IllegalArgumentException
            dup
            ldc "address must be non-zero"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            astore 5 /* resultType */
        start local 5 // java.lang.Class resultType
         3: .line 154
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 5
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getTransition:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition.SAFEPOINT:Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            if_acmpne 5
            aload 5 /* resultType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 5
            ldc Lorg/graalvm/compiler/word/Word;
            aload 5 /* resultType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 5
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "non-leaf foreign calls must return objects in thread local storage: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 155
            aload 1 /* descriptor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         5: .line 156
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         6: .line 157
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
         7: .line 158
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
         8: .line 159
            aload 0 /* this */
         9: .line 160
            aload 1 /* descriptor */
        10: .line 161
            lload 2 /* address */
        11: .line 162
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect.DESTROYS_ALL_CALLER_SAVE_REGISTERS:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
        12: .line 163
            aload 4 /* outgoingCcType */
        13: .line 164
            aconst_null
        14: .line 156
            invokestatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkageImpl.create:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/code/CodeCacheProvider;Lorg/graalvm/compiler/word/WordTypes;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProvider;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;JLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/code/CallingConvention$Type;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            areturn
        end local 5 // java.lang.Class resultType
        end local 4 // jdk.vm.ci.code.CallingConvention$Type outgoingCcType
        end local 2 // long address
        end local 1 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0   15     1      descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            0   15     2         address  J
            0   15     4  outgoingCcType  Ljdk/vm/ci/code/CallingConvention$Type;
            3   15     5      resultType  Ljava/lang/Class<*>;
    MethodParameters:
                Name  Flags
      descriptor      
      address         
      outgoingCcType  

  public void linkForeignCall(org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.meta.HotSpotProviders, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor, long, boolean);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;JZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=10, args_size=6
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.options.OptionValues options
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        start local 4 // long address
        start local 6 // boolean prependThread
         0: .line 182
            lload 4 /* address */
            lconst_0
            lcmp
            ifeq 7
         1: .line 183
            new org.graalvm.compiler.hotspot.stubs.ForeignCallStub
            dup
            aload 1 /* options */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.jvmciRuntime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
            aload 2 /* providers */
            lload 4 /* address */
            aload 3 /* descriptor */
            iload 6 /* prependThread */
            invokespecial org.graalvm.compiler.hotspot.stubs.ForeignCallStub.<init>:(Lorg/graalvm/compiler/options/OptionValues;Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;JLorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;Z)V
            astore 7 /* stub */
        start local 7 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub stub
         2: .line 184
            aload 7 /* stub */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.getLinkage:()Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            astore 8 /* linkage */
        start local 8 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
         3: .line 185
            aload 7 /* stub */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.getTargetLinkage:()Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            astore 9 /* targetLinkage */
        start local 9 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage targetLinkage
         4: .line 186
            aload 8 /* linkage */
            aload 7 /* stub */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.setCompiledStub:(Lorg/graalvm/compiler/hotspot/stubs/Stub;)V
         5: .line 187
            aload 0 /* this */
            aload 8 /* linkage */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            pop
         6: .line 188
            aload 0 /* this */
            aload 9 /* targetLinkage */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            pop
        end local 9 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage targetLinkage
        end local 8 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
        end local 7 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub stub
         7: .line 190
      StackMap locals:
      StackMap stack:
            return
        end local 6 // boolean prependThread
        end local 4 // long address
        end local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    8     1        options  Lorg/graalvm/compiler/options/OptionValues;
            0    8     2      providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0    8     3     descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            0    8     4        address  J
            0    8     6  prependThread  Z
            2    7     7           stub  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            3    7     8        linkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            4    7     9  targetLinkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    MethodParameters:
               Name  Flags
      options        
      providers      
      descriptor     
      address        
      prependThread  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage lookupForeignCall(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 197
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
            ifnonnull 1
            new java.lang.AssertionError
            dup
            aload 1 /* descriptor */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getSignature:()Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            astore 2 /* callTarget */
        start local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage callTarget
         2: .line 199
            aload 2 /* callTarget */
            ifnonnull 4
         3: .line 200
            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 org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 202
      StackMap locals: org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
      StackMap stack:
            aload 2 /* callTarget */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.runtime:Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider.getHostBackend:()Lorg/graalvm/compiler/hotspot/HotSpotBackend;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.finalizeAddress:(Lorg/graalvm/compiler/core/target/Backend;)V
         5: .line 203
            aload 2 /* callTarget */
            areturn
        end local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage callTarget
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    6     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            2    6     2  callTarget  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    MethodParameters:
            Name  Flags
      descriptor  

  public org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor getDescriptor(org.graalvm.compiler.core.common.spi.ForeignCallSignature);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;)Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
         0: .line 208
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.signatureMap:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* signature */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            astore 2 /* descriptor */
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
         1: .line 209
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 2
            aload 2 /* descriptor */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            aload 1 /* signature */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 210
      StackMap locals: org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
      StackMap stack:
            aload 2 /* descriptor */
            areturn
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    3     1   signature  Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            1    3     2  descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    MethodParameters:
           Name  Flags
      signature  

  org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor createDescriptor(org.graalvm.compiler.core.common.spi.ForeignCallSignature, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability, jdk.internal.vm.compiler.word.LocationIdentity[]);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    flags: (0x0080) ACC_VARARGS
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition transition
        start local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability reexecutability
        start local 4 // jdk.internal.vm.compiler.word.LocationIdentity[] killLocations
         0: .line 214
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.signatureMap:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* signature */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 215
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            aload 1 /* signature */
            aload 2 /* transition */
            aload 3 /* reexecutability */
            aload 4 /* killLocations */
            invokespecial org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;[Ljdk/internal/vm/compiler/word/LocationIdentity;)V
            astore 5 /* descriptor */
        start local 5 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
         2: .line 216
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.signatureMap:Ljdk/internal/vm/compiler/collections/EconomicMap;
            aload 1 /* signature */
            aload 5 /* descriptor */
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 217
            aload 5 /* descriptor */
            areturn
        end local 5 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 4 // jdk.internal.vm.compiler.word.LocationIdentity[] killLocations
        end local 3 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability reexecutability
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition transition
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallSignature signature
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    4     1        signature  Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;
            0    4     2       transition  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            0    4     3  reexecutability  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            0    4     4    killLocations  [Ljdk/internal/vm/compiler/word/LocationIdentity;
            2    4     5       descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    MethodParameters:
                 Name  Flags
      signature        
      transition       
      reexecutability  
      killLocations    

  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 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // jdk.vm.ci.meta.JavaKind javaKind
         0: .line 222
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
            invokeinterface jdk.vm.ci.code.CodeCacheProvider.getTarget:()Ljdk/vm/ci/code/TargetDescription;
            getfield jdk.vm.ci.code.TargetDescription.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 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    1     1  javaKind  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
          Name  Flags
      javaKind  

  public java.util.List<org.graalvm.compiler.hotspot.stubs.Stub> getStubs();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
         0: .line 227
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* stubs */
        start local 1 // java.util.List stubs
         1: .line 228
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Ljdk/internal/vm/compiler/collections/EconomicMap;
            invokeinterface jdk.internal.vm.compiler.collections.EconomicMap.getValues:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            astore 2 /* linkage */
        start local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
         3: .line 229
            aload 2 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.isCompiledStub:()Z
            ifeq 7
         4: .line 230
            aload 2 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getStub:()Lorg/graalvm/compiler/hotspot/stubs/Stub;
            astore 4 /* stub */
        start local 4 // org.graalvm.compiler.hotspot.stubs.Stub stub
         5: .line 231
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 6
            aload 4 /* stub */
            ifnonnull 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 232
      StackMap locals: org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl java.util.List org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage java.util.Iterator org.graalvm.compiler.hotspot.stubs.Stub
      StackMap stack:
            aload 1 /* stubs */
            aload 4 /* stub */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // org.graalvm.compiler.hotspot.stubs.Stub stub
        end local 2 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
         7: .line 228
      StackMap locals: org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 235
            aload 1 /* stubs */
            areturn
        end local 1 // java.util.List stubs
        end local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            1    9     1    stubs  Ljava/util/List<Lorg/graalvm/compiler/hotspot/stubs/Stub;>;
            3    7     2  linkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            5    7     4     stub  Lorg/graalvm/compiler/hotspot/stubs/Stub;
    Signature: ()Ljava/util/List<Lorg/graalvm/compiler/hotspot/stubs/Stub;>;

  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 org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.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.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: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.getDescriptor:(Lorg/graalvm/compiler/core/common/spi/ForeignCallSignature;)Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            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 org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.lookupForeignCall:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "HotSpotForeignCallsProviderImpl.java"
InnerClasses:
  public abstract Type = jdk.vm.ci.code.CallingConvention$Type of jdk.vm.ci.code.CallingConvention
  public final RegisterEffect = org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect of org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
  public final Reexecutability = org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Reexecutability of org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
  public final Transition = org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor$Transition of org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor