public class com.oracle.truffle.js.test.interop.ClassFilterInteropTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.js.test.interop.ClassFilterInteropTest
super_class: java.lang.Object
{
public org.junit.rules.ExpectedException expectedException;
descriptor: Lorg/junit/rules/ExpectedException;
flags: (0x0001) ACC_PUBLIC
RuntimeVisibleAnnotations:
org.junit.Rule()
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokestatic org.junit.rules.ExpectedException.none:()Lorg/junit/rules/ExpectedException;
putfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
public void testHostClassLookupPositive();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, 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;
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/ClassFilterInteropTest.lambda$0(Ljava/lang/String;)Z (6)
(Ljava/lang/String;)Z
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostClassLookup:(Ljava/util/function/Predicate;)Lorg/graalvm/polyglot/Context$Builder;
2: invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
3: astore 3
start local 3 4: aload 3
ldc "js"
ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod() + MyClass.staticAccessibleMethod() +(new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass()).accessibleMethod() +com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.staticAccessibleMethod();"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
5: invokevirtual org.graalvm.polyglot.Value.asInt:()I
6: istore 4
start local 4 7: ldc 170
iload 4
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 4 8: aload 3
ifnull 14
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 14
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
9: astore 1
aload 3
ifnull 10
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
10: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
11: astore 2
aload 1
ifnonnull 12
aload 2
astore 1
goto 13
StackMap locals:
StackMap stack:
12: aload 1
aload 2
if_acmpeq 13
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
13: aload 1
athrow
14: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
4 10 3 context Lorg/graalvm/polyglot/Context;
7 8 4 result I
Exception table:
from to target type
4 8 9 any
1 11 11 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testHostClassLookupNegativeInaccessibleMethod();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc Lorg/graalvm/polyglot/PolyglotException;
invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
1: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc "Arity error - expected: 0 actual: 1"
invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
2: aconst_null
astore 1
aconst_null
astore 2
3: iconst_0
anewarray java.lang.String
invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
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/ClassFilterInteropTest.lambda$1(Ljava/lang/String;)Z (6)
(Ljava/lang/String;)Z
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostClassLookup:(Ljava/util/function/Predicate;)Lorg/graalvm/polyglot/Context$Builder;
4: invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
5: astore 3
start local 3 6: aload 3
ldc "js"
ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod(42);"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
7: invokevirtual org.graalvm.polyglot.Value.asInt:()I
pop
8: ldc "Exception should have been thrown."
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
9: aload 3
ifnull 15
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 15
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
10: astore 1
aload 3
ifnull 11
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
11: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
12: astore 2
aload 1
ifnonnull 13
aload 2
astore 1
goto 14
StackMap locals:
StackMap stack:
13: aload 1
aload 2
if_acmpeq 14
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
14: aload 1
athrow
15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
6 11 3 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
6 9 10 any
3 12 12 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testHostClassLookupNegativeHostClassLookupDisallowed1();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc Lorg/graalvm/polyglot/PolyglotException;
invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
1: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc "ReferenceError: Java is not defined"
invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
2: aconst_null
astore 1
aconst_null
astore 2
3: 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 4: aload 3
ldc "js"
ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod();"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
5: invokevirtual org.graalvm.polyglot.Value.asInt:()I
pop
6: ldc "Exception should have been thrown."
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
7: aload 3
ifnull 13
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 13
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
8: astore 1
aload 3
ifnull 9
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
9: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 2
aload 1
ifnonnull 11
aload 2
astore 1
goto 12
StackMap locals:
StackMap stack:
11: aload 1
aload 2
if_acmpeq 12
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 1
athrow
13: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
4 9 3 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
4 7 8 any
3 10 10 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testHostClassLookupNegativeHostClassLookupDisallowed2();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc Lorg/graalvm/polyglot/PolyglotException;
invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
1: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc "ReferenceError: com is not defined"
invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
2: aconst_null
astore 1
aconst_null
astore 2
3: 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 4: aload 3
ldc "js"
ldc "(new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass()).accessibleMethod()"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
5: invokevirtual org.graalvm.polyglot.Value.asInt:()I
pop
6: ldc "Exception should have been thrown."
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
7: aload 3
ifnull 13
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 13
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
8: astore 1
aload 3
ifnull 9
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
9: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 2
aload 1
ifnonnull 11
aload 2
astore 1
goto 12
StackMap locals:
StackMap stack:
11: aload 1
aload 2
if_acmpeq 12
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 1
athrow
13: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
4 9 3 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
4 7 8 any
3 10 10 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testPublicAccessIsPowerfull();
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;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)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: 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 3: aload 4
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 5
start local 5 4: new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
dup
invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
astore 6
start local 6 5: aload 5
ldc "myClass"
aload 6
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
6: aload 4
ldc "js"
ldc "myClass.getClass().getClassLoader().loadClass('java.lang.Math').getDeclaredMethods()[0].invoke(null, 42) +myClass.getClass().getClass().static.forName('java.lang.Math').getDeclaredMethods()[0].invoke(null, 43);"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
7: invokevirtual org.graalvm.polyglot.Value.asInt:()I
8: istore 7
start local 7 9: ldc 85
iload 7
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 7 end local 6 end local 5 10: aload 4
ifnull 16
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 16
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
11: astore 2
aload 4
ifnull 12
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
12: aload 2
athrow
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 2
athrow
16: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
1 17 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 12 4 context Lorg/graalvm/polyglot/Context;
4 10 5 bindings Lorg/graalvm/polyglot/Value;
5 10 6 myClass Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
9 10 7 result I
Exception table:
from to target type
3 10 11 any
2 13 13 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testPublicAccessIsReallyPowerfull();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=11, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)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: 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 3: aload 4
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 5
start local 5 4: new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
dup
invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
astore 6
start local 6 5: aload 5
ldc "myClass"
aload 6
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
6: ldc "os.name"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 7
start local 7 7: aload 7
ifnull 8
aload 7
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
ldc "windows"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 8
iconst_1
goto 9
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String
StackMap stack:
8: iconst_0
StackMap locals:
StackMap stack: int
9: istore 8
start local 8 10: aload 4
ldc "js"
new java.lang.StringBuilder
dup
ldc "function readIs(is) { var r = \"\"; while(true) { var c = is.read(); if(c == -1) { break; } r += String.fromCharCode(c) } is.close();return r; } var runtime = myClass.getClass().getClassLoader().loadClass('java.lang.Runtime').getDeclaredMethod('getRuntime').invoke(null);var process = runtime.getClass().getMethod('exec', myClass.getClass().getClassLoader().loadClass('java.lang.String')).invoke(runtime,'"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: iload 8
ifeq 12
ldc "cmd /C cd"
goto 13
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String int
StackMap stack: org.graalvm.polyglot.Context java.lang.String java.lang.StringBuilder
12: ldc "pwd"
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String int
StackMap stack: org.graalvm.polyglot.Context java.lang.String java.lang.StringBuilder java.lang.String
13: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "');"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
14: ldc "process.getOutputStream().close();"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc "var stdout = readIs(process.getInputStream());"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: ldc "var stderr = readIs(process.getErrorStream());"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: ldc "process.waitFor();"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: ldc "stdout;"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
20: invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
21: astore 9
start local 9 22: ldc "user.dir"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 10
start local 10 23: aload 9
invokevirtual java.lang.String.trim:()Ljava/lang/String;
aload 10
invokestatic org.hamcrest.core.StringContains.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 24: aload 4
ifnull 30
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 30
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
25: astore 2
aload 4
ifnull 26
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
26: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
27: astore 3
aload 2
ifnonnull 28
aload 3
astore 2
goto 29
StackMap locals:
StackMap stack:
28: aload 2
aload 3
if_acmpeq 29
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
29: aload 2
athrow
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/ClassFilterInteropTest;
1 31 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
3 26 4 context Lorg/graalvm/polyglot/Context;
4 24 5 bindings Lorg/graalvm/polyglot/Value;
5 24 6 myClass Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
7 24 7 osName Ljava/lang/String;
10 24 8 isWindows Z
22 24 9 result Ljava/lang/String;
23 24 10 userDir Ljava/lang/String;
Exception table:
from to target type
3 24 25 any
2 27 27 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testPublicAccessIsLessPowerfullWithDeniedClassAccess1();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc Lorg/graalvm/polyglot/PolyglotException;
invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
1: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc "Unknown identifier: getClassLoader"
invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
2: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Ljava/lang/Class;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.denyAccess:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 3: aconst_null
astore 2
aconst_null
astore 3
4: 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 5: aload 4
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 5
start local 5 6: new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
dup
invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
astore 6
start local 6 7: aload 5
ldc "myClass"
aload 6
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
8: aload 4
ldc "js"
ldc "myClass.getClass().getClassLoader().loadClass('java.lang.Math').getDeclaredMethods()[0].invoke(null, 42);"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
9: invokevirtual org.graalvm.polyglot.Value.asInt:()I
pop
10: ldc "Exception should have been thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
end local 6 end local 5 11: aload 4
ifnull 17
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 17
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
12: astore 2
aload 4
ifnull 13
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
13: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 3
aload 2
ifnonnull 15
aload 3
astore 2
goto 16
StackMap locals:
StackMap stack:
15: aload 2
aload 3
if_acmpeq 16
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
16: aload 2
athrow
17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
3 18 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
5 13 4 context Lorg/graalvm/polyglot/Context;
6 11 5 bindings Lorg/graalvm/polyglot/Value;
7 11 6 myClass Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
Exception table:
from to target type
5 11 12 any
4 14 14 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testPublicAccessIsLessPowerfullWithDeniedClassAccess2();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc Lorg/graalvm/polyglot/PolyglotException;
invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
1: aload 0
getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
ldc "Unknown identifier: forName"
invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
2: invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
ldc Ljava/lang/Class;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.denyAccess:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
astore 1
start local 1 3: aconst_null
astore 2
aconst_null
astore 3
4: 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 5: aload 4
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
astore 5
start local 5 6: new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
dup
invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
astore 6
start local 6 7: aload 5
ldc "myClass"
aload 6
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
8: aload 4
ldc "js"
ldc "myClass.getClass().getClass().static.forName('java.lang.Math').getDeclaredMethods()[0].invoke(null, 43);"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
9: invokevirtual org.graalvm.polyglot.Value.asInt:()I
pop
10: ldc "Exception should have been thrown"
invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
end local 6 end local 5 11: aload 4
ifnull 17
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 17
StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
12: astore 2
aload 4
ifnull 13
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
13: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
14: astore 3
aload 2
ifnonnull 15
aload 3
astore 2
goto 16
StackMap locals:
StackMap stack:
15: aload 2
aload 3
if_acmpeq 16
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
16: aload 2
athrow
17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
3 18 1 hostAccess Lorg/graalvm/polyglot/HostAccess;
5 13 4 context Lorg/graalvm/polyglot/Context;
6 11 5 bindings Lorg/graalvm/polyglot/Value;
7 11 6 myClass Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
Exception table:
from to target type
5 11 12 any
4 14 14 any
RuntimeVisibleAnnotations:
org.junit.Test()
private static boolean lambda$0(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
1: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 c Ljava/lang/String;
private static boolean lambda$1(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
1: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 c Ljava/lang/String;
}
SourceFile: "ClassFilterInteropTest.java"
NestMembers:
com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
InnerClasses:
public MyClass = com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass of com.oracle.truffle.js.test.interop.ClassFilterInteropTest
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.HostAccess$Builder of org.graalvm.polyglot.HostAccess