public class com.oracle.truffle.js.test.threading.SharedEngineTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.js.test.threading.SharedEngineTest
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/SharedEngineTest;
public void testGitHub1942();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "(async () => { return 1 })"
invokestatic com.oracle.truffle.js.test.threading.SharedEngineTest.parallelEval:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/threading/SharedEngineTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testGitHub262();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "(function() { let it = infinite(); do { var i = it.next(); } while (i < 100); function* infinite() { let n = 0; while (true) { yield n++; } }})();"
invokestatic com.oracle.truffle.js.test.threading.SharedEngineTest.parallelEval:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/threading/SharedEngineTest;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testParallelAsyncGenerators();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "async function* run() { for (var i = 0; i < 10; i++) { yield 'Hello '+ i; } await Promise.resolve(42);};(async () => { var it = 0; for await (const val of run()) { it++; };})();"
invokestatic com.oracle.truffle.js.test.threading.SharedEngineTest.parallelEval:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/test/threading/SharedEngineTest;
RuntimeVisibleAnnotations:
org.junit.Test()
private static void parallelEval(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=7, args_size=1
start local 0 0: bipush 16
invokestatic java.util.concurrent.Executors.newWorkStealingPool:(I)Ljava/util/concurrent/ExecutorService;
astore 1
start local 1 1: invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
astore 2
start local 2 2: new java.util.concurrent.atomic.AtomicInteger
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
astore 3
start local 3 3: new java.util.concurrent.atomic.AtomicInteger
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
astore 4
start local 4 4: new java.util.concurrent.CountDownLatch
dup
bipush 16
invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
astore 5
start local 5 5: iconst_0
istore 6
start local 6 6: goto 9
7: StackMap locals: java.lang.String java.util.concurrent.ExecutorService org.graalvm.polyglot.Engine java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger java.util.concurrent.CountDownLatch int
StackMap stack:
aload 1
aload 2
aload 5
aload 0
aload 4
aload 3
invokedynamic run(Lorg/graalvm/polyglot/Engine;Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)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/SharedEngineTest.lambda$0(Lorg/graalvm/polyglot/Engine;Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V (6)
()V
invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
pop
8: iinc 6 1
StackMap locals:
StackMap stack:
9: iload 6
bipush 16
if_icmplt 7
end local 6 10: aload 1
invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
11: aload 1
ldc 5
getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
12: goto 15
StackMap locals: java.lang.String java.util.concurrent.ExecutorService org.graalvm.polyglot.Engine java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger java.util.concurrent.CountDownLatch
StackMap stack: java.lang.InterruptedException
13: astore 6
start local 6 14: new java.lang.AssertionError
dup
aload 6
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 6 15: StackMap locals:
StackMap stack:
lconst_0
aload 3
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
16: ldc 1600
aload 4
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
17: return
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 18 0 source Ljava/lang/String;
1 18 1 executorService Ljava/util/concurrent/ExecutorService;
2 18 2 sharedEngine Lorg/graalvm/polyglot/Engine;
3 18 3 exceptions Ljava/util/concurrent/atomic/AtomicInteger;
4 18 4 executions Ljava/util/concurrent/atomic/AtomicInteger;
5 18 5 startBarrier Ljava/util/concurrent/CountDownLatch;
6 10 6 i I
14 15 6 e Ljava/lang/InterruptedException;
Exception table:
from to target type
11 12 13 Class java.lang.InterruptedException
MethodParameters:
Name Flags
source
private static void lambda$0(org.graalvm.polyglot.Engine, java.util.concurrent.CountDownLatch, java.lang.String, java.util.concurrent.atomic.AtomicInteger, java.util.concurrent.atomic.AtomicInteger);
descriptor: (Lorg/graalvm/polyglot/Engine;Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=7, args_size=5
0: 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;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 1: aload 1
invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
2: aload 1
invokevirtual java.util.concurrent.CountDownLatch.await:()V
3: iconst_0
istore 6
start local 6 4: goto 11
5: StackMap locals: org.graalvm.polyglot.Context int
StackMap stack:
aload 5
ldc "js"
aload 2
invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
pop
6: aload 3
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
7: goto 10
StackMap locals:
StackMap stack: java.lang.Throwable
8: pop
9: aload 4
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
10: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
11: iload 6
bipush 100
if_icmplt 5
end local 6 12: goto 15
StackMap locals: org.graalvm.polyglot.Engine java.util.concurrent.CountDownLatch java.lang.String java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger org.graalvm.polyglot.Context
StackMap stack: java.lang.InterruptedException
13: pop
14: aload 4
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
end local 5 15: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
1 15 5 context Lorg/graalvm/polyglot/Context;
4 12 6 e I
Exception table:
from to target type
5 7 8 Class java.lang.Throwable
2 12 13 Class java.lang.InterruptedException
}
SourceFile: "SharedEngineTest.java"
InnerClasses:
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