public class com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest
super_class: java.lang.Object
{
static final java.util.concurrent.atomic.AtomicInteger createDisposeCount;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.util.concurrent.atomic.AtomicInteger
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest.createDisposeCount:Ljava/util/concurrent/atomic/AtomicInteger;
return
LocalVariableTable:
Start End Slot Name Signature
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/api/instrumentation/test/InstrumentationMultiThreadingTest;
public void testAsyncAttachement();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=11, args_size=1
start local 0 0: iconst_1
istore 1
start local 1 1: bipush 10
istore 2
start local 2 2: new java.util.concurrent.CopyOnWriteArrayList
dup
invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
astore 3
start local 3 3: iconst_0
istore 4
start local 4 4: goto 30
5: StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest int int java.util.concurrent.CopyOnWriteArrayList int
StackMap stack:
iload 1
iload 2
iadd
invokestatic java.util.concurrent.Executors.newFixedThreadPool:(I)Ljava/util/concurrent/ExecutorService;
astore 5
start local 5 6: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 6
start local 6 7: new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
astore 7
start local 7 8: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 8
start local 8 9: iconst_0
istore 9
start local 9 10: goto 13
11: StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest int int java.util.concurrent.CopyOnWriteArrayList int java.util.concurrent.ExecutorService java.util.List java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference int
StackMap stack:
aload 6
aload 5
new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$1
dup
aload 0
aload 3
aload 8
aload 7
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$1.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationMultiThreadingTest;Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicBoolean;)V
invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
12: iinc 9 1
StackMap locals:
StackMap stack:
13: iload 9
iload 1
if_icmplt 11
end local 9 14: iconst_0
istore 9
start local 9 15: goto 19
16: StackMap locals:
StackMap stack:
iload 9
istore 10
start local 10 17: aload 6
aload 5
new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$2
dup
aload 0
aload 7
aload 8
iload 10
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$2.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationMultiThreadingTest;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicReference;I)V
invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 18: iinc 9 1
StackMap locals:
StackMap stack:
19: iload 9
iload 2
if_icmplt 16
end local 9 20: aload 7
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
21: aload 6
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 24
StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest int int java.util.concurrent.CopyOnWriteArrayList int java.util.concurrent.ExecutorService java.util.List java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicReference top java.util.Iterator
StackMap stack:
22: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.Future
astore 9
start local 9 23: aload 9
invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
pop
end local 9 24: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
25: aload 5
invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
pop
26: aload 5
ldc 100
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
27: aload 8
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
ldc "testAsyncAttachement1"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.polyglot.Instrument
ldc Lcom/oracle/truffle/api/instrumentation/test/EnableableInstrument;
invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.test.EnableableInstrument
iconst_0
invokevirtual com.oracle.truffle.api.instrumentation.test.EnableableInstrument.setEnabled:(Z)V
28: aload 8
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
ldc "testAsyncAttachement2"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.polyglot.Instrument
ldc Lcom/oracle/truffle/api/instrumentation/test/EnableableInstrument;
invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.instrumentation.test.EnableableInstrument
iconst_0
invokevirtual com.oracle.truffle.api.instrumentation.test.EnableableInstrument.setEnabled:(Z)V
end local 8 end local 7 end local 6 end local 5 29: iinc 4 1
StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest int int java.util.concurrent.CopyOnWriteArrayList int
StackMap stack:
30: iload 4
iconst_5
if_icmplt 5
end local 4 31: lconst_0
getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest.createDisposeCount:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
32: aload 3
invokevirtual java.util.concurrent.CopyOnWriteArrayList.iterator:()Ljava/util/Iterator;
astore 5
goto 35
StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest int int java.util.concurrent.CopyOnWriteArrayList top java.util.Iterator
StackMap stack:
33: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.graalvm.polyglot.Context
astore 4
start local 4 34: aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 35: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 33
36: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lcom/oracle/truffle/api/instrumentation/test/InstrumentationMultiThreadingTest;
1 37 1 nEvals I
2 37 2 nInstruments I
3 37 3 createdContexts Ljava/util/concurrent/CopyOnWriteArrayList<Lorg/graalvm/polyglot/Context;>;
4 31 4 j I
6 29 5 executorService Ljava/util/concurrent/ExecutorService;
7 29 6 futures Ljava/util/List<Ljava/util/concurrent/Future<*>;>;
8 29 7 terminated Ljava/util/concurrent/atomic/AtomicBoolean;
9 29 8 engineRef Ljava/util/concurrent/atomic/AtomicReference<Lorg/graalvm/polyglot/Context;>;
10 14 9 i I
15 20 9 i I
17 18 10 index I
23 24 9 future Ljava/util/concurrent/Future<*>;
34 35 4 context Lorg/graalvm/polyglot/Context;
Exceptions:
throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
RuntimeVisibleAnnotations:
org.junit.Test()
private static com.oracle.truffle.api.instrumentation.EventBinding<?>[] createDummyBindings(com.oracle.truffle.api.instrumentation.Instrumenter);
descriptor: (Lcom/oracle/truffle/api/instrumentation/Instrumenter;)[Lcom/oracle/truffle/api/instrumentation/EventBinding;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=4, args_size=1
start local 0 0: iconst_5
anewarray com.oracle.truffle.api.instrumentation.EventBinding
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$3
dup
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$3.<init>:()V
astore 3
start local 3 3: aload 1
iload 2
iinc 2 1
aload 0
invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
aastore
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
aload 3
invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
aastore
4: aload 1
iload 2
iinc 2 1
aload 0
invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
aastore
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
aload 3
invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
aastore
5: aload 1
iload 2
iinc 2 1
aload 0
getstatic com.oracle.truffle.api.instrumentation.SourceFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceFilter;
new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$4
dup
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$4.<init>:()V
6: iconst_1
7: invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceListener:(Lcom/oracle/truffle/api/instrumentation/SourceFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
aastore
8: aload 1
iload 2
iinc 2 1
aload 0
invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
aastore
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$5
dup
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$5.<init>:()V
9: iconst_1
10: invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
aastore
11: aload 1
iload 2
iinc 2 1
aload 0
invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
iconst_1
anewarray java.lang.Class
dup
iconst_0
getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
aastore
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
new com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$6
dup
invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$6.<init>:()V
12: iconst_1
13: invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
aastore
14: aload 1
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 instrumenter Lcom/oracle/truffle/api/instrumentation/Instrumenter;
1 15 1 bindings [Lcom/oracle/truffle/api/instrumentation/EventBinding;
2 15 2 bi I
3 15 3 dummyListener Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
Signature: (Lcom/oracle/truffle/api/instrumentation/Instrumenter;)[Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
MethodParameters:
Name Flags
instrumenter
}
SourceFile: "InstrumentationMultiThreadingTest.java"
NestMembers:
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$1 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$2 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$3 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$4 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$5 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$6 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$TestAsyncAttachement1 com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$TestAsyncAttachement2
InnerClasses:
public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$1
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$2
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$3
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$4
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$5
com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$6
public TestAsyncAttachement1 = com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$TestAsyncAttachement1 of com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest
public TestAsyncAttachement2 = com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest$TestAsyncAttachement2 of com.oracle.truffle.api.instrumentation.test.InstrumentationMultiThreadingTest