public abstract class com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode extends com.oracle.truffle.js.nodes.JavaScriptBaseNode
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode
super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
protected final com.oracle.truffle.js.runtime.JSContext context;
descriptor: Lcom/oracle/truffle/js/runtime/JSContext;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private boolean lessThan4;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private com.oracle.truffle.js.nodes.access.PropertyGetNode getPrototypeNode;
descriptor: Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.binary.InstanceofNode$IsBoundFunctionCacheNode boundFuncCacheNode;
descriptor: Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$IsBoundFunctionCacheNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
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/binary/InstanceofNode;
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.binary.InstanceofNode$OrdinaryHasInstanceNode.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public abstract boolean executeBoolean(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
left
right
protected void <init>(com.oracle.truffle.js.runtime.JSContext);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
1: aload 0
iconst_1
putfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.lessThan4:Z
2: aload 0
aload 1
putfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
3: aload 0
aload 1
invokestatic com.oracle.truffle.js.nodes.binary.InstanceofNode$IsBoundFunctionCacheNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$IsBoundFunctionCacheNode;
putfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.boundFuncCacheNode:Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$IsBoundFunctionCacheNode;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 5 1 context Lcom/oracle/truffle/js/runtime/JSContext;
MethodParameters:
Name Flags
context
public static com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode create(com.oracle.truffle.js.runtime.JSContext);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tOrdinaryHasInstanceNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
context
private com.oracle.truffle.api.object.DynamicObject getConstructorPrototype(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.profiles.BranchProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/profiles/BranchProfile;)Lcom/oracle/truffle/api/object/DynamicObject;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.getPrototypeNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
ifnonnull 3
1: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
2: aload 0
aload 0
ldc "prototype"
aload 0
getfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.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.binary.InstanceofNode$OrdinaryHasInstanceNode.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.binary.InstanceofNode$OrdinaryHasInstanceNode.getPrototypeNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.getPrototypeNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 4: aload 3
invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
ifne 7
5: aload 2
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
6: aload 0
aload 1
aload 3
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.createTypeErrorInvalidPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/JSException;
athrow
7: StackMap locals: java.lang.Object
StackMap stack:
aload 3
checkcast com.oracle.truffle.api.object.DynamicObject
areturn
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/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 8 1 rhs Lcom/oracle/truffle/api/object/DynamicObject;
0 8 2 invalidPrototypeBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
4 8 3 proto Ljava/lang/Object;
MethodParameters:
Name Flags
rhs
invalidPrototypeBranch
protected boolean doNotCallable(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 1 1 obj Ljava/lang/Object;
0 1 2 check Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isCallable(check)"})
MethodParameters:
Name Flags
obj
check
protected boolean doIsBound(java.lang.Object, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.nodes.binary.InstanceofNode);
descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/binary/InstanceofNode;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.getBoundTargetFunction:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 4
start local 4 1: aload 3
aload 1
aload 4
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode.executeBoolean:(Ljava/lang/Object;Ljava/lang/Object;)Z
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 2 1 obj Ljava/lang/Object;
0 2 2 check Lcom/oracle/truffle/api/object/DynamicObject;
0 2 3 instanceofNode Lcom/oracle/truffle/js/nodes/binary/InstanceofNode;
1 2 4 boundTargetFunction Lcom/oracle/truffle/api/object/DynamicObject;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isJSFunction(check)", "isBoundFunction(check)"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "create(context)")
MethodParameters:
Name Flags
obj
check
instanceofNode
protected boolean doNotAnObject(java.lang.Object, com.oracle.truffle.api.object.DynamicObject);
descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 1 1 left Ljava/lang/Object;
0 1 2 right Lcom/oracle/truffle/api/object/DynamicObject;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isJSObject(left)", "isJSFunction(right)", "!isBoundFunction(right)"})
MethodParameters:
Name Flags
left
right
protected boolean doNotAnObjectProxy(java.lang.Object, com.oracle.truffle.api.object.DynamicObject);
descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 1 1 left Ljava/lang/Object;
0 1 2 right Lcom/oracle/truffle/api/object/DynamicObject;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isJSObject(left)", "isJSProxy(right)", "isCallableProxy(right)"})
MethodParameters:
Name Flags
left
right
protected boolean doJSObject(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.nodes.access.IsJSObjectNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=15, args_size=13
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 start local 10 start local 11 start local 12 0: aload 0
aload 2
aload 12
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.getConstructorPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/profiles/BranchProfile;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 13
start local 13 1: aload 0
getfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.lessThan4:Z
ifeq 21
2: aload 4
aload 1
invokevirtual com.oracle.truffle.js.nodes.access.GetPrototypeNode.executeJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 14
start local 14 3: aload 14
aload 13
if_acmpne 6
4: aload 7
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
5: iconst_1
ireturn
6: StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject
StackMap stack:
aload 14
getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
if_acmpne 9
7: aload 8
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
8: iconst_0
ireturn
9: StackMap locals:
StackMap stack:
aload 9
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
10: aload 5
aload 14
invokevirtual com.oracle.truffle.js.nodes.access.GetPrototypeNode.executeJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 14
11: aload 14
aload 13
if_acmpne 13
12: iconst_1
ireturn
13: StackMap locals:
StackMap stack:
aload 14
getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
if_acmpne 15
14: iconst_0
ireturn
15: StackMap locals:
StackMap stack:
aload 10
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
16: aload 6
aload 14
invokevirtual com.oracle.truffle.js.nodes.access.GetPrototypeNode.executeJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 14
17: aload 14
aload 13
if_acmpne 19
18: iconst_1
ireturn
19: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
20: aload 0
iconst_0
putfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.lessThan4:Z
end local 14 21: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 13
aload 6
aload 11
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.doJSObject4:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
ireturn
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 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 22 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 22 1 left Lcom/oracle/truffle/api/object/DynamicObject;
0 22 2 right Lcom/oracle/truffle/api/object/DynamicObject;
0 22 3 isObjectNode Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
0 22 4 getPrototype1Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 22 5 getPrototype2Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 22 6 getPrototype3Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 22 7 firstTrue Lcom/oracle/truffle/api/profiles/BranchProfile;
0 22 8 firstFalse Lcom/oracle/truffle/api/profiles/BranchProfile;
0 22 9 need2Hops Lcom/oracle/truffle/api/profiles/BranchProfile;
0 22 10 need3Hops Lcom/oracle/truffle/api/profiles/BranchProfile;
0 22 11 errorBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
0 22 12 invalidPrototypeBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
1 22 13 ctorPrototype Lcom/oracle/truffle/api/object/DynamicObject;
3 21 14 proto Lcom/oracle/truffle/api/object/DynamicObject;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isObjectNode.executeBoolean(left)", "isJSFunction(right)", "!isBoundFunction(right)"}, limit = "1")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "isObjectNode")
3:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype1Node")
4:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype2Node")
5:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype3Node")
6:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "firstTrue")
7:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "firstFalse")
8:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "need2Hops")
9:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "need3Hops")
10:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "errorBranch")
11:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "invalidPrototypeBranch")
MethodParameters:
Name Flags
left
right
isObjectNode
getPrototype1Node
getPrototype2Node
getPrototype3Node
firstTrue
firstFalse
need2Hops
need3Hops
errorBranch
invalidPrototypeBranch
protected boolean doJSObjectProxy(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.nodes.access.IsJSObjectNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=13, locals=13, args_size=13
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 start local 10 start local 11 start local 12 0: aload 0
aload 1
aload 2
aload 3
aload 4
aload 5
aload 6
aload 7
aload 8
aload 9
aload 10
aload 11
aload 12
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.doJSObject:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
ireturn
end local 12 end local 11 end local 10 end local 9 end local 8 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 1 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 1 1 left Lcom/oracle/truffle/api/object/DynamicObject;
0 1 2 right Lcom/oracle/truffle/api/object/DynamicObject;
0 1 3 isObjectNode Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
0 1 4 getPrototype1Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 1 5 getPrototype2Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 1 6 getPrototype3Node Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 1 7 firstTrue Lcom/oracle/truffle/api/profiles/BranchProfile;
0 1 8 firstFalse Lcom/oracle/truffle/api/profiles/BranchProfile;
0 1 9 need2Hops Lcom/oracle/truffle/api/profiles/BranchProfile;
0 1 10 need3Hops Lcom/oracle/truffle/api/profiles/BranchProfile;
0 1 11 errorBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
0 1 12 invalidPrototypeBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isObjectNode.executeBoolean(left)", "isJSProxy(right)", "isCallableProxy(right)"}, limit = "1")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "isObjectNode")
3:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype1Node")
4:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype2Node")
5:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "getPrototype3Node")
6:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "firstTrue")
7:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "firstFalse")
8:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "need2Hops")
9:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "need3Hops")
10:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "errorBranch")
11:
com.oracle.truffle.api.dsl.Cached()
com.oracle.truffle.api.dsl.Cached$Shared(value = "invalidPrototypeBranch")
MethodParameters:
Name Flags
left
right
isObjectNode
getPrototype1Node
getPrototype2Node
getPrototype3Node
firstTrue
firstFalse
need2Hops
need3Hops
errorBranch
invalidPrototypeBranch
private boolean doJSObject4(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.nodes.access.GetPrototypeNode, com.oracle.truffle.api.profiles.BranchProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;Lcom/oracle/truffle/api/profiles/BranchProfile;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
astore 5
start local 5 1: iconst_0
istore 6
start local 6 2: goto 9
3: StackMap locals: com.oracle.truffle.api.object.DynamicObject int
StackMap stack:
iinc 6 1
4: iload 6
aload 0
getfield com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.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.getMaxPrototypeChainLength:()I
if_icmple 7
5: aload 4
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
6: ldc "prototype chain length exceeded"
invokestatic com.oracle.truffle.js.runtime.Errors.createRangeError:(Ljava/lang/String;)Lcom/oracle/truffle/js/runtime/JSException;
athrow
7: StackMap locals:
StackMap stack:
aload 5
aload 2
if_acmpne 9
8: iconst_1
ireturn
9: StackMap locals:
StackMap stack:
aload 3
aload 5
invokevirtual com.oracle.truffle.js.nodes.access.GetPrototypeNode.executeJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
dup
astore 5
getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
if_acmpne 3
10: iconst_0
ireturn
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 11 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 11 1 obj Lcom/oracle/truffle/api/object/DynamicObject;
0 11 2 check Lcom/oracle/truffle/api/object/DynamicObject;
0 11 3 getLoopedPrototypeNode Lcom/oracle/truffle/js/nodes/access/GetPrototypeNode;
0 11 4 errorBranch Lcom/oracle/truffle/api/profiles/BranchProfile;
1 11 5 proto Lcom/oracle/truffle/api/object/DynamicObject;
2 11 6 counter I
MethodParameters:
Name Flags
obj
check
getLoopedPrototypeNode
errorBranch
protected boolean isBoundFunction(com.oracle.truffle.api.object.DynamicObject);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode.$assertionsDisabled:Z
ifne 1
aload 1
invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(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.binary.InstanceofNode$OrdinaryHasInstanceNode.boundFuncCacheNode:Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$IsBoundFunctionCacheNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.binary.InstanceofNode$IsBoundFunctionCacheNode.executeBoolean:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 2 1 func Lcom/oracle/truffle/api/object/DynamicObject;
MethodParameters:
Name Flags
func
private com.oracle.truffle.js.runtime.JSException createTypeErrorInvalidPrototype(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/JSException;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: new java.lang.StringBuilder
dup
ldc "\"prototype\" of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokestatic com.oracle.truffle.js.runtime.JSRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " is not an Object, it is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokestatic com.oracle.truffle.js.runtime.JSRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
invokestatic com.oracle.truffle.js.runtime.Errors.createTypeError:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/nodes/binary/InstanceofNode$OrdinaryHasInstanceNode;
0 1 1 obj Lcom/oracle/truffle/api/object/DynamicObject;
0 1 2 proto Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
obj
proto
}
SourceFile: "InstanceofNode.java"
NestHost: com.oracle.truffle.js.nodes.binary.InstanceofNode
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
public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
public abstract IsBoundFunctionCacheNode = com.oracle.truffle.js.nodes.binary.InstanceofNode$IsBoundFunctionCacheNode of com.oracle.truffle.js.nodes.binary.InstanceofNode
public abstract OrdinaryHasInstanceNode = com.oracle.truffle.js.nodes.binary.InstanceofNode$OrdinaryHasInstanceNode of com.oracle.truffle.js.nodes.binary.InstanceofNode