public class com.oracle.truffle.js.test.interop.ExceptionInteropTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.js.test.interop.ExceptionInteropTest
super_class: java.lang.Object
{
private static int EXCEPTION_LINE_NUMBER;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
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/interop/ExceptionInteropTest;
public static void initializeExceptionLineNumber();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=9, args_size=0
0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 0
start local 0 1: iconst_m1
istore 1
start local 1 2: aconst_null
astore 2
aconst_null
astore 3
3: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 4: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
aload 0
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 5: aload 5
invokevirtual org.graalvm.polyglot.Context.enter:()V
6: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
pop
7: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aconst_null
aconst_null
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 6
start local 6 8: aload 6
invokevirtual com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.methodThatThrowsException:()V
9: goto 12
StackMap locals: org.graalvm.polyglot.HostAccess int java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
StackMap stack: java.lang.UnsupportedOperationException
10: astore 7
start local 7 11: aload 7
invokevirtual java.lang.UnsupportedOperationException.getStackTrace:()[Ljava/lang/StackTraceElement;
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
istore 1
end local 7 12: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.graalvm.polyglot.Context.leave:()V
end local 6 13: aload 5
ifnull 16
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 16
StackMap locals: org.graalvm.polyglot.HostAccess int java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
14: astore 2
aload 5
ifnull 15
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
15: aload 2
athrow
StackMap locals:
StackMap stack:
16: aload 4
ifnull 27
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 27
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 3
aload 2
ifnonnull 18
aload 3
astore 2
goto 19
StackMap locals:
StackMap stack:
18: aload 2
aload 3
if_acmpeq 19
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 4
ifnull 20
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
20: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
21: astore 3
aload 2
ifnonnull 22
aload 3
astore 2
goto 23
StackMap locals:
StackMap stack:
22: aload 2
aload 3
if_acmpeq 23
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
23: aload 2
athrow
StackMap locals: org.graalvm.polyglot.HostAccess int
StackMap stack: java.lang.Throwable
24: astore 8
25: iload 1
putstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
26: aload 8
athrow
27: StackMap locals:
StackMap stack:
iload 1
putstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
28: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 29 0 hostAccess Lorg/graalvm/polyglot/HostAccess;
2 29 1 lineNumber I
4 20 4 graalEngine Lorg/graalvm/polyglot/Engine;
5 15 5 context Lorg/graalvm/polyglot/Context;
8 13 6 toBePassedToJS Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
11 12 7 e Ljava/lang/UnsupportedOperationException;
Exception table:
from to target type
8 9 10 Class java.lang.UnsupportedOperationException
5 13 14 any
4 16 17 any
3 21 21 any
2 24 24 any
RuntimeVisibleAnnotations:
org.junit.BeforeClass()
public void testJSException();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 3
start local 3 2: aload 3
ldc "js"
ldc "\nisNotDefined.doesNotMakeSense = 1;\n"
ldc "isnotdefined.js"
invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
3: ldc "PolyglotException not thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
4: aload 3
ifnull 16
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 16
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
5: astore 1
aload 3
ifnull 6
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
6: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 2
aload 1
ifnonnull 8
aload 2
astore 1
goto 9
StackMap locals:
StackMap stack:
8: aload 1
aload 2
if_acmpeq 9
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
9: aload 1
athrow
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest
StackMap stack: org.graalvm.polyglot.PolyglotException
10: astore 1
start local 1 11: aload 1
invokevirtual org.graalvm.polyglot.PolyglotException.isGuestException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
12: ldc "ReferenceError: isNotDefined is not defined"
aload 1
invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
13: aload 1
invokevirtual org.graalvm.polyglot.PolyglotException.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 2
start local 2 14: ldc "isnotdefined.js"
aload 2
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
15: ldc 2
aload 2
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 2 end local 1 16: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
2 6 3 context Lorg/graalvm/polyglot/Context;
11 16 1 e Lorg/graalvm/polyglot/PolyglotException;
14 16 2 stackTrace [Ljava/lang/StackTraceElement;
Exception table:
from to target type
2 4 5 any
1 7 7 any
0 10 10 Class org.graalvm.polyglot.PolyglotException
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testNestedJSException();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 3: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 4: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 5: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aload 4
aload 1
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 7
start local 7 6: aload 6
ldc "objectFromJava"
aload 7
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
7: aload 5
ldc "js"
ldc "\nobjectFromJava.methodThatThrowsJSException();\n"
ldc "testmain.js"
invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
8: ldc "PolyglotException not thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
end local 7 end local 6 9: aload 5
ifnull 12
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 12
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
10: astore 2
aload 5
ifnull 11
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
11: aload 2
athrow
StackMap locals:
StackMap stack:
12: aload 4
ifnull 30
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 30
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 3
aload 2
ifnonnull 14
aload 3
astore 2
goto 15
StackMap locals:
StackMap stack:
14: aload 2
aload 3
if_acmpeq 15
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
15: aload 4
ifnull 16
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
16: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 3
aload 2
ifnonnull 18
aload 3
astore 2
goto 19
StackMap locals:
StackMap stack:
18: aload 2
aload 3
if_acmpeq 19
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 2
athrow
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess
StackMap stack: org.graalvm.polyglot.PolyglotException
20: astore 2
start local 2 21: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.isHostException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
22: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
instanceof org.graalvm.polyglot.PolyglotException
invokestatic org.junit.Assert.assertTrue:(Z)V
23: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
checkcast org.graalvm.polyglot.PolyglotException
invokevirtual org.graalvm.polyglot.PolyglotException.isGuestException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
24: ldc "ReferenceError: isNotDefined is not defined"
aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
25: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getStackTrace:()[Ljava/lang/StackTraceElement;
invokestatic java.util.Arrays.stream:([Ljava/lang/Object;)Ljava/util/stream/Stream;
invokedynamic test()Ljava/util/function/Predicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Z
com/oracle/truffle/js/test/interop/ExceptionInteropTest.lambda$0(Ljava/lang/StackTraceElement;)Z (6)
(Ljava/lang/StackTraceElement;)Z
invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
invokedynamic apply()Ljava/util/function/IntFunction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(I)Ljava/lang/Object;
com/oracle/truffle/js/test/interop/ExceptionInteropTest.lambda$1(I)[Ljava/lang/StackTraceElement; (6)
(I)[Ljava/lang/StackTraceElement;
invokeinterface java.util.stream.Stream.toArray:(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
checkcast java.lang.StackTraceElement[]
astore 3
start local 3 26: ldc "nestedisnotdefined.js"
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
27: ldc 2
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
28: ldc "testmain.js"
aload 3
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
29: ldc 2
aload 3
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 3 end local 2 30: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
1 31 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 16 4 graalEngine Lorg/graalvm/polyglot/Engine;
4 11 5 context Lorg/graalvm/polyglot/Context;
5 9 6 bindings Lorg/graalvm/polyglot/Value;
6 9 7 objectFromJava Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
21 30 2 e Lorg/graalvm/polyglot/PolyglotException;
26 30 3 stackTrace [Ljava/lang/StackTraceElement;
Exception table:
from to target type
4 9 10 any
3 12 13 any
2 17 17 any
1 20 20 Class org.graalvm.polyglot.PolyglotException
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testCaughtJSException();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 3: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 4: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 5: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aload 4
aload 1
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 7
start local 7 6: aload 6
ldc "objectFromJava"
aload 7
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
7: aload 5
ldc "js"
ldc "var ex;\ntry {\n isNotDefined.doesNotMakeSense = 1;\n} catch (e) {\n objectFromJava.methodWithMapArgument(e);\n ex = e;}\nex;\n"
8: ldc "isnotdefinedcaught.js"
9: invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
10: invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
11: invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
astore 8
start local 8 12: aload 8
invokevirtual org.graalvm.polyglot.Value.hasMembers:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
13: aload 8
invokevirtual org.graalvm.polyglot.Value.getMemberKeys:()Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
14: aload 8
ldc "name"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.isString:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
15: ldc "ReferenceError"
aload 8
ldc "name"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
16: aload 8
ldc "message"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.isString:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
17: ldc "isNotDefined is not defined"
aload 8
ldc "message"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
18: aload 8
ldc "stack"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.isString:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
19: ldc "ReferenceError: isNotDefined is not defined\n at isnotdefinedcaught.js:3:5"
20: aload 8
ldc "stack"
invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
21: invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
22: aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.map:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
23: ldc "ReferenceError"
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.map:Ljava/util/Map;
ldc "name"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
24: ldc "isNotDefined is not defined"
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.map:Ljava/util/Map;
ldc "message"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
25: ldc "ReferenceError: isNotDefined is not defined\n at isnotdefinedcaught.js:3:5"
26: aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.map:Ljava/util/Map;
ldc "stack"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
27: invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
end local 8 end local 7 end local 6 28: aload 5
ifnull 31
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 31
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
29: astore 2
aload 5
ifnull 30
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
30: aload 2
athrow
StackMap locals:
StackMap stack:
31: aload 4
ifnull 39
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 39
StackMap locals:
StackMap stack: java.lang.Throwable
32: astore 3
aload 2
ifnonnull 33
aload 3
astore 2
goto 34
StackMap locals:
StackMap stack:
33: aload 2
aload 3
if_acmpeq 34
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
34: aload 4
ifnull 35
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
35: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
36: astore 3
aload 2
ifnonnull 37
aload 3
astore 2
goto 38
StackMap locals:
StackMap stack:
37: aload 2
aload 3
if_acmpeq 38
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
38: aload 2
athrow
39: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
1 40 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 35 4 graalEngine Lorg/graalvm/polyglot/Engine;
4 30 5 context Lorg/graalvm/polyglot/Context;
5 28 6 bindings Lorg/graalvm/polyglot/Value;
6 28 7 objectFromJava Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
12 28 8 val Lorg/graalvm/polyglot/Value;
Exception table:
from to target type
4 28 29 any
3 31 32 any
2 36 36 any
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testJavaExceptionThroughJS();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 3: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 4: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 5: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aload 4
aload 1
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 7
start local 7 6: aload 6
ldc "objectFromJava"
aload 7
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
7: aload 5
ldc "js"
ldc "\nobjectFromJava.methodThatThrowsException();\n"
ldc "hostexception.js"
invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
8: ldc "PolyglotException not thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
end local 7 end local 6 9: aload 5
ifnull 12
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 12
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
10: astore 2
aload 5
ifnull 11
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
11: aload 2
athrow
StackMap locals:
StackMap stack:
12: aload 4
ifnull 34
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 34
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 3
aload 2
ifnonnull 14
aload 3
astore 2
goto 15
StackMap locals:
StackMap stack:
14: aload 2
aload 3
if_acmpeq 15
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
15: aload 4
ifnull 16
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
16: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 3
aload 2
ifnonnull 18
aload 3
astore 2
goto 19
StackMap locals:
StackMap stack:
18: aload 2
aload 3
if_acmpeq 19
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 2
athrow
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess
StackMap stack: org.graalvm.polyglot.PolyglotException
20: astore 2
start local 2 21: ldc "This operation is not supported!"
aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
22: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 3
start local 3 23: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
24: getstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
i2l
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
25: ldc "hostexception.js"
aload 3
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
26: ldc 2
aload 3
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
27: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.isHostException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
28: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
astore 4
start local 4 29: aload 4
instanceof java.lang.UnsupportedOperationException
invokestatic org.junit.Assert.assertTrue:(Z)V
30: aload 4
invokevirtual java.lang.Throwable.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 5
start local 5 31: ldc "This operation is not supported!"
aload 4
invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
32: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
33: getstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
i2l
aload 5
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 5 end local 4 end local 3 end local 2 34: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
1 35 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 16 4 graalEngine Lorg/graalvm/polyglot/Engine;
4 11 5 context Lorg/graalvm/polyglot/Context;
5 9 6 bindings Lorg/graalvm/polyglot/Value;
6 9 7 objectFromJava Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
21 34 2 e Lorg/graalvm/polyglot/PolyglotException;
23 34 3 stackTrace [Ljava/lang/StackTraceElement;
29 34 4 hostException Ljava/lang/Throwable;
31 34 5 hostExceptionStackTrace [Ljava/lang/StackTraceElement;
Exception table:
from to target type
4 9 10 any
3 12 13 any
2 17 17 any
1 20 20 Class org.graalvm.polyglot.PolyglotException
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testNestedJavaExceptionThroughJS();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 3: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 4: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 5: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aload 4
aload 1
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 7
start local 7 6: aload 6
ldc "objectFromJava"
aload 7
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
7: aload 5
ldc "js"
ldc "\nobjectFromJava.methodThatThrowsNestedJavaException();\n"
ldc "testmain.js"
invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
8: invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
9: invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
10: ldc "PolyglotException not thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
end local 7 end local 6 11: aload 5
ifnull 14
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 14
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
12: astore 2
aload 5
ifnull 13
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
13: aload 2
athrow
StackMap locals:
StackMap stack:
14: aload 4
ifnull 39
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 39
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 3
aload 2
ifnonnull 16
aload 3
astore 2
goto 17
StackMap locals:
StackMap stack:
16: aload 2
aload 3
if_acmpeq 17
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
17: aload 4
ifnull 18
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
18: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
19: astore 3
aload 2
ifnonnull 20
aload 3
astore 2
goto 21
StackMap locals:
StackMap stack:
20: aload 2
aload 3
if_acmpeq 21
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
21: aload 2
athrow
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess
StackMap stack: org.graalvm.polyglot.PolyglotException
22: astore 2
start local 2 23: ldc "This operation is not supported!"
aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
24: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 3
start local 3 25: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
26: getstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
i2l
aload 3
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
27: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.getStackTrace:()[Ljava/lang/StackTraceElement;
invokestatic java.util.Arrays.stream:([Ljava/lang/Object;)Ljava/util/stream/Stream;
invokedynamic test()Ljava/util/function/Predicate;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Z
com/oracle/truffle/js/test/interop/ExceptionInteropTest.lambda$2(Ljava/lang/StackTraceElement;)Z (6)
(Ljava/lang/StackTraceElement;)Z
invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
invokedynamic apply()Ljava/util/function/IntFunction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(I)Ljava/lang/Object;
com/oracle/truffle/js/test/interop/ExceptionInteropTest.lambda$1(I)[Ljava/lang/StackTraceElement; (6)
(I)[Ljava/lang/StackTraceElement;
invokeinterface java.util.stream.Stream.toArray:(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
checkcast java.lang.StackTraceElement[]
astore 4
start local 4 28: ldc "nestedhostexception.js"
aload 4
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
29: ldc 2
aload 4
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
30: ldc "testmain.js"
aload 4
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
31: ldc 2
aload 4
iconst_1
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
32: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.isHostException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
33: aload 2
invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
astore 5
start local 5 34: aload 5
instanceof java.lang.UnsupportedOperationException
invokestatic org.junit.Assert.assertTrue:(Z)V
35: aload 5
invokevirtual java.lang.Throwable.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 6
start local 6 36: ldc "This operation is not supported!"
aload 5
invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
37: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 6
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
38: getstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
i2l
aload 6
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 6 end local 5 end local 4 end local 3 end local 2 39: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
1 40 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 18 4 graalEngine Lorg/graalvm/polyglot/Engine;
4 13 5 context Lorg/graalvm/polyglot/Context;
5 11 6 bindings Lorg/graalvm/polyglot/Value;
6 11 7 objectFromJava Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
23 39 2 e Lorg/graalvm/polyglot/PolyglotException;
25 39 3 stackTrace [Ljava/lang/StackTraceElement;
28 39 4 jsStackTrace [Ljava/lang/StackTraceElement;
34 39 5 hostException Ljava/lang/Throwable;
36 39 6 hostExceptionStackTrace [Ljava/lang/StackTraceElement;
Exception table:
from to target type
4 11 12 any
3 14 15 any
2 19 19 any
1 22 22 Class org.graalvm.polyglot.PolyglotException
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testCaughtJavaException();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=11, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Lorg/graalvm/polyglot/HostAccess$Export;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Ljava/lang/Throwable;
ldc "getMessage"
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccess:(Ljava/lang/reflect/Executable;)Lorg/graalvm/polyglot/HostAccess$Builder;
1: ldc Ljava/lang/Object;
ldc "getClass"
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
2: invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccess:(Ljava/lang/reflect/Executable;)Lorg/graalvm/polyglot/HostAccess$Builder;
3: ldc Ljava/lang/Class;
ldc "getName"
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccess:(Ljava/lang/reflect/Executable;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
4: astore 1
start local 1 5: aconst_null
astore 2
aconst_null
astore 3
6: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 4
start local 4 7: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 4
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 8: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 9: new com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
dup
aload 4
aload 1
invokespecial com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.<init>:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/HostAccess;)V
astore 7
start local 7 10: aload 6
ldc "objectFromJava"
aload 7
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
11: aload 5
ldc "js"
ldc "var ex;\ntry {\n objectFromJava.methodThatThrowsException();\n} catch (e) {\n objectFromJava.methodWithExceptionArgument(e, e.getClass().getName(), e.getMessage());\n ex = e;}\nex;\n"
12: ldc "isnotdefinedcaught.js"
13: invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
14: invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
15: invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
astore 8
start local 8 16: aload 8
invokevirtual org.graalvm.polyglot.Value.isHostObject:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
17: aload 8
invokevirtual org.graalvm.polyglot.Value.isException:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
18: aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.exception:Ljava/lang/Exception;
aload 8
invokevirtual org.graalvm.polyglot.Value.asHostObject:()Ljava/lang/Object;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
19: aload 8
invokevirtual org.graalvm.polyglot.Value.asHostObject:()Ljava/lang/Object;
instanceof java.lang.UnsupportedOperationException
invokestatic org.junit.Assert.assertTrue:(Z)V
20: aload 8
invokevirtual org.graalvm.polyglot.Value.asHostObject:()Ljava/lang/Object;
checkcast java.lang.Exception
astore 9
start local 9 21: aload 9
invokevirtual java.lang.Exception.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 10
start local 10 22: ldc "This operation is not supported!"
aload 9
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
23: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 10
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
24: getstatic com.oracle.truffle.js.test.interop.ExceptionInteropTest.EXCEPTION_LINE_NUMBER:I
i2l
aload 10
iconst_0
aaload
invokevirtual java.lang.StackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
25: ldc "isnotdefinedcaught.js"
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.jsStackTrace:[Lcom/oracle/truffle/js/runtime/GraalJSException$JSStackTraceElement;
iconst_0
aaload
invokevirtual com.oracle.truffle.js.runtime.GraalJSException$JSStackTraceElement.getFileName:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
26: ldc 3
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.jsStackTrace:[Lcom/oracle/truffle/js/runtime/GraalJSException$JSStackTraceElement;
iconst_0
aaload
invokevirtual com.oracle.truffle.js.runtime.GraalJSException$JSStackTraceElement.getLineNumber:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
27: aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.exception:Ljava/lang/Exception;
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.exceptionName:Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
28: aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.exception:Ljava/lang/Exception;
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
aload 7
getfield com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS.exceptionMessage:Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
end local 10 end local 9 end local 8 end local 7 end local 6 29: aload 5
ifnull 32
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 32
StackMap locals: com.oracle.truffle.js.test.interop.ExceptionInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
30: astore 2
aload 5
ifnull 31
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
31: aload 2
athrow
StackMap locals:
StackMap stack:
32: aload 4
ifnull 40
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
33: astore 3
aload 2
ifnonnull 34
aload 3
astore 2
goto 35
StackMap locals:
StackMap stack:
34: aload 2
aload 3
if_acmpeq 35
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
35: aload 4
ifnull 36
aload 4
invokevirtual org.graalvm.polyglot.Engine.close:()V
end local 4 StackMap locals:
StackMap stack:
36: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
37: astore 3
aload 2
ifnonnull 38
aload 3
astore 2
goto 39
StackMap locals:
StackMap stack:
38: aload 2
aload 3
if_acmpeq 39
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
39: aload 2
athrow
40: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest;
5 41 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
7 36 4 graalEngine Lorg/graalvm/polyglot/Engine;
8 31 5 context Lorg/graalvm/polyglot/Context;
9 29 6 bindings Lorg/graalvm/polyglot/Value;
10 29 7 objectFromJava Lcom/oracle/truffle/js/test/interop/ExceptionInteropTest$ToBePassedToJS;
16 29 8 val Lorg/graalvm/polyglot/Value;
21 29 9 hostException Ljava/lang/Exception;
22 29 10 hostExceptionStackTrace [Ljava/lang/StackTraceElement;
Exception table:
from to target type
8 29 30 any
7 32 33 any
6 37 37 any
Exceptions:
throws java.io.IOException, java.lang.NoSuchMethodException
RuntimeVisibleAnnotations:
org.junit.Test()
private static boolean lambda$0(java.lang.StackTraceElement);
descriptor: (Ljava/lang/StackTraceElement;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.StackTraceElement.getClassName:()Ljava/lang/String;
ldc "<js>"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 ste Ljava/lang/StackTraceElement;
private static java.lang.StackTraceElement[] lambda$1(int);
descriptor: (I)[Ljava/lang/StackTraceElement;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: iload 0
anewarray java.lang.StackTraceElement
areturn
LocalVariableTable:
Start End Slot Name Signature
private static boolean lambda$2(java.lang.StackTraceElement);
descriptor: (Ljava/lang/StackTraceElement;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.StackTraceElement.getClassName:()Ljava/lang/String;
ldc "<js>"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 ste Ljava/lang/StackTraceElement;
}
SourceFile: "ExceptionInteropTest.java"
NestMembers:
com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS
InnerClasses:
public final JSStackTraceElement = com.oracle.truffle.js.runtime.GraalJSException$JSStackTraceElement of com.oracle.truffle.js.runtime.GraalJSException
public ToBePassedToJS = com.oracle.truffle.js.test.interop.ExceptionInteropTest$ToBePassedToJS of com.oracle.truffle.js.test.interop.ExceptionInteropTest
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
public final Builder = org.graalvm.polyglot.Engine$Builder of org.graalvm.polyglot.Engine
public final Builder = org.graalvm.polyglot.HostAccess$Builder of org.graalvm.polyglot.HostAccess
public abstract Export = org.graalvm.polyglot.HostAccess$Export of org.graalvm.polyglot.HostAccess
public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source