public class jdk.jshell.execution.LocalExecutionControl extends jdk.jshell.execution.DirectExecutionControl
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: jdk.jshell.execution.LocalExecutionControl
super_class: jdk.jshell.execution.DirectExecutionControl
{
private final java.lang.Object STOP_LOCK;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean userCodeRunning;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.lang.ThreadGroup execThreadGroup;
descriptor: Ljava/lang/ThreadGroup;
flags: (0x0002) ACC_PRIVATE
public void <init>(jdk.jshell.execution.LoaderDelegate);
descriptor: (Ljdk/jshell/execution/LoaderDelegate;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial jdk.jshell.execution.DirectExecutionControl.<init>:(Ljdk/jshell/execution/LoaderDelegate;)V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield jdk.jshell.execution.LocalExecutionControl.STOP_LOCK:Ljava/lang/Object;
2: aload 0
iconst_0
putfield jdk.jshell.execution.LocalExecutionControl.userCodeRunning:Z
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/jshell/execution/LocalExecutionControl;
0 4 1 loaderDelegate Ljdk/jshell/execution/LoaderDelegate;
MethodParameters:
Name Flags
loaderDelegate
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial jdk.jshell.execution.DirectExecutionControl.<init>:()V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield jdk.jshell.execution.LocalExecutionControl.STOP_LOCK:Ljava/lang/Object;
2: aload 0
iconst_0
putfield jdk.jshell.execution.LocalExecutionControl.userCodeRunning:Z
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/jshell/execution/LocalExecutionControl;
protected java.lang.String invoke(java.lang.reflect.Method);
descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=8, locals=13, args_size=2
start local 0 start local 1 0: aload 0
new java.lang.ThreadGroup
dup
ldc "JShell process local execution"
invokespecial java.lang.ThreadGroup.<init>:(Ljava/lang/String;)V
putfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
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.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
astore 4
start local 4 4: new java.util.concurrent.atomic.AtomicReference
dup
iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
astore 5
start local 5 5: aload 5
aload 2
aload 3
aload 4
invokedynamic uncaughtException(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Thread$UncaughtExceptionHandler;
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/Thread;Ljava/lang/Throwable;)V
jdk/jshell/execution/LocalExecutionControl.lambda$0(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Thread;Ljava/lang/Throwable;)V (6)
(Ljava/lang/Thread;Ljava/lang/Throwable;)V
invokestatic java.lang.Thread.setDefaultUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V
6: iconst_1
anewarray java.lang.Object
astore 6
start local 6 7: new java.lang.Thread
dup
aload 0
getfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
aload 6
aload 1
aload 5
aload 2
aload 3
invokedynamic run([Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;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
jdk/jshell/execution/LocalExecutionControl.lambda$1([Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)V (6)
()V
invokespecial java.lang.Thread.<init>:(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V
astore 7
start local 7 8: aload 7
invokevirtual java.lang.Thread.start:()V
9: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
invokevirtual java.lang.ThreadGroup.activeCount:()I
anewarray java.lang.Thread
astore 8
start local 8 10: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
aload 8
invokevirtual java.lang.ThreadGroup.enumerate:([Ljava/lang/Thread;)I
pop
11: aload 8
dup
astore 12
arraylength
istore 11
iconst_0
istore 10
goto 16
StackMap locals: jdk.jshell.execution.LocalExecutionControl java.lang.reflect.Method java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.lang.Object[] java.lang.Thread java.lang.Thread[] top int int java.lang.Thread[]
StackMap stack:
12: aload 12
iload 10
aaload
astore 9
start local 9 13: aload 9
ifnull 15
14: aload 9
invokevirtual java.lang.Thread.join:()V
end local 9 15: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
16: iload 10
iload 11
if_icmplt 12
17: aload 5
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 19
18: new jdk.jshell.spi.ExecutionControl$StoppedException
dup
invokespecial jdk.jshell.spi.ExecutionControl$StoppedException.<init>:()V
athrow
19: StackMap locals: jdk.jshell.execution.LocalExecutionControl java.lang.reflect.Method java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.lang.Object[] java.lang.Thread java.lang.Thread[]
StackMap stack:
aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnull 21
20: aload 2
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.lang.reflect.InvocationTargetException
athrow
21: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnull 23
22: aload 4
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.lang.NoSuchMethodException
athrow
23: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnull 25
24: aload 3
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.lang.IllegalAccessException
athrow
25: StackMap locals:
StackMap stack:
aload 6
iconst_0
aaload
invokestatic jdk.jshell.execution.LocalExecutionControl.valueString:(Ljava/lang/Object;)Ljava/lang/String;
areturn
end local 8 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 26 0 this Ljdk/jshell/execution/LocalExecutionControl;
0 26 1 doitMethod Ljava/lang/reflect/Method;
2 26 2 iteEx Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/reflect/InvocationTargetException;>;
3 26 3 iaeEx Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/IllegalAccessException;>;
4 26 4 nmeEx Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/NoSuchMethodException;>;
5 26 5 stopped Ljava/util/concurrent/atomic/AtomicReference<Ljava/lang/Boolean;>;
7 26 6 res [Ljava/lang/Object;
8 26 7 snippetThread Ljava/lang/Thread;
10 26 8 threadList [Ljava/lang/Thread;
13 15 9 thread Ljava/lang/Thread;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
doitMethod
public void stop();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.STOP_LOCK:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.userCodeRunning:Z
ifne 4
2: aload 1
monitorexit
3: return
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
ifnonnull 6
5: new jdk.jshell.spi.ExecutionControl$InternalException
dup
ldc "Process-local code snippets thread group is null. Aborting stop."
invokespecial jdk.jshell.spi.ExecutionControl$InternalException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield jdk.jshell.execution.LocalExecutionControl.execThreadGroup:Ljava/lang/ThreadGroup;
invokevirtual java.lang.ThreadGroup.stop:()V
7: aload 1
monitorexit
8: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 1
monitorexit
10: athrow
11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljdk/jshell/execution/LocalExecutionControl;
Exception table:
from to target type
1 3 9 any
4 8 9 any
9 10 9 any
Exceptions:
throws jdk.jshell.spi.ExecutionControl$EngineTerminationException, jdk.jshell.spi.ExecutionControl$InternalException
protected void clientCodeEnter();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.STOP_LOCK:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
iconst_1
putfield jdk.jshell.execution.LocalExecutionControl.userCodeRunning:Z
2: aload 1
monitorexit
3: goto 6
StackMap locals: jdk.jshell.execution.LocalExecutionControl java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/jshell/execution/LocalExecutionControl;
Exception table:
from to target type
1 3 4 any
4 5 4 any
protected void clientCodeLeave();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield jdk.jshell.execution.LocalExecutionControl.STOP_LOCK:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
iconst_0
putfield jdk.jshell.execution.LocalExecutionControl.userCodeRunning:Z
2: aload 1
monitorexit
3: goto 6
StackMap locals: jdk.jshell.execution.LocalExecutionControl java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/jshell/execution/LocalExecutionControl;
Exception table:
from to target type
1 3 4 any
4 5 4 any
private static void lambda$0(java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, java.lang.Thread, java.lang.Throwable);
descriptor: (Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Thread;Ljava/lang/Throwable;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=6, args_size=6
start local 4 start local 5 0: aload 5
instanceof java.lang.reflect.InvocationTargetException
ifeq 6
1: aload 5
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
instanceof java.lang.ThreadDeath
ifeq 4
2: aload 0
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
3: goto 14
4: StackMap locals:
StackMap stack:
aload 1
aload 5
checkcast java.lang.reflect.InvocationTargetException
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
5: goto 14
StackMap locals:
StackMap stack:
6: aload 5
instanceof java.lang.IllegalAccessException
ifeq 9
7: aload 2
aload 5
checkcast java.lang.IllegalAccessException
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
8: goto 14
StackMap locals:
StackMap stack:
9: aload 5
instanceof java.lang.NoSuchMethodException
ifeq 12
10: aload 3
aload 5
checkcast java.lang.NoSuchMethodException
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
11: goto 14
StackMap locals:
StackMap stack:
12: aload 5
instanceof java.lang.ThreadDeath
ifeq 14
13: aload 0
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
14: StackMap locals:
StackMap stack:
return
end local 5 end local 4 LocalVariableTable:
Start End Slot Name Signature
0 15 4 t Ljava/lang/Thread;
0 15 5 e Ljava/lang/Throwable;
private static void lambda$1(java.lang.Object[], java.lang.reflect.Method, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference, java.util.concurrent.atomic.AtomicReference);
descriptor: ([Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=5, locals=6, args_size=5
0: aload 0
iconst_0
aload 1
aconst_null
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
aastore
1: goto 13
StackMap locals:
StackMap stack: java.lang.reflect.InvocationTargetException
2: astore 5
start local 5 3: aload 5
invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
instanceof java.lang.ThreadDeath
ifeq 6
4: aload 2
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
5: goto 13
6: StackMap locals: java.lang.reflect.InvocationTargetException
StackMap stack:
aload 3
aload 5
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
end local 5 7: goto 13
8: StackMap locals: java.lang.Object[] java.lang.reflect.Method java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.AtomicReference
StackMap stack: java.lang.IllegalAccessException
astore 5
start local 5 9: aload 4
aload 5
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
end local 5 10: goto 13
11: StackMap locals:
StackMap stack: java.lang.ThreadDeath
pop
12: aload 2
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
3 7 5 e Ljava/lang/reflect/InvocationTargetException;
9 10 5 e Ljava/lang/IllegalAccessException;
Exception table:
from to target type
0 1 2 Class java.lang.reflect.InvocationTargetException
0 1 8 Class java.lang.IllegalAccessException
0 1 11 Class java.lang.ThreadDeath
}
SourceFile: "LocalExecutionControl.java"
InnerClasses:
public abstract UncaughtExceptionHandler = java.lang.Thread$UncaughtExceptionHandler of java.lang.Thread
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public EngineTerminationException = jdk.jshell.spi.ExecutionControl$EngineTerminationException of jdk.jshell.spi.ExecutionControl
public InternalException = jdk.jshell.spi.ExecutionControl$InternalException of jdk.jshell.spi.ExecutionControl
public StoppedException = jdk.jshell.spi.ExecutionControl$StoppedException of jdk.jshell.spi.ExecutionControl