public class org.graalvm.compiler.hotspot.stubs.ForeignCallStub extends org.graalvm.compiler.hotspot.stubs.Stub
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.stubs.ForeignCallStub
  super_class: org.graalvm.compiler.hotspot.stubs.Stub
{
  private final jdk.vm.ci.hotspot.HotSpotJVMCIRuntime jvmciRuntime;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage target;
    descriptor: Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final boolean prependThread;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  public void <init>(org.graalvm.compiler.options.OptionValues, jdk.vm.ci.hotspot.HotSpotJVMCIRuntime, org.graalvm.compiler.hotspot.meta.HotSpotProviders, long, org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor, boolean);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;JLorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=13, locals=11, args_size=7
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.options.OptionValues options
        start local 2 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime runtime
        start local 3 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 4 // long address
        start local 6 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        start local 7 // boolean prependThread
         0: .line 107
            aload 0 /* this */
            aload 1 /* options */
            aload 3 /* providers */
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getCodeCache:()Ljdk/vm/ci/hotspot/HotSpotCodeCacheProvider;
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getWordTypes:()Lorg/graalvm/compiler/hotspot/word/HotSpotWordTypes;
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider;
            aload 6 /* descriptor */
            lconst_0
         1: .line 108
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect.COMPUTES_REGISTERS_KILLED: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;
         2: .line 107
            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;
            invokespecial org.graalvm.compiler.hotspot.stubs.Stub.<init>:(Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)V
         3: .line 109
            aload 0 /* this */
            aload 2 /* runtime */
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.jvmciRuntime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
         4: .line 110
            aload 0 /* this */
            iload 7 /* prependThread */
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
         5: .line 111
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            astore 8 /* metaAccess */
        start local 8 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         6: .line 112
            aload 0 /* this */
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createTargetParameters:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)[Ljava/lang/Class;
            astore 9 /* targetParameterTypes */
        start local 9 // java.lang.Class[] targetParameterTypes
         7: .line 113
            new org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor
            dup
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getTransition:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Transition;
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getReexecutability:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor$Reexecutability;
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getKilledLocations:()[Ljdk/internal/vm/compiler/word/LocationIdentity;
         8: .line 114
            new java.lang.StringBuilder
            dup
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":C"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            aload 9 /* targetParameterTypes */
         9: .line 113
            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
            astore 10 /* targetSig */
        start local 10 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor targetSig
        10: .line 115
            aload 0 /* this */
            aload 8 /* metaAccess */
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getCodeCache:()Ljdk/vm/ci/hotspot/HotSpotCodeCacheProvider;
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getWordTypes:()Lorg/graalvm/compiler/hotspot/word/HotSpotWordTypes;
            aload 3 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider;
            aload 10 /* targetSig */
            lload 4 /* address */
        11: .line 116
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect.DESTROYS_ALL_CALLER_SAVE_REGISTERS:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$RegisterEffect;
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.NativeCall:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
            getstatic jdk.vm.ci.hotspot.HotSpotCallingConventionType.NativeCall:Ljdk/vm/ci/hotspot/HotSpotCallingConventionType;
        12: .line 115
            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;
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
        13: .line 117
            return
        end local 10 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor targetSig
        end local 9 // java.lang.Class[] targetParameterTypes
        end local 8 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 7 // boolean prependThread
        end local 6 // org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor descriptor
        end local 4 // long address
        end local 3 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        end local 2 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime runtime
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0                  this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0   14     1               options  Lorg/graalvm/compiler/options/OptionValues;
            0   14     2               runtime  Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
            0   14     3             providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0   14     4               address  J
            0   14     6            descriptor  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            0   14     7         prependThread  Z
            6   14     8            metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            7   14     9  targetParameterTypes  [Ljava/lang/Class;
           10   14    10             targetSig  Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
    MethodParameters:
               Name  Flags
      options        
      runtime        
      providers      
      address        
      descriptor     
      prependThread  

  public org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage getTargetLinkage();
    descriptor: ()Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
         0: .line 123
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            areturn
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;

  private java.lang.Class<?>[] createTargetParameters(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)[Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
         0: .line 127
            aload 1 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getArgumentTypes:()[Ljava/lang/Class;
            astore 2 /* parameters */
        start local 2 // java.lang.Class[] parameters
         1: .line 128
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
            ifeq 6
         2: .line 129
            aload 2 /* parameters */
            arraylength
            iconst_1
            iadd
            anewarray java.lang.Class
            astore 3 /* newParameters */
        start local 3 // java.lang.Class[] newParameters
         3: .line 130
            aload 2 /* parameters */
            iconst_0
            aload 3 /* newParameters */
            iconst_1
            aload 2 /* parameters */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 131
            aload 3 /* newParameters */
            iconst_0
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
         5: .line 132
            aload 3 /* newParameters */
            areturn
        end local 3 // java.lang.Class[] newParameters
         6: .line 134
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 2 /* parameters */
            areturn
        end local 2 // java.lang.Class[] parameters
        end local 1 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0    7     1     descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            1    7     2     parameters  [Ljava/lang/Class;
            3    6     3  newParameters  [Ljava/lang/Class;
    Signature: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)[Ljava/lang/Class<*>;
    MethodParameters:
            Name  Flags
      descriptor  

  protected jdk.vm.ci.meta.ResolvedJavaMethod getInstalledCodeOwner();
    descriptor: ()Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
         0: .line 139
            aconst_null
            areturn
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;

  protected java.lang.Object debugScopeContext();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
         0: .line 178
            new org.graalvm.compiler.hotspot.stubs.ForeignCallStub$1
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokespecial org.graalvm.compiler.hotspot.stubs.ForeignCallStub$1.<init>:(Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;)V
            areturn
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;

  protected org.graalvm.compiler.nodes.StructuredGraph getGraph(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.CompilationIdentifier);
    descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/CompilationIdentifier;)Lorg/graalvm/compiler/nodes/StructuredGraph;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=19, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.debug.DebugContext debug
        start local 2 // org.graalvm.compiler.core.common.CompilationIdentifier compilationId
         0: .line 229
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getWordTypes:()Lorg/graalvm/compiler/hotspot/word/HotSpotWordTypes;
            astore 3 /* wordTypes */
        start local 3 // org.graalvm.compiler.word.WordTypes wordTypes
         1: .line 230
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.linkage:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getArgumentTypes:()[Ljava/lang/Class;
            astore 4 /* args */
        start local 4 // java.lang.Class[] args
         2: .line 231
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.linkage:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getOutgoingCallingConvention:()Ljdk/vm/ci/code/CallingConvention;
            invokevirtual jdk.vm.ci.code.CallingConvention.getReturn:()Ljdk/vm/ci/meta/AllocatableValue;
            invokestatic org.graalvm.compiler.core.common.LIRKind.isValue:(Ljdk/vm/ci/meta/Value;)Z
            ifeq 3
            iconst_0
            goto 4
      StackMap locals: org.graalvm.compiler.word.WordTypes java.lang.Class[]
      StackMap stack:
         3: iconst_1
      StackMap locals:
      StackMap stack: int
         4: istore 5 /* isObjectResult */
        start local 5 // boolean isObjectResult
         5: .line 233
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.linkage:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.isReexecutable:()Z
            istore 6 /* shouldClearException */
        start local 6 // boolean shouldClearException
         6: .line 235
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getLowerer:()Lorg/graalvm/compiler/nodes/spi/LoweringProvider;
            checkcast org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider
            astore 7 /* lowerer */
        start local 7 // org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider lowerer
         7: .line 236
            aload 7 /* lowerer */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider.getForeignCallSnippets:()Lorg/graalvm/compiler/hotspot/stubs/ForeignCallSnippets$Templates;
            astore 8 /* foreignCallSnippets */
        start local 8 // org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates foreignCallSnippets
         8: .line 237
            aload 8 /* foreignCallSnippets */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates.handlePendingException:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 9 /* handlePendingException */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaMethod handlePendingException
         9: .line 238
            aload 8 /* foreignCallSnippets */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates.getAndClearObjectResult:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 10 /* getAndClearObjectResult */
        start local 10 // jdk.vm.ci.meta.ResolvedJavaMethod getAndClearObjectResult
        10: .line 239
            aload 8 /* foreignCallSnippets */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates.verifyObject:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 11 /* verifyObject */
        start local 11 // jdk.vm.ci.meta.ResolvedJavaMethod verifyObject
        11: .line 240
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.getGraphMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 12 /* thisMethod */
        start local 12 // jdk.vm.ci.meta.ResolvedJavaMethod thisMethod
        12: .line 241
            new org.graalvm.compiler.replacements.GraphKit
            dup
            aload 1 /* debug */
            aload 12 /* thisMethod */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            aload 3 /* wordTypes */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getGraphBuilderPlugins:()Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;
            aload 2 /* compilationId */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.toString:()Ljava/lang/String;
            invokespecial org.graalvm.compiler.replacements.GraphKit.<init>:(Lorg/graalvm/compiler/debug/DebugContext;Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/word/WordTypes;Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;Lorg/graalvm/compiler/core/common/CompilationIdentifier;Ljava/lang/String;)V
            astore 13 /* kit */
        start local 13 // org.graalvm.compiler.replacements.GraphKit kit
        13: .line 242
            aload 13 /* kit */
            invokevirtual org.graalvm.compiler.replacements.GraphKit.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 14 /* graph */
        start local 14 // org.graalvm.compiler.nodes.StructuredGraph graph
        14: .line 243
            aload 14 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.disableFrameStateVerification:()V
        15: .line 244
            aload 0 /* this */
            aload 13 /* kit */
            aload 4 /* args */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createParameters:(Lorg/graalvm/compiler/replacements/GraphKit;[Ljava/lang/Class;)[Lorg/graalvm/compiler/nodes/ParameterNode;
            astore 15 /* params */
        start local 15 // org.graalvm.compiler.nodes.ParameterNode[] params
        16: .line 245
            aload 13 /* kit */
            new org.graalvm.compiler.replacements.nodes.ReadRegisterNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getRegisters:()Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            aload 3 /* wordTypes */
            invokevirtual org.graalvm.compiler.word.WordTypes.getWordKind:()Ljdk/vm/ci/meta/JavaKind;
            iconst_1
            iconst_0
            invokespecial org.graalvm.compiler.replacements.nodes.ReadRegisterNode.<init>:(Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/JavaKind;ZZ)V
            invokevirtual org.graalvm.compiler.replacements.GraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.replacements.nodes.ReadRegisterNode
            astore 16 /* thread */
        start local 16 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
        17: .line 246
            aload 0 /* this */
            aload 13 /* kit */
            aload 15 /* params */
            aload 16 /* thread */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createTargetCall:(Lorg/graalvm/compiler/replacements/GraphKit;[Lorg/graalvm/compiler/nodes/ParameterNode;Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;)Lorg/graalvm/compiler/hotspot/nodes/StubForeignCallNode;
            astore 17 /* result */
        start local 17 // org.graalvm.compiler.nodes.ValueNode result
        18: .line 247
            aload 13 /* kit */
            aload 9 /* handlePendingException */
            iconst_3
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 16 /* thread */
            aastore
            dup
            iconst_1
            iload 6 /* shouldClearException */
            aload 14 /* graph */
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forBoolean:(ZLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            aastore
            dup
            iconst_2
            iload 5 /* isObjectResult */
            aload 14 /* graph */
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forBoolean:(ZLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            aastore
            invokestatic org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createStaticInvoke:(Lorg/graalvm/compiler/replacements/GraphKit;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            pop
        19: .line 248
            iload 5 /* isObjectResult */
            ifeq 22
        20: .line 249
            aload 13 /* kit */
            aload 10 /* getAndClearObjectResult */
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 16 /* thread */
            aastore
            invokestatic org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createStaticInvoke:(Lorg/graalvm/compiler/replacements/GraphKit;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            astore 18 /* object */
        start local 18 // org.graalvm.compiler.nodes.InvokeNode object
        21: .line 250
            aload 13 /* kit */
            aload 11 /* verifyObject */
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 18 /* object */
            aastore
            invokestatic org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createStaticInvoke:(Lorg/graalvm/compiler/replacements/GraphKit;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            astore 17 /* result */
        end local 18 // org.graalvm.compiler.nodes.InvokeNode object
        22: .line 252
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int int org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 13 /* kit */
        23: new org.graalvm.compiler.nodes.ReturnNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.linkage:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 24
            aconst_null
            goto 25
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int int org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.GraphKit new 23 new 23
        24: aload 17 /* result */
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int int org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.GraphKit new 23 new 23 org.graalvm.compiler.nodes.ValueNode
        25: invokespecial org.graalvm.compiler.nodes.ReturnNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.replacements.GraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            pop
        26: .line 253
            aload 1 /* debug */
            iconst_3
            aload 14 /* graph */
            ldc "Initial stub graph"
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
        27: .line 255
            aload 13 /* kit */
            ldc "Foreign call stub."
            ldc "Backend"
            invokevirtual org.graalvm.compiler.replacements.GraphKit.inlineInvokes:(Ljava/lang/String;Ljava/lang/String;)V
        28: .line 257
            aload 1 /* debug */
            iconst_3
            aload 14 /* graph */
            ldc "Stub graph before compilation"
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;)V
        29: .line 258
            aload 14 /* graph */
        30: areturn
        end local 17 // org.graalvm.compiler.nodes.ValueNode result
        end local 16 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
        end local 15 // org.graalvm.compiler.nodes.ParameterNode[] params
        end local 14 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 13 // org.graalvm.compiler.replacements.GraphKit kit
        end local 12 // jdk.vm.ci.meta.ResolvedJavaMethod thisMethod
        end local 11 // jdk.vm.ci.meta.ResolvedJavaMethod verifyObject
        end local 10 // jdk.vm.ci.meta.ResolvedJavaMethod getAndClearObjectResult
        end local 9 // jdk.vm.ci.meta.ResolvedJavaMethod handlePendingException
        end local 8 // org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates foreignCallSnippets
        end local 7 // org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider lowerer
        31: .line 259
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int int
      StackMap stack: java.lang.Exception
            astore 7 /* e */
        start local 7 // java.lang.Exception e
        32: .line 260
            aload 7 /* e */
            invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // java.lang.Exception e
        end local 6 // boolean shouldClearException
        end local 5 // boolean isObjectResult
        end local 4 // java.lang.Class[] args
        end local 3 // org.graalvm.compiler.word.WordTypes wordTypes
        end local 2 // org.graalvm.compiler.core.common.CompilationIdentifier compilationId
        end local 1 // org.graalvm.compiler.debug.DebugContext debug
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   33     0                     this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0   33     1                    debug  Lorg/graalvm/compiler/debug/DebugContext;
            0   33     2            compilationId  Lorg/graalvm/compiler/core/common/CompilationIdentifier;
            1   33     3                wordTypes  Lorg/graalvm/compiler/word/WordTypes;
            2   33     4                     args  [Ljava/lang/Class;
            5   33     5           isObjectResult  Z
            6   33     6     shouldClearException  Z
            7   31     7                  lowerer  Lorg/graalvm/compiler/hotspot/meta/HotSpotLoweringProvider;
            8   31     8      foreignCallSnippets  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallSnippets$Templates;
            9   31     9   handlePendingException  Ljdk/vm/ci/meta/ResolvedJavaMethod;
           10   31    10  getAndClearObjectResult  Ljdk/vm/ci/meta/ResolvedJavaMethod;
           11   31    11             verifyObject  Ljdk/vm/ci/meta/ResolvedJavaMethod;
           12   31    12               thisMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
           13   31    13                      kit  Lorg/graalvm/compiler/replacements/GraphKit;
           14   31    14                    graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
           16   31    15                   params  [Lorg/graalvm/compiler/nodes/ParameterNode;
           17   31    16                   thread  Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;
           18   31    17                   result  Lorg/graalvm/compiler/nodes/ValueNode;
           21   22    18                   object  Lorg/graalvm/compiler/nodes/InvokeNode;
           32   33     7                        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           6    30      31  Class java.lang.Exception
    MethodParameters:
               Name  Flags
      debug          
      compilationId  

  private static org.graalvm.compiler.nodes.InvokeNode createStaticInvoke(org.graalvm.compiler.replacements.GraphKit, jdk.vm.ci.meta.ResolvedJavaMethod, org.graalvm.compiler.nodes.ValueNode[]);
    descriptor: (Lorg/graalvm/compiler/replacements/GraphKit;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.replacements.GraphKit kit
        start local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
        start local 2 // org.graalvm.compiler.nodes.ValueNode[] args
         0: .line 265
            aload 0 /* kit */
            aload 1 /* method */
            getstatic org.graalvm.compiler.nodes.CallTargetNode$InvokeKind.Static:Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;
            aconst_null
            bipush -5
            aload 2 /* args */
            invokevirtual org.graalvm.compiler.replacements.GraphKit.createInvoke:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;Lorg/graalvm/compiler/java/FrameStateBuilder;I[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            areturn
        end local 2 // org.graalvm.compiler.nodes.ValueNode[] args
        end local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 0 // org.graalvm.compiler.replacements.GraphKit kit
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0     kit  Lorg/graalvm/compiler/replacements/GraphKit;
            0    1     1  method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            0    1     2    args  [Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
        Name  Flags
      kit     
      method  
      args    

  private jdk.vm.ci.meta.ResolvedJavaMethod getGraphMethod();
    descriptor: ()Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
         0: .line 269
            aconst_null
            astore 1 /* thisMethod */
        start local 1 // jdk.vm.ci.meta.ResolvedJavaMethod thisMethod
         1: .line 270
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getDeclaredMethods:()[Ljdk/vm/ci/meta/ResolvedJavaMethod;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 9
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub jdk.vm.ci.meta.ResolvedJavaMethod top int int jdk.vm.ci.meta.ResolvedJavaMethod[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* method */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
         3: .line 271
            aload 2 /* method */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getName:()Ljava/lang/String;
            ldc "getGraph"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         4: .line 272
            aload 1 /* thisMethod */
            ifnonnull 7
         5: .line 273
            aload 2 /* method */
            astore 1 /* thisMethod */
         6: .line 274
            goto 8
         7: .line 275
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod int int jdk.vm.ci.meta.ResolvedJavaMethod[]
      StackMap stack:
            new java.lang.InternalError
            dup
            ldc "getGraph is ambiguous"
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
         8: .line 270
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub jdk.vm.ci.meta.ResolvedJavaMethod top int int jdk.vm.ci.meta.ResolvedJavaMethod[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         9: iload 3
            iload 4
            if_icmplt 2
        10: .line 279
            aload 1 /* thisMethod */
            ifnonnull 12
        11: .line 280
            new java.lang.InternalError
            dup
            ldc "Can't find getGraph"
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 282
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub jdk.vm.ci.meta.ResolvedJavaMethod
      StackMap stack:
            aload 1 /* thisMethod */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaMethod thisMethod
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            1   13     1  thisMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            3    8     2      method  Ljdk/vm/ci/meta/ResolvedJavaMethod;

  private org.graalvm.compiler.nodes.ParameterNode[] createParameters(org.graalvm.compiler.replacements.GraphKit, java.lang.Class<?>[]);
    descriptor: (Lorg/graalvm/compiler/replacements/GraphKit;[Ljava/lang/Class;)[Lorg/graalvm/compiler/nodes/ParameterNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.replacements.GraphKit kit
        start local 2 // java.lang.Class[] args
         0: .line 286
            aload 2 /* args */
            arraylength
            anewarray org.graalvm.compiler.nodes.ParameterNode
            astore 3 /* params */
        start local 3 // org.graalvm.compiler.nodes.ParameterNode[] params
         1: .line 287
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 4 /* accessingClass */
        start local 4 // jdk.vm.ci.meta.ResolvedJavaType accessingClass
         2: .line 288
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 9
         4: .line 289
      StackMap locals: org.graalvm.compiler.nodes.ParameterNode[] jdk.vm.ci.meta.ResolvedJavaType int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* args */
            iload 5 /* i */
            aaload
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 4 /* accessingClass */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.resolve:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 6 /* type */
        start local 6 // jdk.vm.ci.meta.ResolvedJavaType type
         5: .line 290
            aload 1 /* kit */
            invokevirtual org.graalvm.compiler.replacements.GraphKit.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getAssumptions:()Ljdk/vm/ci/meta/Assumptions;
            aload 6 /* type */
            iconst_0
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.forDeclaredType:(Ljdk/vm/ci/meta/Assumptions;Ljdk/vm/ci/meta/JavaType;Z)Lorg/graalvm/compiler/core/common/type/StampPair;
            astore 7 /* stamp */
        start local 7 // org.graalvm.compiler.core.common.type.StampPair stamp
         6: .line 291
            aload 1 /* kit */
            new org.graalvm.compiler.nodes.ParameterNode
            dup
            iload 5 /* i */
            aload 7 /* stamp */
            invokespecial org.graalvm.compiler.nodes.ParameterNode.<init>:(ILorg/graalvm/compiler/core/common/type/StampPair;)V
            invokevirtual org.graalvm.compiler.replacements.GraphKit.unique:(Lorg/graalvm/compiler/nodes/calc/FloatingNode;)Lorg/graalvm/compiler/nodes/calc/FloatingNode;
            checkcast org.graalvm.compiler.nodes.ParameterNode
            astore 8 /* param */
        start local 8 // org.graalvm.compiler.nodes.ParameterNode param
         7: .line 292
            aload 3 /* params */
            iload 5 /* i */
            aload 8 /* param */
            aastore
        end local 8 // org.graalvm.compiler.nodes.ParameterNode param
        end local 7 // org.graalvm.compiler.core.common.type.StampPair stamp
        end local 6 // jdk.vm.ci.meta.ResolvedJavaType type
         8: .line 288
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            aload 2 /* args */
            arraylength
            if_icmplt 4
        end local 5 // int i
        10: .line 294
            aload 3 /* params */
            areturn
        end local 4 // jdk.vm.ci.meta.ResolvedJavaType accessingClass
        end local 3 // org.graalvm.compiler.nodes.ParameterNode[] params
        end local 2 // java.lang.Class[] args
        end local 1 // org.graalvm.compiler.replacements.GraphKit kit
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0   11     1             kit  Lorg/graalvm/compiler/replacements/GraphKit;
            0   11     2            args  [Ljava/lang/Class;
            1   11     3          params  [Lorg/graalvm/compiler/nodes/ParameterNode;
            2   11     4  accessingClass  Ljdk/vm/ci/meta/ResolvedJavaType;
            3   10     5               i  I
            5    8     6            type  Ljdk/vm/ci/meta/ResolvedJavaType;
            6    8     7           stamp  Lorg/graalvm/compiler/core/common/type/StampPair;
            7    8     8           param  Lorg/graalvm/compiler/nodes/ParameterNode;
    Signature: (Lorg/graalvm/compiler/replacements/GraphKit;[Ljava/lang/Class<*>;)[Lorg/graalvm/compiler/nodes/ParameterNode;
    MethodParameters:
      Name  Flags
      kit   
      args  

  private org.graalvm.compiler.hotspot.nodes.StubForeignCallNode createTargetCall(org.graalvm.compiler.replacements.GraphKit, org.graalvm.compiler.nodes.ParameterNode[], org.graalvm.compiler.replacements.nodes.ReadRegisterNode);
    descriptor: (Lorg/graalvm/compiler/replacements/GraphKit;[Lorg/graalvm/compiler/nodes/ParameterNode;Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;)Lorg/graalvm/compiler/hotspot/nodes/StubForeignCallNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.replacements.GraphKit kit
        start local 2 // org.graalvm.compiler.nodes.ParameterNode[] params
        start local 3 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
         0: .line 298
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            invokestatic jdk.vm.ci.meta.JavaKind.fromJavaClass:(Ljava/lang/Class;)Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.forKind:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/type/Stamp;
            astore 4 /* stamp */
        start local 4 // org.graalvm.compiler.core.common.type.Stamp stamp
         1: .line 299
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
            ifeq 6
         2: .line 300
            iconst_1
            aload 2 /* params */
            arraylength
            iadd
            anewarray org.graalvm.compiler.nodes.ValueNode
            astore 5 /* targetArguments */
        start local 5 // org.graalvm.compiler.nodes.ValueNode[] targetArguments
         3: .line 301
            aload 5 /* targetArguments */
            iconst_0
            aload 3 /* thread */
            aastore
         4: .line 302
            aload 2 /* params */
            iconst_0
            aload 5 /* targetArguments */
            iconst_1
            aload 2 /* params */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 303
            aload 1 /* kit */
            new org.graalvm.compiler.hotspot.nodes.StubForeignCallNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider;
            aload 4 /* stamp */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            aload 5 /* targetArguments */
            invokespecial org.graalvm.compiler.hotspot.nodes.StubForeignCallNode.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;[Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.replacements.GraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.hotspot.nodes.StubForeignCallNode
            areturn
        end local 5 // org.graalvm.compiler.nodes.ValueNode[] targetArguments
         6: .line 305
      StackMap locals: org.graalvm.compiler.core.common.type.Stamp
      StackMap stack:
            aload 1 /* kit */
            new org.graalvm.compiler.hotspot.nodes.StubForeignCallNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider;
            aload 4 /* stamp */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokeinterface org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage.getDescriptor:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallDescriptor;
            aload 2 /* params */
            invokespecial org.graalvm.compiler.hotspot.nodes.StubForeignCallNode.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;[Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.replacements.GraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.hotspot.nodes.StubForeignCallNode
            areturn
        end local 4 // org.graalvm.compiler.core.common.type.Stamp stamp
        end local 3 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
        end local 2 // org.graalvm.compiler.nodes.ParameterNode[] params
        end local 1 // org.graalvm.compiler.replacements.GraphKit kit
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0    7     1              kit  Lorg/graalvm/compiler/replacements/GraphKit;
            0    7     2           params  [Lorg/graalvm/compiler/nodes/ParameterNode;
            0    7     3           thread  Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;
            1    7     4            stamp  Lorg/graalvm/compiler/core/common/type/Stamp;
            3    6     5  targetArguments  [Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
        Name  Flags
      kit     
      params  
      thread  
}
SourceFile: "ForeignCallStub.java"
NestMembers:
  org.graalvm.compiler.hotspot.stubs.ForeignCallStub$1  org.graalvm.compiler.hotspot.stubs.ForeignCallStub$DebugScopeContext
InnerClasses:
  public abstract Type = jdk.vm.ci.code.CallingConvention$Type of jdk.vm.ci.code.CallingConvention
  public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
  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
  public Templates = org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets$Templates of org.graalvm.compiler.hotspot.stubs.ForeignCallSnippets
  org.graalvm.compiler.hotspot.stubs.ForeignCallStub$1
  private DebugScopeContext = org.graalvm.compiler.hotspot.stubs.ForeignCallStub$DebugScopeContext of org.graalvm.compiler.hotspot.stubs.ForeignCallStub
  public final InvokeKind = org.graalvm.compiler.nodes.CallTargetNode$InvokeKind of org.graalvm.compiler.nodes.CallTargetNode
  public Plugins = org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins of org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate