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 // com.oracle.truffle.js.test.threading.SharedEngineTest this
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.test.threading.SharedEngineTest this
      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 // com.oracle.truffle.js.test.threading.SharedEngineTest this
         0: .line 61
            ldc "(async () => { return 1 })"
            invokestatic com.oracle.truffle.js.test.threading.SharedEngineTest.parallelEval:(Ljava/lang/String;)V
         1: .line 62
            return
        end local 0 // com.oracle.truffle.js.test.threading.SharedEngineTest this
      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 // com.oracle.truffle.js.test.threading.SharedEngineTest this
         0: .line 69
            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: .line 81
            return
        end local 0 // com.oracle.truffle.js.test.threading.SharedEngineTest this
      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 // com.oracle.truffle.js.test.threading.SharedEngineTest this
         0: .line 85
            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: .line 97
            return
        end local 0 // com.oracle.truffle.js.test.threading.SharedEngineTest this
      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 // java.lang.String source
         0: .line 102
            bipush 16
            invokestatic java.util.concurrent.Executors.newWorkStealingPool:(I)Ljava/util/concurrent/ExecutorService;
            astore 1 /* executorService */
        start local 1 // java.util.concurrent.ExecutorService executorService
         1: .line 103
            invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
            astore 2 /* sharedEngine */
        start local 2 // org.graalvm.polyglot.Engine sharedEngine
         2: .line 105
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            astore 3 /* exceptions */
        start local 3 // java.util.concurrent.atomic.AtomicInteger exceptions
         3: .line 106
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            astore 4 /* executions */
        start local 4 // java.util.concurrent.atomic.AtomicInteger executions
         4: .line 107
            new java.util.concurrent.CountDownLatch
            dup
            bipush 16
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 5 /* startBarrier */
        start local 5 // java.util.concurrent.CountDownLatch startBarrier
         5: .line 109
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         6: goto 9
         7: .line 110
      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 /* executorService */
            aload 2 /* sharedEngine */
            aload 5 /* startBarrier */
            aload 0 /* source */
            aload 4 /* executions */
            aload 3 /* exceptions */
            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: .line 109
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            bipush 16
            if_icmplt 7
        end local 6 // int i
        10: .line 128
            aload 1 /* executorService */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
        11: .line 130
            aload 1 /* executorService */
            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: .line 131
            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 /* e */
        start local 6 // java.lang.InterruptedException e
        14: .line 132
            new java.lang.AssertionError
            dup
            aload 6 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 6 // java.lang.InterruptedException e
        15: .line 134
      StackMap locals:
      StackMap stack:
            lconst_0
            aload 3 /* exceptions */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        16: .line 135
            ldc 1600
            aload 4 /* executions */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        17: .line 136
            return
        end local 5 // java.util.concurrent.CountDownLatch startBarrier
        end local 4 // java.util.concurrent.atomic.AtomicInteger executions
        end local 3 // java.util.concurrent.atomic.AtomicInteger exceptions
        end local 2 // org.graalvm.polyglot.Engine sharedEngine
        end local 1 // java.util.concurrent.ExecutorService executorService
        end local 0 // java.lang.String source
      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: .line 111
            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 /* context */
        start local 5 // org.graalvm.polyglot.Context context
         1: .line 112
            aload 1
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         2: .line 114
            aload 1
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
         3: .line 115
            iconst_0
            istore 6 /* e */
        start local 6 // int e
         4: goto 11
         5: .line 117
      StackMap locals: org.graalvm.polyglot.Context int
      StackMap stack:
            aload 5 /* context */
            ldc "js"
            aload 2
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
         6: .line 118
            aload 3
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
         7: .line 119
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: pop
         9: .line 120
            aload 4
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        10: .line 115
      StackMap locals:
      StackMap stack:
            iinc 6 /* e */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* e */
            bipush 100
            if_icmplt 5
        end local 6 // int e
        12: .line 123
            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: .line 124
            aload 4
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        end local 5 // org.graalvm.polyglot.Context context
        15: .line 126
      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