public class com.oracle.truffle.api.debug.test.ConcurrentDebuggingTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.api.debug.test.ConcurrentDebuggingTest
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/api/debug/test/ConcurrentDebuggingTest;
public void testConcurrentBreakpoints();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=11, args_size=1
start local 0 0: bipush 100
istore 1
start local 1 1: new java.lang.StringBuilder
dup
ldc "ROOT(DEFINE(foo,\n STATEMENT\n),\nLOOP("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ", SPAWN(foo)),\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
3: ldc "JOIN())"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 2
start local 2 5: ldc "instrumentation-test-language"
aload 2
invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
astore 3
start local 3 6: aload 3
invokevirtual org.graalvm.polyglot.Source.getURI:()Ljava/net/URI;
invokestatic com.oracle.truffle.api.debug.Breakpoint.newBuilder:(Ljava/net/URI;)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
iconst_2
invokevirtual com.oracle.truffle.api.debug.Breakpoint$Builder.lineIs:(I)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
invokevirtual com.oracle.truffle.api.debug.Breakpoint$Builder.build:()Lcom/oracle/truffle/api/debug/Breakpoint;
astore 4
start local 4 7: 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.allowCreateThread:(Z)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 5
start local 5 8: aload 5
invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
ldc "debugger"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.polyglot.Instrument
ldc Lcom/oracle/truffle/api/debug/Debugger;
invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.debug.Debugger
astore 6
start local 6 9: new java.util.concurrent.atomic.AtomicInteger
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
astore 7
start local 7 10: aconst_null
astore 8
aconst_null
astore 9
11: aload 6
aload 4
aload 7
invokedynamic onSuspend(Lcom/oracle/truffle/api/debug/Breakpoint;Ljava/util/concurrent/atomic/AtomicInteger;)Lcom/oracle/truffle/api/debug/SuspendedCallback;
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:
(Lcom/oracle/truffle/api/debug/SuspendedEvent;)V
com/oracle/truffle/api/debug/test/ConcurrentDebuggingTest.lambda$0(Lcom/oracle/truffle/api/debug/Breakpoint;Ljava/util/concurrent/atomic/AtomicInteger;Lcom/oracle/truffle/api/debug/SuspendedEvent;)V (6)
(Lcom/oracle/truffle/api/debug/SuspendedEvent;)V
invokevirtual com.oracle.truffle.api.debug.Debugger.startSession:(Lcom/oracle/truffle/api/debug/SuspendedCallback;)Lcom/oracle/truffle/api/debug/DebuggerSession;
astore 10
start local 10 12: aload 10
aload 4
invokevirtual com.oracle.truffle.api.debug.DebuggerSession.install:(Lcom/oracle/truffle/api/debug/Breakpoint;)Lcom/oracle/truffle/api/debug/Breakpoint;
pop
13: aload 5
aload 3
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
14: aload 10
ifnull 20
aload 10
invokevirtual com.oracle.truffle.api.debug.DebuggerSession.close:()V
goto 20
StackMap locals: com.oracle.truffle.api.debug.test.ConcurrentDebuggingTest int java.lang.String org.graalvm.polyglot.Source com.oracle.truffle.api.debug.Breakpoint org.graalvm.polyglot.Context com.oracle.truffle.api.debug.Debugger java.util.concurrent.atomic.AtomicInteger java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession
StackMap stack: java.lang.Throwable
15: astore 8
aload 10
ifnull 16
aload 10
invokevirtual com.oracle.truffle.api.debug.DebuggerSession.close:()V
end local 10 StackMap locals:
StackMap stack:
16: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 9
aload 8
ifnonnull 18
aload 9
astore 8
goto 19
StackMap locals:
StackMap stack:
18: aload 8
aload 9
if_acmpeq 19
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 8
athrow
20: StackMap locals:
StackMap stack:
iload 1
i2l
aload 7
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
21: return
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 22 0 this Lcom/oracle/truffle/api/debug/test/ConcurrentDebuggingTest;
1 22 1 numThreads I
5 22 2 code Ljava/lang/String;
6 22 3 source Lorg/graalvm/polyglot/Source;
7 22 4 breakpoint Lcom/oracle/truffle/api/debug/Breakpoint;
8 22 5 context Lorg/graalvm/polyglot/Context;
9 22 6 debugger Lcom/oracle/truffle/api/debug/Debugger;
10 22 7 hits Ljava/util/concurrent/atomic/AtomicInteger;
12 16 10 session Lcom/oracle/truffle/api/debug/DebuggerSession;
Exception table:
from to target type
12 14 15 any
11 17 17 any
RuntimeVisibleAnnotations:
org.junit.Test()
private static void lambda$0(com.oracle.truffle.api.debug.Breakpoint, java.util.concurrent.atomic.AtomicInteger, com.oracle.truffle.api.debug.SuspendedEvent);
descriptor: (Lcom/oracle/truffle/api/debug/Breakpoint;Ljava/util/concurrent/atomic/AtomicInteger;Lcom/oracle/truffle/api/debug/SuspendedEvent;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=3, args_size=3
start local 2 0: lconst_1
aload 2
invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getBreakpoints:()Ljava/util/List;
invokeinterface java.util.List.size:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
1: aload 0
aload 2
invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getBreakpoints:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
2: aload 1
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
3: return
end local 2 LocalVariableTable:
Start End Slot Name Signature
0 4 2 event Lcom/oracle/truffle/api/debug/SuspendedEvent;
}
SourceFile: "ConcurrentDebuggingTest.java"
InnerClasses:
public final Builder = com.oracle.truffle.api.debug.Breakpoint$Builder of com.oracle.truffle.api.debug.Breakpoint
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