public class com.oracle.truffle.js.test.threading.AsyncTaskTests
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.js.test.threading.AsyncTaskTests
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/test/threading/AsyncTaskTests;
public void completableFuture();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=12, args_size=1
start local 0 0: new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
astore 1
start local 1 1: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 2
start local 2 2: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 3
start local 3 3: new java.util.concurrent.ForkJoinPool
dup
invokespecial java.util.concurrent.ForkJoinPool.<init>:()V
astore 4
start local 4 4: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 5
start local 5 5: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 6
start local 6 6: aconst_null
astore 7
aconst_null
astore 8
7: iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "js"
aastore
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/HostAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.PolyglotAccess.ALL:Lorg/graalvm/polyglot/PolyglotAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowPolyglotAccess:(Lorg/graalvm/polyglot/PolyglotAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 5
invokevirtual org.graalvm.polyglot.Context$Builder.out:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
aload 6
invokevirtual org.graalvm.polyglot.Context$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 9
start local 9 8: aload 9
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
ldc "javaNextTick"
aload 1
aload 9
aload 4
aload 2
aload 3
invokedynamic execute(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Lcom/oracle/truffle/js/test/threading/AsyncTaskTests$CallableInt;
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:
(Lorg/graalvm/polyglot/Value;)V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$0(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;)V (6)
(Lorg/graalvm/polyglot/Value;)V
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
9: aload 9
ldc "js"
ldc "(function() { return javaNextTick(()=>{console.log('something async'); return 42;});})"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
astore 10
start local 10 10: aload 9
dup
astore 11
monitorenter
11: aload 10
iconst_0
anewarray java.lang.Object
invokevirtual org.graalvm.polyglot.Value.executeVoid:([Ljava/lang/Object;)V
12: aload 11
monitorexit
13: goto 16
StackMap locals: com.oracle.truffle.js.test.threading.AsyncTaskTests java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.ForkJoinPool java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
14: aload 11
monitorexit
15: athrow
16: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.util.concurrent.ForkJoinPool.shutdown:()V
17: aload 4
lconst_1
getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.ForkJoinPool.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
18: aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
19: aload 1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
20: new java.lang.String
dup
aload 6
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.lang.String.isEmpty:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
21: ldc "something async\n"
new java.lang.String
dup
aload 5
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
22: ldc 42
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Value
invokevirtual org.graalvm.polyglot.Value.asInt:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
end local 10 23: aload 9
ifnull 29
aload 9
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 29
StackMap locals: com.oracle.truffle.js.test.threading.AsyncTaskTests java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.ForkJoinPool java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
24: astore 7
aload 9
ifnull 25
aload 9
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 9 StackMap locals:
StackMap stack:
25: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
26: astore 8
aload 7
ifnonnull 27
aload 8
astore 7
goto 28
StackMap locals:
StackMap stack:
27: aload 7
aload 8
if_acmpeq 28
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
28: aload 7
athrow
29: StackMap locals:
StackMap stack:
return
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 30 0 this Lcom/oracle/truffle/js/test/threading/AsyncTaskTests;
1 30 1 asyncTaskExecuted Ljava/util/concurrent/atomic/AtomicBoolean;
2 30 2 asyncException Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Throwable;>;
3 30 3 asyncJsResult Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Object;>;
4 30 4 testExecutor Ljava/util/concurrent/ForkJoinPool;
5 30 5 out Ljava/io/ByteArrayOutputStream;
6 30 6 err Ljava/io/ByteArrayOutputStream;
8 25 9 cx Lorg/graalvm/polyglot/Context;
10 23 10 jsFunction Lorg/graalvm/polyglot/Value;
Exception table:
from to target type
11 13 14 any
14 15 14 any
8 23 24 any
7 26 26 any
Exceptions:
throws java.lang.InterruptedException
RuntimeVisibleAnnotations:
org.junit.Test()
public void completableFuturePromise();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=12, args_size=1
start local 0 0: new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
astore 1
start local 1 1: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 2
start local 2 2: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 3
start local 3 3: new java.util.concurrent.ForkJoinPool
dup
invokespecial java.util.concurrent.ForkJoinPool.<init>:()V
astore 4
start local 4 4: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 5
start local 5 5: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 6
start local 6 6: aconst_null
astore 7
aconst_null
astore 8
7: iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "js"
aastore
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/HostAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.PolyglotAccess.ALL:Lorg/graalvm/polyglot/PolyglotAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowPolyglotAccess:(Lorg/graalvm/polyglot/PolyglotAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 5
invokevirtual org.graalvm.polyglot.Context$Builder.out:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
aload 6
invokevirtual org.graalvm.polyglot.Context$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 9
start local 9 8: aload 9
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
ldc "javaPromiseInstance"
aload 1
aload 9
aload 4
aload 2
aload 3
invokedynamic then(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Lcom/oracle/truffle/js/test/threading/AsyncTaskTests$ThenableInt;
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:
(Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$3(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)V (6)
(Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)V
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
9: aload 9
ldc "js"
ldc "(async function() { console.log('pre'); var post = await javaPromiseInstance; console.log(post);})"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
astore 10
start local 10 10: aload 9
dup
astore 11
monitorenter
11: aload 10
iconst_0
anewarray java.lang.Object
invokevirtual org.graalvm.polyglot.Value.executeVoid:([Ljava/lang/Object;)V
12: aload 11
monitorexit
13: goto 16
StackMap locals: com.oracle.truffle.js.test.threading.AsyncTaskTests java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.ForkJoinPool java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
14: aload 11
monitorexit
15: athrow
16: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.util.concurrent.ForkJoinPool.shutdown:()V
17: aload 4
lconst_1
getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.ForkJoinPool.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
18: aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
19: aload 1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
20: new java.lang.String
dup
aload 6
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.lang.String.isEmpty:()Z
invokestatic org.junit.Assert.assertTrue:(Z)V
21: ldc "pre\npost\n"
new java.lang.String
dup
aload 5
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
22: bipush 42
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
end local 10 23: aload 9
ifnull 29
aload 9
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 29
StackMap locals: com.oracle.truffle.js.test.threading.AsyncTaskTests java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.ForkJoinPool java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
24: astore 7
aload 9
ifnull 25
aload 9
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 9 StackMap locals:
StackMap stack:
25: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
26: astore 8
aload 7
ifnonnull 27
aload 8
astore 7
goto 28
StackMap locals:
StackMap stack:
27: aload 7
aload 8
if_acmpeq 28
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
28: aload 7
athrow
29: StackMap locals:
StackMap stack:
return
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 30 0 this Lcom/oracle/truffle/js/test/threading/AsyncTaskTests;
1 30 1 asyncTaskExecuted Ljava/util/concurrent/atomic/AtomicBoolean;
2 30 2 asyncException Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Throwable;>;
3 30 3 asyncJsResult Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Object;>;
4 30 4 testExecutor Ljava/util/concurrent/ForkJoinPool;
5 30 5 out Ljava/io/ByteArrayOutputStream;
6 30 6 err Ljava/io/ByteArrayOutputStream;
8 25 9 cx Lorg/graalvm/polyglot/Context;
10 23 10 asyncJsFunction Lorg/graalvm/polyglot/Value;
Exception table:
from to target type
11 13 14 any
14 15 14 any
8 23 24 any
7 26 26 any
Exceptions:
throws java.lang.InterruptedException
RuntimeVisibleAnnotations:
org.junit.Test()
public void plainJavaThread();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=1
start local 0 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 1
start local 1 1: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 2
start local 2 2: aconst_null
astore 3
aconst_null
astore 4
3: iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "js"
aastore
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/HostAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
getstatic org.graalvm.polyglot.PolyglotAccess.ALL:Lorg/graalvm/polyglot/PolyglotAccess;
invokevirtual org.graalvm.polyglot.Context$Builder.allowPolyglotAccess:(Lorg/graalvm/polyglot/PolyglotAccess;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.out:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 4: aload 5
invokevirtual org.graalvm.polyglot.Context.enter:()V
5: aload 5
ldc "js"
invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
ldc "aJavaFunction"
aload 5
aload 2
invokedynamic execute(Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/atomic/AtomicReference;)Lcom/oracle/truffle/js/test/threading/AsyncTaskTests$CallableInt;
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:
(Lorg/graalvm/polyglot/Value;)V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$6(Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;)V (6)
(Lorg/graalvm/polyglot/Value;)V
invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
6: aload 5
ldc "js"
ldc "(function() { return aJavaFunction(()=>{ console.log('something'); return 42;});});"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
astore 6
start local 6 7: aload 6
iconst_0
anewarray java.lang.Object
invokevirtual org.graalvm.polyglot.Value.executeVoid:([Ljava/lang/Object;)V
8: aload 5
ldc "js"
ldc "console.log('something else');"
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
pop
end local 6 9: aload 5
ifnull 15
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 15
StackMap locals: com.oracle.truffle.js.test.threading.AsyncTaskTests java.io.ByteArrayOutputStream java.util.concurrent.atomic.AtomicReference java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
10: astore 3
aload 5
ifnull 11
aload 5
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 5 StackMap locals:
StackMap stack:
11: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
12: astore 4
aload 3
ifnonnull 13
aload 4
astore 3
goto 14
StackMap locals:
StackMap stack:
13: aload 3
aload 4
if_acmpeq 14
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
14: aload 3
athrow
15: StackMap locals:
StackMap stack:
ldc 42
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Value
invokevirtual org.graalvm.polyglot.Value.asInt:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
16: ldc "something\nsomething else\n"
new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/truffle/js/test/threading/AsyncTaskTests;
1 18 1 out Ljava/io/ByteArrayOutputStream;
2 18 2 asyncJsResult Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Object;>;
4 11 5 cx Lorg/graalvm/polyglot/Context;
7 9 6 jsFunction Lorg/graalvm/polyglot/Value;
Exception table:
from to target type
4 9 10 any
3 12 12 any
RuntimeVisibleAnnotations:
org.junit.Test()
private static void lambda$0(java.util.concurrent.atomic.AtomicBoolean, org.graalvm.polyglot.Context, java.util.concurrent.ForkJoinPool, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, org.graalvm.polyglot.Value);
descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=6, args_size=6
start local 5 0: aload 0
aload 1
aload 5
invokedynamic get(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;)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;
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$1(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;)Lorg/graalvm/polyglot/Value; (6)
()Lorg/graalvm/polyglot/Value;
1: aload 2
2: invokestatic java.util.concurrent.CompletableFuture.supplyAsync:(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
3: aload 3
aload 4
invokedynamic accept(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Ljava/util/function/BiConsumer;
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;Ljava/lang/Object;)V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$2(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;Ljava/lang/Throwable;)V (6)
(Lorg/graalvm/polyglot/Value;Ljava/lang/Throwable;)V
invokevirtual java.util.concurrent.CompletableFuture.whenComplete:(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
pop
4: return
end local 5 LocalVariableTable:
Start End Slot Name Signature
0 5 5 jsLambda Lorg/graalvm/polyglot/Value;
Exceptions:
throws java.lang.InterruptedException
private static void lambda$3(java.util.concurrent.atomic.AtomicBoolean, org.graalvm.polyglot.Context, java.util.concurrent.ForkJoinPool, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, org.graalvm.polyglot.Value, org.graalvm.polyglot.Value);
descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=7, args_size=7
start local 5 start local 6 0: aload 0
aload 1
aload 5
aload 6
invokedynamic get(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)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;
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$4(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)Ljava/io/Serializable; (6)
()Ljava/io/Serializable;
1: aload 2
2: invokestatic java.util.concurrent.CompletableFuture.supplyAsync:(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
3: aload 3
aload 4
invokedynamic accept(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Ljava/util/function/BiConsumer;
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;Ljava/lang/Object;)V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$5(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/io/Serializable;Ljava/lang/Throwable;)V (6)
(Ljava/io/Serializable;Ljava/lang/Throwable;)V
invokevirtual java.util.concurrent.CompletableFuture.whenComplete:(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
pop
4: return
end local 6 end local 5 LocalVariableTable:
Start End Slot Name Signature
0 5 5 onResolve Lorg/graalvm/polyglot/Value;
0 5 6 onReject Lorg/graalvm/polyglot/Value;
private static void lambda$6(org.graalvm.polyglot.Context, java.util.concurrent.atomic.AtomicReference, org.graalvm.polyglot.Value);
descriptor: (Lorg/graalvm/polyglot/Context;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=5, locals=4, args_size=3
start local 2 0: new java.lang.Thread
dup
aload 0
aload 2
aload 1
invokedynamic run(Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Runnable;
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:
()V
com/oracle/truffle/js/test/threading/AsyncTaskTests.lambda$7(Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Ljava/util/concurrent/atomic/AtomicReference;)V (6)
()V
invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
astore 3
start local 3 1: aload 0
invokevirtual org.graalvm.polyglot.Context.leave:()V
2: aload 3
invokevirtual java.lang.Thread.start:()V
3: aload 3
invokevirtual java.lang.Thread.join:()V
4: aload 0
invokevirtual org.graalvm.polyglot.Context.enter:()V
end local 3 5: return
end local 2 LocalVariableTable:
Start End Slot Name Signature
0 6 2 jsLambda Lorg/graalvm/polyglot/Value;
1 5 3 thread Ljava/lang/Thread;
Exceptions:
throws java.lang.InterruptedException
private static org.graalvm.polyglot.Value lambda$1(java.util.concurrent.atomic.AtomicBoolean, org.graalvm.polyglot.Context, org.graalvm.polyglot.Value);
descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;)Lorg/graalvm/polyglot/Value;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=6, args_size=3
0: aload 0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
1: aload 1
dup
astore 3
monitorenter
2: aload 1
invokevirtual org.graalvm.polyglot.Context.enter:()V
3: aload 2
iconst_0
anewarray java.lang.Object
invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
astore 5
4: aload 1
invokevirtual org.graalvm.polyglot.Context.leave:()V
5: aload 3
monitorexit
6: aload 5
areturn
7: StackMap locals: java.util.concurrent.atomic.AtomicBoolean org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
astore 4
8: aload 1
invokevirtual org.graalvm.polyglot.Context.leave:()V
9: aload 4
athrow
10: StackMap locals:
StackMap stack: java.lang.Throwable
aload 3
monitorexit
11: athrow
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
3 4 7 any
2 6 10 any
7 11 10 any
private static void lambda$2(java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, org.graalvm.polyglot.Value, java.lang.Throwable);
descriptor: (Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Lorg/graalvm/polyglot/Value;Ljava/lang/Throwable;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=4, args_size=4
start local 2 start local 3 0: aload 0
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
1: aload 1
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
2: return
end local 3 end local 2 LocalVariableTable:
Start End Slot Name Signature
0 3 2 r Lorg/graalvm/polyglot/Value;
0 3 3 ex Ljava/lang/Throwable;
private static java.io.Serializable lambda$4(java.util.concurrent.atomic.AtomicBoolean, org.graalvm.polyglot.Context, org.graalvm.polyglot.Value, org.graalvm.polyglot.Value);
descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;)Ljava/io/Serializable;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=5, locals=8, args_size=4
0: aload 0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
1: aload 1
dup
astore 4
monitorenter
2: aload 1
invokevirtual org.graalvm.polyglot.Context.enter:()V
3: aload 2
iconst_1
anewarray java.lang.Object
dup
iconst_0
ldc "post"
aastore
invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
pop
4: bipush 42
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
astore 7
5: aload 1
invokevirtual org.graalvm.polyglot.Context.leave:()V
6: aload 4
monitorexit
7: aload 7
areturn
8: StackMap locals: java.util.concurrent.atomic.AtomicBoolean org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
astore 5
start local 5 9: aload 3
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 5
aastore
invokevirtual org.graalvm.polyglot.Value.executeVoid:([Ljava/lang/Object;)V
10: aload 5
astore 7
11: aload 1
invokevirtual org.graalvm.polyglot.Context.leave:()V
12: aload 4
monitorexit
13: aload 7
areturn
end local 5 14: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
15: aload 1
invokevirtual org.graalvm.polyglot.Context.leave:()V
16: aload 6
athrow
17: StackMap locals:
StackMap stack: java.lang.Throwable
aload 4
monitorexit
18: athrow
LocalVariableTable:
Start End Slot Name Signature
9 14 5 t Ljava/lang/Throwable;
Exception table:
from to target type
3 5 8 Class java.lang.Throwable
3 5 14 any
8 11 14 any
2 7 17 any
8 13 17 any
14 18 17 any
private static void lambda$5(java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, java.io.Serializable, java.lang.Throwable);
descriptor: (Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/io/Serializable;Ljava/lang/Throwable;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=4, args_size=4
start local 2 start local 3 0: aload 0
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
1: aload 1
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
2: return
end local 3 end local 2 LocalVariableTable:
Start End Slot Name Signature
0 3 2 r Ljava/io/Serializable;
0 3 3 ex Ljava/lang/Throwable;
private static void lambda$7(org.graalvm.polyglot.Context, org.graalvm.polyglot.Value, java.util.concurrent.atomic.AtomicReference);
descriptor: (Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;Ljava/util/concurrent/atomic/AtomicReference;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=4, args_size=3
0: aload 0
invokevirtual org.graalvm.polyglot.Context.enter:()V
1: aload 1
iconst_0
anewarray java.lang.Object
invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
astore 3
start local 3 2: aload 2
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
3: aload 0
invokevirtual org.graalvm.polyglot.Context.leave:()V
end local 3 4: return
LocalVariableTable:
Start End Slot Name Signature
2 4 3 jsResult Lorg/graalvm/polyglot/Value;
}
SourceFile: "AsyncTaskTests.java"
NestMembers:
com.oracle.truffle.js.test.threading.AsyncTaskTests$CallableInt com.oracle.truffle.js.test.threading.AsyncTaskTests$ThenableInt
InnerClasses:
public abstract CallableInt = com.oracle.truffle.js.test.threading.AsyncTaskTests$CallableInt of com.oracle.truffle.js.test.threading.AsyncTaskTests
public abstract ThenableInt = com.oracle.truffle.js.test.threading.AsyncTaskTests$ThenableInt of com.oracle.truffle.js.test.threading.AsyncTaskTests
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