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.HotSpotJVMCIRuntimeProvider jvmciRuntime;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
    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>(jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider, org.graalvm.compiler.hotspot.meta.HotSpotProviders, long, org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, boolean, org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition, boolean, org.graalvm.compiler.core.common.LocationIdentity[]);
    descriptor: (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/compiler/core/common/LocationIdentity;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=15, locals=12, args_size=9
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider runtime
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 3 // long address
        start local 5 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        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.compiler.core.common.LocationIdentity[] killedLocations
         0: .line 104
            aload 0 /* this */
            aload 2 /* providers */
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getCodeCache:()Ljdk/vm/ci/hotspot/HotSpotCodeCacheProvider;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getWordTypes:()Lorg/graalvm/compiler/hotspot/word/HotSpotWordTypes;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProvider;
            aload 5 /* descriptor */
            lconst_0
         1: .line 105
            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 7 /* transition */
            iload 8 /* reexecutable */
            aload 9 /* killedLocations */
         2: .line 104
            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/compiler/core/common/LocationIdentity;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            invokespecial org.graalvm.compiler.hotspot.stubs.Stub.<init>:(Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;)V
         3: .line 106
            aload 0 /* this */
            aload 1 /* runtime */
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.jvmciRuntime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
         4: .line 107
            aload 0 /* this */
            iload 6 /* prependThread */
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
         5: .line 108
            aload 0 /* this */
            aload 5 /* descriptor */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createTargetParameters:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;)[Ljava/lang/Class;
            astore 10 /* targetParameterTypes */
        start local 10 // java.lang.Class[] targetParameterTypes
         6: .line 109
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            new java.lang.StringBuilder
            dup
            aload 5 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.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 5 /* descriptor */
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            aload 10 /* targetParameterTypes */
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            astore 11 /* targetSig */
        start local 11 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor targetSig
         7: .line 110
            aload 0 /* this */
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getCodeCache:()Ljdk/vm/ci/hotspot/HotSpotCodeCacheProvider;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getWordTypes:()Lorg/graalvm/compiler/hotspot/word/HotSpotWordTypes;
            aload 2 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getForeignCalls:()Lorg/graalvm/compiler/hotspot/meta/HotSpotForeignCallsProvider;
            aload 11 /* targetSig */
            lload 3 /* address */
         8: .line 111
            getstatic org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$RegisterEffect.DESTROYS_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;
            aload 7 /* transition */
            iload 8 /* reexecutable */
            aload 9 /* killedLocations */
         9: .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/compiler/core/common/LocationIdentity;)Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
            putfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.target:Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage;
        10: .line 112
            return
        end local 11 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor targetSig
        end local 10 // java.lang.Class[] targetParameterTypes
        end local 9 // org.graalvm.compiler.core.common.LocationIdentity[] killedLocations
        end local 8 // boolean reexecutable
        end local 7 // org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition transition
        end local 6 // boolean prependThread
        end local 5 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor descriptor
        end local 3 // long address
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        end local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider runtime
        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               runtime  Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntimeProvider;
            0   11     2             providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0   11     3               address  J
            0   11     5            descriptor  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            0   11     6         prependThread  Z
            0   11     7            transition  Lorg/graalvm/compiler/hotspot/HotSpotForeignCallLinkage$Transition;
            0   11     8          reexecutable  Z
            0   11     9       killedLocations  [Lorg/graalvm/compiler/core/common/LocationIdentity;
            6   11    10  targetParameterTypes  [Ljava/lang/Class;
            7   11    11             targetSig  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    MethodParameters:
                 Name  Flags
      runtime          
      providers        
      address          
      descriptor       
      prependThread    
      transition       
      reexecutable     
      killedLocations  

  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 118
            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 122
            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 123
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
            ifeq 6
         2: .line 124
            aload 2 /* parameters */
            arraylength
            iconst_1
            iadd
            anewarray java.lang.Class
            astore 3 /* newParameters */
        start local 3 // java.lang.Class[] newParameters
         3: .line 125
            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 126
            aload 3 /* newParameters */
            iconst_0
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
         5: .line 127
            aload 3 /* newParameters */
            areturn
        end local 3 // java.lang.Class[] newParameters
         6: .line 129
      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 134
            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 173
            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.core.common.CompilationIdentifier);
    descriptor: (Lorg/graalvm/compiler/core/common/CompilationIdentifier;)Lorg/graalvm/compiler/nodes/StructuredGraph;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=11, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
        start local 1 // org.graalvm.compiler.core.common.CompilationIdentifier compilationId
         0: .line 223
            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 2 /* wordTypes */
        start local 2 // org.graalvm.compiler.word.WordTypes wordTypes
         1: .line 224
            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/core/common/spi/ForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getArgumentTypes:()[Ljava/lang/Class;
            astore 3 /* args */
        start local 3 // java.lang.Class[] args
         2: .line 225
            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 4 /* isObjectResult */
        start local 4 // boolean isObjectResult
         5: .line 227
            new org.graalvm.compiler.nodes.StructuredGraph
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.toString:()Ljava/lang/String;
            aconst_null
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.NO:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            aload 1 /* compilationId */
            invokespecial org.graalvm.compiler.nodes.StructuredGraph.<init>:(Ljava/lang/String;Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;Lorg/graalvm/compiler/core/common/CompilationIdentifier;)V
            astore 5 /* graph */
        start local 5 // org.graalvm.compiler.nodes.StructuredGraph graph
         6: .line 228
            aload 5 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.disableUnsafeAccessTracking:()V
         7: .line 230
            new org.graalvm.compiler.replacements.GraphKit
            dup
            aload 5 /* graph */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.providers:Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            aload 2 /* 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;
            invokespecial org.graalvm.compiler.replacements.GraphKit.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/word/WordTypes;Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration$Plugins;)V
            astore 6 /* kit */
        start local 6 // org.graalvm.compiler.replacements.GraphKit kit
         8: .line 231
            aload 0 /* this */
            aload 6 /* kit */
            aload 3 /* args */
            invokevirtual org.graalvm.compiler.hotspot.stubs.ForeignCallStub.createParameters:(Lorg/graalvm/compiler/replacements/GraphKit;[Ljava/lang/Class;)[Lorg/graalvm/compiler/nodes/ParameterNode;
            astore 7 /* params */
        start local 7 // org.graalvm.compiler.nodes.ParameterNode[] params
         9: .line 233
            aload 6 /* 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 2 /* 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 8 /* thread */
        start local 8 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
        10: .line 234
            aload 0 /* this */
            aload 6 /* kit */
            aload 7 /* params */
            aload 8 /* 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 9 /* result */
        start local 9 // org.graalvm.compiler.nodes.ValueNode result
        11: .line 235
            aload 6 /* kit */
            ldc Lorg/graalvm/compiler/hotspot/stubs/StubUtil;
            ldc "handlePendingException"
            iconst_2
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 8 /* thread */
            aastore
            dup
            iconst_1
            iload 4 /* isObjectResult */
            aload 5 /* graph */
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forBoolean:(ZLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            aastore
            invokevirtual org.graalvm.compiler.replacements.GraphKit.createInvoke:(Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            pop
        12: .line 236
            iload 4 /* isObjectResult */
            ifeq 15
        13: .line 237
            aload 6 /* kit */
            ldc Lorg/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil;
            ldc "getAndClearObjectResult"
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 8 /* thread */
            aastore
            invokevirtual org.graalvm.compiler.replacements.GraphKit.createInvoke:(Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            astore 10 /* object */
        start local 10 // org.graalvm.compiler.nodes.InvokeNode object
        14: .line 238
            aload 6 /* kit */
            ldc Lorg/graalvm/compiler/hotspot/stubs/StubUtil;
            ldc "verifyObject"
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 10 /* object */
            aastore
            invokevirtual org.graalvm.compiler.replacements.GraphKit.createInvoke:(Ljava/lang/Class;Ljava/lang/String;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/InvokeNode;
            astore 9 /* result */
        end local 10 // org.graalvm.compiler.nodes.InvokeNode object
        15: .line 240
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 6 /* kit */
        16: 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/core/common/spi/ForeignCallDescriptor;
            invokevirtual org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.getResultType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 17
            aconst_null
            goto 18
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.GraphKit new 16 new 16
        17: aload 9 /* result */
      StackMap locals: org.graalvm.compiler.hotspot.stubs.ForeignCallStub org.graalvm.compiler.core.common.CompilationIdentifier org.graalvm.compiler.word.WordTypes java.lang.Class[] int org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.replacements.GraphKit org.graalvm.compiler.nodes.ParameterNode[] org.graalvm.compiler.replacements.nodes.ReadRegisterNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack: org.graalvm.compiler.replacements.GraphKit new 16 new 16 org.graalvm.compiler.nodes.ValueNode
        18: 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
        19: .line 242
            iconst_2
            invokestatic org.graalvm.compiler.debug.Debug.isDumpEnabled:(I)Z
            ifeq 21
        20: .line 243
            iconst_2
            aload 5 /* graph */
            ldc "Initial stub graph"
            invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
        21: .line 246
      StackMap locals:
      StackMap stack:
            aload 6 /* kit */
            invokevirtual org.graalvm.compiler.replacements.GraphKit.inlineInvokes:()V
        22: .line 248
            iconst_2
            invokestatic org.graalvm.compiler.debug.Debug.isDumpEnabled:(I)Z
            ifeq 24
        23: .line 249
            iconst_2
            aload 5 /* graph */
            ldc "Stub graph before compilation"
            invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;)V
        24: .line 252
      StackMap locals:
      StackMap stack:
            aload 5 /* graph */
            areturn
        end local 9 // org.graalvm.compiler.nodes.ValueNode result
        end local 8 // org.graalvm.compiler.replacements.nodes.ReadRegisterNode thread
        end local 7 // org.graalvm.compiler.nodes.ParameterNode[] params
        end local 6 // org.graalvm.compiler.replacements.GraphKit kit
        end local 5 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 4 // boolean isObjectResult
        end local 3 // java.lang.Class[] args
        end local 2 // org.graalvm.compiler.word.WordTypes wordTypes
        end local 1 // org.graalvm.compiler.core.common.CompilationIdentifier compilationId
        end local 0 // org.graalvm.compiler.hotspot.stubs.ForeignCallStub this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0            this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0   25     1   compilationId  Lorg/graalvm/compiler/core/common/CompilationIdentifier;
            1   25     2       wordTypes  Lorg/graalvm/compiler/word/WordTypes;
            2   25     3            args  [Ljava/lang/Class;
            5   25     4  isObjectResult  Z
            6   25     5           graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            8   25     6             kit  Lorg/graalvm/compiler/replacements/GraphKit;
            9   25     7          params  [Lorg/graalvm/compiler/nodes/ParameterNode;
           10   25     8          thread  Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;
           11   25     9          result  Lorg/graalvm/compiler/nodes/ValueNode;
           14   15    10          object  Lorg/graalvm/compiler/nodes/InvokeNode;
    MethodParameters:
               Name  Flags
      compilationId  

  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 256
            aload 2 /* args */
            arraylength
            anewarray org.graalvm.compiler.nodes.ParameterNode
            astore 3 /* params */
        start local 3 // org.graalvm.compiler.nodes.ParameterNode[] params
         1: .line 257
            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 258
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 9
         4: .line 259
      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 260
            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 261
            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 262
            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 258
            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 264
            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=6, locals=5, 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 268
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.stubs.ForeignCallStub.prependThread:Z
            ifeq 5
         1: .line 269
            iconst_1
            aload 2 /* params */
            arraylength
            iadd
            anewarray org.graalvm.compiler.nodes.ValueNode
            astore 4 /* targetArguments */
        start local 4 // org.graalvm.compiler.nodes.ValueNode[] targetArguments
         2: .line 270
            aload 4 /* targetArguments */
            iconst_0
            aload 3 /* thread */
            aastore
         3: .line 271
            aload 2 /* params */
            iconst_0
            aload 4 /* targetArguments */
            iconst_1
            aload 2 /* params */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 272
            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/HotSpotForeignCallsProvider;
            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/core/common/spi/ForeignCallDescriptor;
            aload 4 /* targetArguments */
            invokespecial org.graalvm.compiler.hotspot.nodes.StubForeignCallNode.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;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.nodes.ValueNode[] targetArguments
         5: .line 274
      StackMap locals:
      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/HotSpotForeignCallsProvider;
            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/core/common/spi/ForeignCallDescriptor;
            aload 2 /* params */
            invokespecial org.graalvm.compiler.hotspot.nodes.StubForeignCallNode.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;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 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    6     0             this  Lorg/graalvm/compiler/hotspot/stubs/ForeignCallStub;
            0    6     1              kit  Lorg/graalvm/compiler/replacements/GraphKit;
            0    6     2           params  [Lorg/graalvm/compiler/nodes/ParameterNode;
            0    6     3           thread  Lorg/graalvm/compiler/replacements/nodes/ReadRegisterNode;
            2    5     4  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 Transition = org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage$Transition of org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage
  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 AllowAssumptions = org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions of org.graalvm.compiler.nodes.StructuredGraph
  public Plugins = org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration$Plugins of org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration