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 org.graalvm.compiler.core.common.spi.ForeignCallDescriptor OSR_MIGRATION_END;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

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

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

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

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

  protected final jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider jvmciRuntime;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
    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 org.graalvm.util.EconomicMap<org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage> foreignCalls;
    descriptor: Lorg/graalvm/util/EconomicMap;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;>;

  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

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

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

  public static final org.graalvm.word.LocationIdentity[] NO_LOCATIONS;
    descriptor: [Lorg/graalvm/word/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  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=8, locals=0, args_size=0
         0: .line 57
            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 59
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            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.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.OSR_MIGRATION_END:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         4: .line 60
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "identity_hashcode"
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.IDENTITY_HASHCODE:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         5: .line 61
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "verify_oop"
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.VERIFY_OOP:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         6: .line 62
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "load_and_clear_exception"
            ldc Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.LOAD_AND_CLEAR_EXCEPTION:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         7: .line 64
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            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.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.TEST_DEOPTIMIZE_CALL_INT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
         8: .line 165
            iconst_0
            anewarray org.graalvm.word.LocationIdentity
            putstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.NO_LOCATIONS:[Lorg/graalvm/word/LocationIdentity;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider, 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/HotSpotJVMCIRuntimeProvider;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.HotSpotJVMCIRuntimeProvider 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 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            invokestatic org.graalvm.util.EconomicMap.create:()Lorg/graalvm/util/EconomicMap;
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
         2: .line 76
            aload 0 /* this */
            aload 1 /* jvmciRuntime */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.jvmciRuntime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
         3: .line 77
            aload 0 /* this */
            aload 2 /* runtime */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.runtime:Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;
         4: .line 78
            aload 0 /* this */
            aload 3 /* metaAccess */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         5: .line 79
            aload 0 /* this */
            aload 4 /* codeCache */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
         6: .line 80
            aload 0 /* this */
            aload 5 /* wordTypes */
            putfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
         7: .line 81
            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.HotSpotJVMCIRuntimeProvider jvmciRuntime
        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  jvmciRuntime  Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
            0    8     2       runtime  Lorg/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider;
            0    8     3    metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            0    8     4     codeCache  Ljdk/vm/ci/code/CodeCacheProvider;
            0    8     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 87
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            invokeinterface org.graalvm.util.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/core/common/spi/ForeignCallDescriptor;
            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 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 1 /* linkage */
            invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 89
            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 boolean isRegistered(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Z
    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 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 96
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ireturn
        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    1     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    1     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage registerStubCall(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, boolean, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition, org.graalvm.word.LocationIdentity[]);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;ZLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;[Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=14, locals=5, args_size=5
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        start local 2 // boolean reexecutable
        start local 3 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        start local 4 // org.graalvm.word.LocationIdentity[] killedLocations
         0: .line 110
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
            aload 0 /* this */
            aload 1 /* descriptor */
            lconst_0
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect.PRESERVES_REGISTERS:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.JavaCall:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.JavaCallee:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
            aload 3 /* transition */
            iload 2 /* reexecutable */
         1: .line 111
            aload 4 /* killedLocations */
         2: .line 110
            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/core/common/spi/ForeignCallDescriptor;JLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/code/CallingConvention$Type;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;Z[Lorg/graalvm/word/LocationIdentity;)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 4 // org.graalvm.word.LocationIdentity[] killedLocations
        end local 3 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        end local 2 // boolean reexecutable
        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    3     0             this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    3     1       descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            0    3     2     reexecutable  Z
            0    3     3       transition  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;
            0    3     4  killedLocations  [Lorg/graalvm/word/LocationIdentity;
    MethodParameters:
                 Name  Flags
      descriptor       
      reexecutable     
      transition       
      killedLocations  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage registerForeignCall(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, long, jdk.vm.ci.code.CallingConvention$Type, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition, boolean, org.graalvm.word.LocationIdentity[]);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;JLjdk/vm/ci/code/CallingConvention$Type;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;Z[Lorg/graalvm/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=14, locals=10, args_size=8
        start local 0 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        start local 2 // long address
        start local 4 // jdk.vm.ci.code.CallingConvention$Type outgoingCcType
        start local 5 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
        start local 6 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        start local 7 // boolean reexecutable
        start local 8 // org.graalvm.word.LocationIdentity[] killedLocations
         0: .line 130
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            astore 9 /* resultType */
        start local 9 // java.lang.Class resultType
         1: .line 131
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 2
            lload 2 /* address */
            lconst_0
            lcmp
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 132
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 3
            aload 6 /* transition */
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition.SAFEPOINT:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;
            if_acmpne 3
            aload 9 /* resultType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 3
            ldc Lorg/graalvm/compiler/word/Word;
            aload 9 /* resultType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
            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
            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
         3: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.codeCache:Ljdk/vm/ci/code/CodeCacheProvider;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.wordTypes:Lorg/graalvm/compiler/word/WordTypes;
            aload 0 /* this */
            aload 1 /* descriptor */
            lload 2 /* address */
            aload 5 /* effect */
            aload 4 /* outgoingCcType */
            aconst_null
            aload 6 /* transition */
            iload 7 /* reexecutable */
            aload 8 /* killedLocations */
            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/core/common/spi/ForeignCallDescriptor;JLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;Ljdk/vm/ci/code/CallingConvention$Type;Ljdk/vm/ci/code/CallingConvention$Type;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;Z[Lorg/graalvm/word/LocationIdentity;)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 9 // java.lang.Class resultType
        end local 8 // org.graalvm.word.LocationIdentity[] killedLocations
        end local 7 // boolean reexecutable
        end local 6 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        end local 5 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect effect
        end local 4 // jdk.vm.ci.code.CallingConvention$Type outgoingCcType
        end local 2 // long address
        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    4     0             this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    4     1       descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            0    4     2          address  J
            0    4     4   outgoingCcType  Ljdk/vm/ci/code/CallingConvention$Type;
            0    4     5           effect  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
            0    4     6       transition  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;
            0    4     7     reexecutable  Z
            0    4     8  killedLocations  [Lorg/graalvm/word/LocationIdentity;
            1    4     9       resultType  Ljava/lang/Class<*>;
    MethodParameters:
                 Name  Flags
      descriptor       
      address          
      outgoingCcType   
      effect           
      transition       
      reexecutable     
      killedLocations  

  public void linkForeignCall(org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.hotspot.meta.HotSpotProviders, org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, long, boolean, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition, boolean, org.graalvm.word.LocationIdentity[]);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;JZLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;Z[Lorg/graalvm/word/LocationIdentity;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=12, locals=13, args_size=9
        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.core.common.spi.ForeignCallDescriptor descriptor
        start local 4 // long address
        start local 6 // boolean prependThread
        start local 7 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        start local 8 // boolean reexecutable
        start local 9 // org.graalvm.word.LocationIdentity[] killedLocations
         0: .line 151
            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/HotSpotJVMCIRuntimeProvider;
            aload 2 /* providers */
            lload 4 /* address */
            aload 3 /* descriptor */
            iload 6 /* prependThread */
            aload 7 /* transition */
            iload 8 /* reexecutable */
            aload 9 /* killedLocations */
            invokespecial org.graalvm.compiler.hotspot.stubs.ForeignCallStub.<init>:(Lorg/graalvm/compiler/options/OptionValues;Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;JLorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;ZLorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;Z[Lorg/graalvm/word/LocationIdentity;)V
            astore 10 /* stub */
        start local 10 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub stub
         1: .line 152
            aload 10 /* stub */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.getLinkage:()Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            astore 11 /* linkage */
        start local 11 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
         2: .line 153
            aload 10 /* stub */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.getTargetLinkage:()Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            astore 12 /* targetLinkage */
        start local 12 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage targetLinkage
         3: .line 154
            aload 11 /* linkage */
            aload 10 /* stub */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.setCompiledStub:(Lorg/graalvm/compiler/hotspot/stubs/Stub;)V
         4: .line 155
            aload 0 /* this */
            aload 11 /* linkage */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            pop
         5: .line 156
            aload 0 /* this */
            aload 12 /* targetLinkage */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.register:(Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            pop
         6: .line 157
            return
        end local 12 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage targetLinkage
        end local 11 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage linkage
        end local 10 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub stub
        end local 9 // org.graalvm.word.LocationIdentity[] killedLocations
        end local 8 // boolean reexecutable
        end local 7 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        end local 6 // boolean prependThread
        end local 4 // long address
        end local 3 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor 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    7     0             this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    7     1          options  Lorg/graalvm/compiler/options/OptionValues;
            0    7     2        providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0    7     3       descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            0    7     4          address  J
            0    7     6    prependThread  Z
            0    7     7       transition  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;
            0    7     8     reexecutable  Z
            0    7     9  killedLocations  [Lorg/graalvm/word/LocationIdentity;
            1    7    10             stub  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            2    7    11          linkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            3    7    12    targetLinkage  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    MethodParameters:
                 Name  Flags
      options          
      providers        
      descriptor       
      address          
      prependThread    
      transition       
      reexecutable     
      killedLocations  

  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 169
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            ifnonnull 1
            new java.lang.AssertionError
            dup
            aload 1 /* descriptor */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.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 171
            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
         3: .line 172
            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    4     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    4     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            2    4     2  callTarget  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    MethodParameters:
            Name  Flags
      descriptor  

  public boolean isReexecutable(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Z
    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.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 177
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown foreign 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;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.isReexecutable:()Z
            ireturn
        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    2     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    2     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  public boolean canDeoptimize(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Z
    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.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 183
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown foreign 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;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.needsDebugInfo:()Z
            ireturn
        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    2     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    2     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  public boolean isGuaranteedSafepoint(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)Z
    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.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 189
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown foreign 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;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.isGuaranteedSafepoint:()Z
            ireturn
        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    2     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    2     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  public org.graalvm.word.LocationIdentity[] getKilledLocations(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)[Lorg/graalvm/word/LocationIdentity;
    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.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 195
            getstatic org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "unknown foreign 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;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            aload 1 /* descriptor */
            invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getKilledLocations:()[Lorg/graalvm/word/LocationIdentity;
            areturn
        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    2     0        this  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProviderImpl;
            0    2     1  descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  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 201
            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 206
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* stubs */
        start local 1 // java.util.List stubs
         1: .line 207
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.foreignCalls:Lorg/graalvm/util/EconomicMap;
            invokeinterface org.graalvm.util.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 208
            aload 2 /* linkage */
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.isCompiledStub:()Z
            ifeq 7
         4: .line 209
            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 210
            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 211
      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 207
      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 214
            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.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 Transition = org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition of org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage