abstract class com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase extends com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase
super_class: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
{
private java.lang.invoke.MethodHandle methodHandle;
descriptor: Ljava/lang/invoke/MethodHandle;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
void <init>(java.lang.reflect.Executable);
descriptor: (Ljava/lang/reflect/Executable;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.<init>:(Ljava/lang/reflect/Executable;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod$MHBase;
0 2 1 executable Ljava/lang/reflect/Executable;
MethodParameters:
Name Flags
executable
public final java.lang.Object invoke(java.lang.Object, java.lang.Object[]);
descriptor: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.methodHandle:Ljava/lang/invoke/MethodHandle;
astore 3
start local 3 1: aload 3
ifnonnull 5
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: aload 0
invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.makeMethodHandle:()Ljava/lang/invoke/MethodHandle;
astore 3
4: aload 0
aload 3
putfield com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.methodHandle:Ljava/lang/invoke/MethodHandle;
5: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 3
aload 1
aload 2
invokestatic com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.invokeHandle:(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod$MHBase;
0 6 1 receiver Ljava/lang/Object;
0 6 2 arguments [Ljava/lang/Object;
1 6 3 handle Ljava/lang/invoke/MethodHandle;
Exceptions:
throws java.lang.Throwable
MethodParameters:
Name Flags
receiver
arguments
static java.lang.Object invokeHandle(java.lang.invoke.MethodHandle, java.lang.Object, java.lang.Object[]);
descriptor: (Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokevirtual java.lang.invoke.MethodHandle.invokeExact:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 invokeHandle Ljava/lang/invoke/MethodHandle;
0 1 1 receiver Ljava/lang/Object;
0 1 2 arguments [Ljava/lang/Object;
Exceptions:
throws java.lang.Throwable
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary(allowInlining = true)
MethodParameters:
Name Flags
invokeHandle
receiver
arguments
protected abstract java.lang.invoke.MethodHandle makeMethodHandle();
descriptor: ()Ljava/lang/invoke/MethodHandle;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
protected static java.lang.invoke.MethodHandle adaptSignature(java.lang.invoke.MethodHandle, boolean, int);
descriptor: (Ljava/lang/invoke/MethodHandle;ZI)Ljava/lang/invoke/MethodHandle;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
astore 3
start local 3 1: aload 3
aload 3
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
ldc Ljava/lang/Object;
invokevirtual java.lang.invoke.MethodType.changeReturnType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
astore 3
2: iload 1
ifeq 5
3: aload 3
iconst_0
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Ljava/lang/Object;
aastore
invokestatic java.lang.invoke.MethodHandles.dropArguments:(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
astore 3
4: goto 6
5: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 3
aload 3
invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
iconst_0
ldc Ljava/lang/Object;
invokevirtual java.lang.invoke.MethodType.changeParameterType:(ILjava/lang/Class;)Ljava/lang/invoke/MethodType;
invokevirtual java.lang.invoke.MethodHandle.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
astore 3
6: StackMap locals:
StackMap stack:
aload 3
ldc [Ljava/lang/Object;
iload 2
invokevirtual java.lang.invoke.MethodHandle.asSpreader:(Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
astore 3
7: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 originalHandle Ljava/lang/invoke/MethodHandle;
0 8 1 isStatic Z
0 8 2 parameterCount I
1 8 3 adaptedHandle Ljava/lang/invoke/MethodHandle;
MethodParameters:
Name Flags
originalHandle
isStatic
parameterCount
public java.lang.Object invokeGuestToHost(java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotEngineImpl, com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.api.nodes.Node);
descriptor: (Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.methodHandle:Ljava/lang/invoke/MethodHandle;
astore 6
start local 6 1: aload 6
ifnonnull 5
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: aload 0
invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.makeMethodHandle:()Ljava/lang/invoke/MethodHandle;
astore 6
4: aload 0
aload 6
putfield com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.methodHandle:Ljava/lang/invoke/MethodHandle;
5: StackMap locals: java.lang.invoke.MethodHandle
StackMap stack:
aload 3
invokevirtual com.oracle.truffle.polyglot.PolyglotEngineImpl.getHostToGuestCodeCache:()Lcom/oracle/truffle/polyglot/HostToGuestCodeCache;
getfield com.oracle.truffle.polyglot.HostToGuestCodeCache.methodHandleHostInvoke:Lcom/oracle/truffle/api/CallTarget;
astore 7
start local 7 6: aload 7
invokestatic com.oracle.truffle.api.CompilerAsserts.partialEvaluationConstant:(Ljava/lang/Object;)V
7: aload 5
aload 7
iconst_4
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
dup
iconst_1
aload 1
aastore
dup
iconst_2
aload 6
aastore
dup
iconst_3
aload 2
aastore
invokestatic com.oracle.truffle.polyglot.GuestToHostRootNode.guestToHostCall:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/CallTarget;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod$MHBase;
0 8 1 receiver Ljava/lang/Object;
0 8 2 arguments [Ljava/lang/Object;
0 8 3 engine Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
0 8 4 languageContext Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
0 8 5 node Lcom/oracle/truffle/api/nodes/Node;
1 8 6 handle Ljava/lang/invoke/MethodHandle;
6 8 7 target Lcom/oracle/truffle/api/CallTarget;
MethodParameters:
Name Flags
receiver
arguments
engine
languageContext
node
}
SourceFile: "HostMethodDesc.java"
NestHost: com.oracle.truffle.polyglot.HostMethodDesc
InnerClasses:
public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
abstract SingleMethod = com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod of com.oracle.truffle.polyglot.HostMethodDesc
abstract MHBase = com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase of com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod