public final class com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode extends com.oracle.truffle.js.nodes.access.PropertyGetNode$LinkedPropertyGetNode
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode
super_class: com.oracle.truffle.js.nodes.access.PropertyGetNode$LinkedPropertyGetNode
{
private com.oracle.truffle.js.nodes.interop.ImportValueNode importValueNode;
descriptor: Lcom/oracle/truffle/js/nodes/interop/ImportValueNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.cast.JSToObjectNode toObjectNode;
descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.interop.ForeignObjectPrototypeNode foreignObjectPrototypeNode;
descriptor: Lcom/oracle/truffle/js/nodes/interop/ForeignObjectPrototypeNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.access.PropertyGetNode getFromJSObjectNode;
descriptor: Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private final boolean isLength;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean isMethod;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean isGlobal;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.oracle.truffle.js.runtime.JSContext context;
descriptor: Lcom/oracle/truffle/js/runtime/JSContext;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private com.oracle.truffle.api.interop.InteropLibrary interop;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.api.interop.InteropLibrary getterInterop;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private final com.oracle.truffle.api.profiles.BranchProfile errorBranch;
descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean optimistic;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.Object, boolean, boolean, com.oracle.truffle.js.runtime.JSContext);
descriptor: (Ljava/lang/Object;ZZLcom/oracle/truffle/js/runtime/JSContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
new com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode
dup
invokespecial com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode.<init>:()V
invokespecial com.oracle.truffle.js.nodes.access.PropertyGetNode$LinkedPropertyGetNode.<init>:(Lcom/oracle/truffle/js/nodes/access/PropertyCacheNode$ReceiverCheckNode;)V
1: aload 0
invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.errorBranch:Lcom/oracle/truffle/api/profiles/BranchProfile;
2: aload 0
iconst_1
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.optimistic:Z
3: aload 0
aload 4
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
4: aload 0
invokestatic com.oracle.truffle.js.nodes.interop.ImportValueNode.create:()Lcom/oracle/truffle/js/nodes/interop/ImportValueNode;
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.importValueNode:Lcom/oracle/truffle/js/nodes/interop/ImportValueNode;
5: aload 0
aload 4
invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.toObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
6: aload 0
aload 1
ldc "length"
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isLength:Z
7: aload 0
iload 2
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isMethod:Z
8: aload 0
iload 3
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isGlobal:Z
9: aload 0
invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
iconst_5
invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 11 1 key Ljava/lang/Object;
0 11 2 isMethod Z
0 11 3 isGlobal Z
0 11 4 context Lcom/oracle/truffle/js/runtime/JSContext;
MethodParameters:
Name Flags
key
isMethod
isGlobal
context
private java.lang.Object foreignGet(java.lang.Object, com.oracle.truffle.js.nodes.access.PropertyGetNode);
descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getKey:()Ljava/lang/Object;
astore 3
start local 3 1: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNull:(Ljava/lang/Object;)Z
ifeq 4
2: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.errorBranch:Lcom/oracle/truffle/api/profiles/BranchProfile;
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
3: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
aload 3
aload 1
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isMethod:Z
aload 0
invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorCannotGetProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;Ljava/lang/Object;ZLcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
athrow
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.toObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 5: aload 1
aload 4
if_acmpeq 8
6: getstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
ifne 7
aload 4
invokestatic com.oracle.truffle.js.runtime.objects.JSObject.isJSObject:(Ljava/lang/Object;)Z
ifne 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals: java.lang.Object
StackMap stack:
aload 0
aload 4
aload 3
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObject:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
8: StackMap locals:
StackMap stack:
aload 3
instanceof java.lang.String
ifne 10
9: getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
areturn
10: StackMap locals:
StackMap stack:
aload 3
checkcast java.lang.String
astore 5
start local 5 11: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
ifeq 15
12: aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.tryGetters:(Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
astore 6
start local 6 13: aload 6
ifnull 15
14: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.importValueNode:Lcom/oracle/truffle/js/nodes/interop/ImportValueNode;
aload 6
invokevirtual com.oracle.truffle.js.nodes.interop.ImportValueNode.executeWithTarget:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 6 15: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.optimistic:Z
ifeq 23
16: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
aload 5
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 6
start local 6 17: goto 29
end local 6 StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
18: pop
19: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
20: aload 0
iconst_0
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.optimistic:Z
21: aload 0
aload 1
aload 3
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.maybeGetFromPrototype:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 22: goto 29
end local 6 23: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
aload 5
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberReadable:(Ljava/lang/Object;Ljava/lang/String;)Z
ifeq 28
24: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
aload 5
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 6
start local 6 25: goto 29
end local 6 StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
26: pop
27: getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
areturn
28: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 3
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.maybeGetFromPrototype:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 29: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.importValueNode:Lcom/oracle/truffle/js/nodes/interop/ImportValueNode;
aload 6
invokevirtual com.oracle.truffle.js.nodes.interop.ImportValueNode.executeWithTarget:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
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 30 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 30 1 thisObj Ljava/lang/Object;
0 30 2 root Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
1 30 3 key Ljava/lang/Object;
5 30 4 object Ljava/lang/Object;
11 30 5 stringKey Ljava/lang/String;
13 15 6 result Ljava/lang/Object;
17 18 6 foreignResult Ljava/lang/Object;
22 23 6 foreignResult Ljava/lang/Object;
25 26 6 foreignResult Ljava/lang/Object;
29 30 6 foreignResult Ljava/lang/Object;
Exception table:
from to target type
16 17 18 Class com.oracle.truffle.api.interop.UnknownIdentifierException
16 17 18 Class com.oracle.truffle.api.interop.UnsupportedMessageException
24 25 26 Class com.oracle.truffle.api.interop.UnknownIdentifierException
24 25 26 Class com.oracle.truffle.api.interop.UnsupportedMessageException
MethodParameters:
Name Flags
thisObj
root
private java.lang.Object maybeGetFromPrototype(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.getContextOptions:()Lcom/oracle/truffle/js/runtime/JSContextOptions;
invokevirtual com.oracle.truffle.js.runtime.JSContextOptions.hasForeignObjectPrototype:()Z
ifeq 6
1: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.foreignObjectPrototypeNode:Lcom/oracle/truffle/js/nodes/interop/ForeignObjectPrototypeNode;
ifnonnull 4
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: aload 0
aload 0
invokestatic com.oracle.truffle.js.nodes.interop.ForeignObjectPrototypeNode.create:()Lcom/oracle/truffle/js/nodes/interop/ForeignObjectPrototypeNode;
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
checkcast com.oracle.truffle.js.nodes.interop.ForeignObjectPrototypeNode
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.foreignObjectPrototypeNode:Lcom/oracle/truffle/js/nodes/interop/ForeignObjectPrototypeNode;
4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.foreignObjectPrototypeNode:Lcom/oracle/truffle/js/nodes/interop/ForeignObjectPrototypeNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.interop.ForeignObjectPrototypeNode.executeDynamicObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 3
start local 3 5: aload 0
aload 3
aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObject:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 3 6: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 7 1 thisObj Ljava/lang/Object;
0 7 2 key Ljava/lang/Object;
5 6 3 prototype Lcom/oracle/truffle/api/object/DynamicObject;
MethodParameters:
Name Flags
thisObj
key
private java.lang.Object getFromJSObject(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
ifne 1
aload 1
invokestatic com.oracle.truffle.js.runtime.objects.JSObject.isJSObject:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObjectNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
ifnonnull 4
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: aload 0
aload 0
aload 2
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.create:(Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
checkcast com.oracle.truffle.js.nodes.access.PropertyGetNode
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObjectNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
4: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
ifne 5
aload 2
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObjectNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getFromJSObjectNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 6 1 object Ljava/lang/Object;
0 6 2 key Ljava/lang/Object;
MethodParameters:
Name Flags
object
key
private java.lang.Object tryGetters(java.lang.Object, com.oracle.truffle.js.nodes.access.PropertyGetNode);
descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
invokevirtual com.oracle.truffle.js.runtime.JSRealm.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
astore 3
start local 3 2: aload 3
aload 1
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.isHostObject:(Ljava/lang/Object;)Z
ifeq 9
3: aload 0
aload 1
ldc "get"
aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.tryInvokeGetter:(Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
astore 4
start local 4 4: aload 4
ifnull 6
5: aload 4
areturn
6: StackMap locals: com.oracle.truffle.api.TruffleLanguage$Env java.lang.Object
StackMap stack:
aload 0
aload 1
ldc "is"
aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.tryInvokeGetter:(Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
astore 4
7: aload 4
ifnull 9
8: aload 4
areturn
end local 4 9: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 10 1 thisObj Ljava/lang/Object;
0 10 2 root Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
2 10 3 env Lcom/oracle/truffle/api/TruffleLanguage$Env;
4 9 4 result Ljava/lang/Object;
MethodParameters:
Name Flags
thisObj
root
private java.lang.Object tryInvokeGetter(java.lang.Object, java.lang.String, com.oracle.truffle.js.nodes.access.PropertyGetNode);
descriptor: (Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 3
aload 2
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getAccessorKey:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 2: aload 4
ifnonnull 4
3: aconst_null
areturn
4: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
ifnonnull 7
5: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
6: aload 0
aload 0
invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
iconst_5
invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
checkcast com.oracle.truffle.api.interop.InteropLibrary
putfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
7: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
aload 4
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberInvocable:(Ljava/lang/Object;Ljava/lang/String;)Z
ifne 9
8: aconst_null
areturn
9: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getterInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
aload 4
getstatic com.oracle.truffle.js.runtime.JSArguments.EMPTY_ARGUMENTS_ARRAY:[Ljava/lang/Object;
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
10: areturn
11: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
pop
12: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 13 1 thisObj Ljava/lang/Object;
0 13 2 prefix Ljava/lang/String;
0 13 3 root Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
2 13 4 getterKey Ljava/lang/String;
Exception table:
from to target type
9 10 11 Class com.oracle.truffle.api.interop.UnknownIdentifierException
9 10 11 Class com.oracle.truffle.api.interop.UnsupportedMessageException
9 10 11 Class com.oracle.truffle.api.interop.UnsupportedTypeException
9 10 11 Class com.oracle.truffle.api.interop.ArityException
MethodParameters:
Name Flags
thisObj
prefix
root
private java.lang.Object getSize(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getArraySize:(Ljava/lang/Object;)J
invokestatic com.oracle.truffle.js.runtime.JSRuntime.longToIntOrDouble:(J)Ljava/lang/Number;
1: areturn
2: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
astore 2
start local 2 3: aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.errorBranch:Lcom/oracle/truffle/api/profiles/BranchProfile;
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
4: aload 1
aload 2
ldc "getArraySize"
aload 0
invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorInteropException:(Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropException;Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 5 1 thisObj Ljava/lang/Object;
3 5 2 e Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
Exception table:
from to target type
0 1 2 Class com.oracle.truffle.api.interop.UnsupportedMessageException
MethodParameters:
Name Flags
thisObj
protected java.lang.Object getValue(java.lang.Object, java.lang.Object, java.lang.Object, com.oracle.truffle.js.nodes.access.PropertyGetNode, boolean);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;Z)Ljava/lang/Object;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, 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.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isMethod:Z
ifeq 2
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isGlobal:Z
ifne 2
1: aload 1
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.isLength:Z
ifeq 4
aload 0
getfield com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.interop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasArrayElements:(Ljava/lang/Object;)Z
ifeq 4
3: aload 0
aload 1
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.getSize:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
4: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 4
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode.foreignGet:(Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;)Ljava/lang/Object;
areturn
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 5 0 this Lcom/oracle/truffle/js/nodes/access/PropertyGetNode$ForeignPropertyGetNode;
0 5 1 thisObj Ljava/lang/Object;
0 5 2 receiver Ljava/lang/Object;
0 5 3 defaultValue Ljava/lang/Object;
0 5 4 root Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
0 5 5 guard Z
MethodParameters:
Name Flags
thisObj
receiver
defaultValue
root
guard
}
SourceFile: "PropertyGetNode.java"
NestHost: com.oracle.truffle.js.nodes.access.PropertyGetNode
InnerClasses:
public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
protected final ForeignLanguageCheckNode = com.oracle.truffle.js.nodes.access.PropertyCacheNode$ForeignLanguageCheckNode of com.oracle.truffle.js.nodes.access.PropertyCacheNode
protected abstract ReceiverCheckNode = com.oracle.truffle.js.nodes.access.PropertyCacheNode$ReceiverCheckNode of com.oracle.truffle.js.nodes.access.PropertyCacheNode
public final ForeignPropertyGetNode = com.oracle.truffle.js.nodes.access.PropertyGetNode$ForeignPropertyGetNode of com.oracle.truffle.js.nodes.access.PropertyGetNode
public abstract LinkedPropertyGetNode = com.oracle.truffle.js.nodes.access.PropertyGetNode$LinkedPropertyGetNode of com.oracle.truffle.js.nodes.access.PropertyGetNode