public class org.graalvm.compiler.truffle.test.LanguageContextFreedTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.truffle.test.LanguageContextFreedTest
super_class: java.lang.Object
{
private static final int COMPILATION_THRESHOLD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
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 Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest;
public void testLanguageContexFreedNoSharing();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: invokedynamic get()Ljava/util/function/Supplier;
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;
org/graalvm/compiler/truffle/test/LanguageContextFreedTest.lambda$0()Lorg/graalvm/polyglot/Context; (6)
()Lorg/graalvm/polyglot/Context;
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.doTest:(Ljava/util/function/Supplier;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLanguageContexFreedSharedEngine();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: invokedynamic get()Ljava/util/function/Supplier;
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;
org/graalvm/compiler/truffle/test/LanguageContextFreedTest.lambda$1()Lorg/graalvm/polyglot/Context; (6)
()Lorg/graalvm/polyglot/Context;
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.doTest:(Ljava/util/function/Supplier;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest;
RuntimeVisibleAnnotations:
org.junit.Test()
private static void doTest(java.util.function.Supplier<org.graalvm.polyglot.Context>);
descriptor: (Ljava/util/function/Supplier;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: aload 0
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
astore 3
start local 3 2: aload 3
ldc "LanguageContextFreedTestExclusive"
ldc "LanguageContextFreedTestExclusive"
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.testRun:(Lorg/graalvm/polyglot/Context;Ljava/lang/String;Ljava/lang/String;)V
3: aload 3
ifnull 9
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 9
StackMap locals: java.util.function.Supplier java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
4: astore 1
aload 3
ifnull 5
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
5: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
6: astore 2
aload 1
ifnonnull 7
aload 2
astore 1
goto 8
StackMap locals:
StackMap stack:
7: aload 1
aload 2
if_acmpeq 8
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
8: aload 1
athrow
9: StackMap locals:
StackMap stack:
aconst_null
astore 1
aconst_null
astore 2
10: aload 0
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
astore 3
start local 3 11: aload 3
ldc "LanguageContextFreedTestExclusive"
ldc "LanguageContextFreedTestShared"
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.testRun:(Lorg/graalvm/polyglot/Context;Ljava/lang/String;Ljava/lang/String;)V
12: aload 3
ifnull 18
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 18
StackMap locals: java.util.function.Supplier java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
13: astore 1
aload 3
ifnull 14
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
14: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 2
aload 1
ifnonnull 16
aload 2
astore 1
goto 17
StackMap locals:
StackMap stack:
16: aload 1
aload 2
if_acmpeq 17
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
17: aload 1
athrow
18: StackMap locals:
StackMap stack:
aconst_null
astore 1
aconst_null
astore 2
19: aload 0
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
astore 3
start local 3 20: aload 3
ldc "LanguageContextFreedTestShared"
ldc "LanguageContextFreedTestExclusive"
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.testRun:(Lorg/graalvm/polyglot/Context;Ljava/lang/String;Ljava/lang/String;)V
21: aload 3
ifnull 27
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 27
StackMap locals: java.util.function.Supplier java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
22: astore 1
aload 3
ifnull 23
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
23: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
24: astore 2
aload 1
ifnonnull 25
aload 2
astore 1
goto 26
StackMap locals:
StackMap stack:
25: aload 1
aload 2
if_acmpeq 26
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
26: aload 1
athrow
27: StackMap locals:
StackMap stack:
aconst_null
astore 1
aconst_null
astore 2
28: aload 0
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
astore 3
start local 3 29: aload 3
ldc "LanguageContextFreedTestShared"
ldc "LanguageContextFreedTestShared"
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest.testRun:(Lorg/graalvm/polyglot/Context;Ljava/lang/String;Ljava/lang/String;)V
30: aload 3
ifnull 36
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 36
StackMap locals: java.util.function.Supplier java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
31: astore 1
aload 3
ifnull 32
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
32: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
33: astore 2
aload 1
ifnonnull 34
aload 2
astore 1
goto 35
StackMap locals:
StackMap stack:
34: aload 1
aload 2
if_acmpeq 35
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
35: aload 1
athrow
36: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 contextFactory Ljava/util/function/Supplier<Lorg/graalvm/polyglot/Context;>;
2 5 3 ctx Lorg/graalvm/polyglot/Context;
11 14 3 ctx Lorg/graalvm/polyglot/Context;
20 23 3 ctx Lorg/graalvm/polyglot/Context;
29 32 3 ctx Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
2 3 4 any
1 6 6 any
11 12 13 any
10 15 15 any
20 21 22 any
19 24 24 any
29 30 31 any
28 33 33 any
Signature: (Ljava/util/function/Supplier<Lorg/graalvm/polyglot/Context;>;)V
MethodParameters:
Name Flags
contextFactory
private static void testRun(org.graalvm.polyglot.Context, java.lang.String, java.lang.String);
descriptor: (Lorg/graalvm/polyglot/Context;Ljava/lang/String;Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
astore 3
start local 3 1: aload 0
ldc "LanguageContextFreedTestExclusive"
invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
pop
2: aload 0
ldc "LanguageContextFreedTestShared"
invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
pop
3: aload 0
invokevirtual org.graalvm.polyglot.Context.enter:()V
4: aload 1
invokestatic org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base.getContext:(Ljava/lang/String;)Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$LanguageContext;
astore 4
start local 4 5: aload 4
getfield org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext.language:Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$Base;
getfield org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base.contextLocal:Lcom/oracle/truffle/api/ContextLocal;
invokevirtual com.oracle.truffle.api.ContextLocal.get:()Ljava/lang/Object;
checkcast org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue
astore 5
start local 5 6: aload 4
getfield org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext.language:Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$Base;
getfield org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base.threadLocal:Lcom/oracle/truffle/api/ContextThreadLocal;
invokevirtual com.oracle.truffle.api.ContextThreadLocal.get:()Ljava/lang/Object;
checkcast org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue
astore 6
start local 6 7: goto 11
end local 6 end local 5 end local 4 StackMap locals: org.graalvm.polyglot.Context java.lang.String java.lang.String org.graalvm.polyglot.Source
StackMap stack: java.lang.Throwable
8: astore 7
9: aload 0
invokevirtual org.graalvm.polyglot.Context.leave:()V
10: aload 7
athrow
start local 4 start local 5 start local 6 11: StackMap locals: org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue
StackMap stack:
aload 0
invokevirtual org.graalvm.polyglot.Context.leave:()V
12: iconst_0
istore 7
start local 7 13: goto 16
14: StackMap locals: int
StackMap stack:
aload 0
aload 3
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
15: iinc 7 1
StackMap locals:
StackMap stack:
16: iload 7
bipush 10
if_icmplt 14
end local 7 17: aload 4
getfield org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext.currentTarget:Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.isValid:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
18: aload 0
invokevirtual org.graalvm.polyglot.Context.close:()V
19: new java.lang.ref.WeakReference
dup
aload 4
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
astore 7
start local 7 20: new java.lang.ref.WeakReference
dup
aload 5
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
astore 8
start local 8 21: new java.lang.ref.WeakReference
dup
aload 6
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
astore 9
start local 9 22: aconst_null
astore 4
23: aconst_null
astore 5
24: aconst_null
astore 6
25: ldc "Language context should be freed when polyglot Context is closed."
aload 7
invokestatic com.oracle.truffle.api.test.GCUtils.assertGc:(Ljava/lang/String;Ljava/lang/ref/Reference;)V
26: ldc "Context local should be freed when polyglot Context is closed."
27: aload 8
28: invokestatic com.oracle.truffle.api.test.GCUtils.assertGc:(Ljava/lang/String;Ljava/lang/ref/Reference;)V
29: ldc "Context thread local should be freed when polyglot Context is closed."
30: aload 9
31: invokestatic com.oracle.truffle.api.test.GCUtils.assertGc:(Ljava/lang/String;Ljava/lang/ref/Reference;)V
32: return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 ctx Lorg/graalvm/polyglot/Context;
0 33 1 sourceLanguage Ljava/lang/String;
0 33 2 targetLanguage Ljava/lang/String;
1 33 3 src Lorg/graalvm/polyglot/Source;
5 8 4 sourceContext Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$LanguageContext;
11 33 4 sourceContext Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$LanguageContext;
6 8 5 contextLocal Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$ContextLocalValue;
11 33 5 contextLocal Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$ContextLocalValue;
7 8 6 threadLocal Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$ContextLocalValue;
11 33 6 threadLocal Lorg/graalvm/compiler/truffle/test/LanguageContextFreedTest$ContextLocalValue;
13 17 7 i I
20 33 7 langContextRef Ljava/lang/ref/WeakReference<*>;
21 33 8 contextLocalRef Ljava/lang/ref/WeakReference<*>;
22 33 9 threadLocalRef Ljava/lang/ref/WeakReference<*>;
Exception table:
from to target type
4 8 8 any
MethodParameters:
Name Flags
ctx
sourceLanguage
targetLanguage
private static org.graalvm.polyglot.Context lambda$0();
descriptor: ()Lorg/graalvm/polyglot/Context;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=0, args_size=0
0: iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
1: ldc "engine.BackgroundCompilation"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
2: ldc "engine.MultiTier"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
3: ldc "engine.CompilationThreshold"
bipush 10
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
4: ldc "engine.CompileImmediately"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
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;
5: areturn
LocalVariableTable:
Start End Slot Name Signature
private static org.graalvm.polyglot.Context lambda$1();
descriptor: ()Lorg/graalvm/polyglot/Context;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Engine$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Engine$Builder;
1: ldc "engine.BackgroundCompilation"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Engine$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Engine$Builder;
2: ldc "engine.MultiTier"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Engine$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Engine$Builder;
3: ldc "engine.CompilationThreshold"
bipush 10
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Engine$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Engine$Builder;
4: ldc "engine.CompileImmediately"
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual org.graalvm.polyglot.Engine$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
5: astore 0
start local 0 6: iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 0
invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
6 7 0 engine Lorg/graalvm/polyglot/Engine;
}
SourceFile: "LanguageContextFreedTest.java"
NestMembers:
org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base$1 org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Exclusive org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Shared
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Base = org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Base of org.graalvm.compiler.truffle.test.LanguageContextFreedTest
private ContextLocalValue = org.graalvm.compiler.truffle.test.LanguageContextFreedTest$ContextLocalValue of org.graalvm.compiler.truffle.test.LanguageContextFreedTest
public Exclusive = org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Exclusive of org.graalvm.compiler.truffle.test.LanguageContextFreedTest
final LanguageContext = org.graalvm.compiler.truffle.test.LanguageContextFreedTest$LanguageContext of org.graalvm.compiler.truffle.test.LanguageContextFreedTest
public Shared = org.graalvm.compiler.truffle.test.LanguageContextFreedTest$Shared of org.graalvm.compiler.truffle.test.LanguageContextFreedTest
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