public class com.oracle.truffle.js.test.builtins.EvalTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.js.test.builtins.EvalTest
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
public void testNestedIndirectEvalCaller();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "js.v8-compat"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 3
start local 3 2: aload 3
ldc "js"
ldc "var obj = {toString() {return (0, eval)(`'return 42;'`);}};\nvar fn = new Function(obj);\nfn();"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
astore 4
start local 4 3: ldc 42
aload 4
invokevirtual org.graalvm.polyglot.Value.asInt:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
4: aload 3
ldc "js"
ldc "var obj = {toString() {return (0, eval)('throw new Error();');}};\nvar fn = new Function(obj);\nfn();"
5: ldc "test.js"
6: invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
7: invokevirtual org.graalvm.polyglot.Source$Builder.buildLiteral:()Lorg/graalvm/polyglot/Source;
8: invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
9: goto 12
StackMap locals: com.oracle.truffle.js.test.builtins.EvalTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value
StackMap stack: org.graalvm.polyglot.PolyglotException
10: astore 5
start local 5 11: aload 5
invokevirtual org.graalvm.polyglot.PolyglotException.getPolyglotStackTrace:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.PolyglotException$StackFrame
invokevirtual org.graalvm.polyglot.PolyglotException$StackFrame.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
invokevirtual org.graalvm.polyglot.Source.getName:()Ljava/lang/String;
ldc "test.js:1"
invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
end local 5 12: StackMap locals:
StackMap stack:
aload 3
ldc "js"
ldc "var obj = {toString() {return (0, eval)(`'throw new Error();'`);}};\nvar fn = new Function(obj);\nfn();"
13: ldc "test.js"
14: invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
15: invokevirtual org.graalvm.polyglot.Source$Builder.buildLiteral:()Lorg/graalvm/polyglot/Source;
16: invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
17: goto 20
StackMap locals:
StackMap stack: org.graalvm.polyglot.PolyglotException
18: astore 5
start local 5 19: aload 5
invokevirtual org.graalvm.polyglot.PolyglotException.getPolyglotStackTrace:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.PolyglotException$StackFrame
invokevirtual org.graalvm.polyglot.PolyglotException$StackFrame.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
invokevirtual org.graalvm.polyglot.Source.getName:()Ljava/lang/String;
ldc "test.js:2"
invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
end local 5 end local 4 20: StackMap locals:
StackMap stack:
aload 3
ifnull 26
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 26
StackMap locals:
StackMap stack: java.lang.Throwable
21: astore 1
aload 3
ifnull 22
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
22: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
23: astore 2
aload 1
ifnonnull 24
aload 2
astore 1
goto 25
StackMap locals:
StackMap stack:
24: aload 1
aload 2
if_acmpeq 25
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
25: aload 1
athrow
26: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
2 22 3 context Lorg/graalvm/polyglot/Context;
3 20 4 result Lorg/graalvm/polyglot/Value;
11 12 5 e Lorg/graalvm/polyglot/PolyglotException;
19 20 5 e Lorg/graalvm/polyglot/PolyglotException;
Exception table:
from to target type
4 9 10 Class org.graalvm.polyglot.PolyglotException
12 17 18 Class org.graalvm.polyglot.PolyglotException
2 20 21 any
1 23 23 any
RuntimeVisibleAnnotations:
org.junit.Test()
private static void assertTrueResult(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "js.v8-compat"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 3
start local 3 2: aload 3
ldc "js"
aload 0
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
astore 4
start local 4 3: aload 4
invokevirtual org.graalvm.polyglot.Value.isBoolean:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
4: aload 4
invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
end local 4 5: aload 3
ifnull 11
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 11
StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
6: astore 1
aload 3
ifnull 7
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
7: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
8: astore 2
aload 1
ifnonnull 9
aload 2
astore 1
goto 10
StackMap locals:
StackMap stack:
9: aload 1
aload 2
if_acmpeq 10
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
10: aload 1
athrow
11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 source Ljava/lang/String;
2 7 3 context Lorg/graalvm/polyglot/Context;
3 5 4 result Lorg/graalvm/polyglot/Value;
Exception table:
from to target type
2 5 6 any
1 8 8 any
MethodParameters:
Name Flags
source
public void testCallerInEval();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "eval('var a = function() { return a.caller; }; var b = function() { return a(); }; b() == b;')"
invokestatic com.oracle.truffle.js.test.builtins.EvalTest.assertTrueResult:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testCallerInIndirectEval();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "(0, eval)('var a = function() { return a.caller; }; var b = function() { return a(); }; b() == b;')"
invokestatic com.oracle.truffle.js.test.builtins.EvalTest.assertTrueResult:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testCallerAcrossEval();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "var a = function() { return a.caller; }; var b = function() { return eval('a()'); }; b() == b;"
invokestatic com.oracle.truffle.js.test.builtins.EvalTest.assertTrueResult:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testCallerAcrossIndirectEval();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "var a = function() { return a.caller; }; var b = function() { return (0, eval)('a()'); }; b() == b;"
invokestatic com.oracle.truffle.js.test.builtins.EvalTest.assertTrueResult:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/builtins/EvalTest;
RuntimeVisibleAnnotations:
org.junit.Test()
}
SourceFile: "EvalTest.java"
InnerClasses:
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
public final StackFrame = org.graalvm.polyglot.PolyglotException$StackFrame of org.graalvm.polyglot.PolyglotException
public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source