class org.openjdk.jmh.runner.ForkedMain
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.openjdk.jmh.runner.ForkedMain
super_class: java.lang.Object
{
private static final java.util.concurrent.atomic.AtomicBoolean hangupFuse;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.atomic.AtomicReference<org.openjdk.jmh.runner.link.BinaryLinkClient> linkRef;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lorg/openjdk/jmh/runner/link/BinaryLinkClient;>;
private static volatile boolean gracefullyFinished;
descriptor: Z
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static volatile java.lang.Throwable exception;
descriptor: Ljava/lang/Throwable;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static volatile java.io.PrintStream nakedErr;
descriptor: Ljava/io/PrintStream;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putstatic org.openjdk.jmh.runner.ForkedMain.hangupFuse:Ljava/util/concurrent/atomic/AtomicBoolean;
1: new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putstatic org.openjdk.jmh.runner.ForkedMain.linkRef:Ljava/util/concurrent/atomic/AtomicReference;
2: return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
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 Lorg/openjdk/jmh/runner/ForkedMain;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: aload 0
arraylength
iconst_2
if_icmpeq 2
1: new java.lang.IllegalArgumentException
dup
ldc "Expected two arguments for forked VM"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
new org.openjdk.jmh.runner.ForkedMain$HangupThread
dup
invokespecial org.openjdk.jmh.runner.ForkedMain$HangupThread.<init>:()V
invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
3: new org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread
dup
invokespecial org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread.<init>:()V
astore 1
start local 1 4: aload 0
iconst_0
aaload
astore 2
start local 2 5: aload 0
iconst_1
aaload
invokestatic java.lang.Integer.valueOf:(Ljava/lang/String;)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
istore 3
start local 3 6: new org.openjdk.jmh.runner.link.BinaryLinkClient
dup
aload 2
iload 3
invokespecial org.openjdk.jmh.runner.link.BinaryLinkClient.<init>:(Ljava/lang/String;I)V
astore 4
start local 4 7: getstatic org.openjdk.jmh.runner.ForkedMain.linkRef:Ljava/util/concurrent/atomic/AtomicReference;
aload 4
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
8: aload 4
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.handshake:()Lorg/openjdk/jmh/runner/options/Options;
astore 5
start local 5 9: getstatic java.lang.System.err:Ljava/io/PrintStream;
putstatic org.openjdk.jmh.runner.ForkedMain.nakedErr:Ljava/io/PrintStream;
10: aload 4
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.getErrStream:()Ljava/io/PrintStream;
invokestatic java.lang.System.setErr:(Ljava/io/PrintStream;)V
11: aload 4
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.getOutStream:()Ljava/io/PrintStream;
invokestatic java.lang.System.setOut:(Ljava/io/PrintStream;)V
12: new org.openjdk.jmh.runner.ForkedRunner
dup
aload 5
aload 4
invokespecial org.openjdk.jmh.runner.ForkedRunner.<init>:(Lorg/openjdk/jmh/runner/options/Options;Lorg/openjdk/jmh/runner/link/BinaryLinkClient;)V
astore 6
start local 6 13: aload 6
invokevirtual org.openjdk.jmh.runner.ForkedRunner.run:()V
14: iconst_1
putstatic org.openjdk.jmh.runner.ForkedMain.gracefullyFinished:Z
end local 6 end local 5 end local 4 end local 3 end local 2 15: goto 23
StackMap locals: java.lang.String[] org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread
StackMap stack: java.lang.Throwable
16: astore 2
start local 2 17: aload 2
putstatic org.openjdk.jmh.runner.ForkedMain.exception:Ljava/lang/Throwable;
18: iconst_0
putstatic org.openjdk.jmh.runner.ForkedMain.gracefullyFinished:Z
end local 2 19: aload 1
invokevirtual org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread.start:()V
goto 24
20: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
21: aload 1
invokevirtual org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread.start:()V
22: aload 7
athrow
23: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread.start:()V
24: StackMap locals:
StackMap stack:
getstatic org.openjdk.jmh.runner.ForkedMain.gracefullyFinished:Z
ifne 26
25: iconst_1
invokestatic java.lang.System.exit:(I)V
end local 1 26: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 argv [Ljava/lang/String;
4 26 1 shutdownThread Lorg/openjdk/jmh/runner/ForkedMain$ShutdownTimeoutThread;
5 15 2 hostName Ljava/lang/String;
6 15 3 hostPort I
7 15 4 link Lorg/openjdk/jmh/runner/link/BinaryLinkClient;
9 15 5 options Lorg/openjdk/jmh/runner/options/Options;
13 15 6 runner Lorg/openjdk/jmh/runner/ForkedRunner;
17 19 2 ex Ljava/lang/Throwable;
Exception table:
from to target type
4 15 16 Class java.lang.Throwable
4 19 20 any
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
argv
static void hangup();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=0
0: getstatic org.openjdk.jmh.runner.ForkedMain.hangupFuse:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifne 1
return
1: StackMap locals:
StackMap stack:
getstatic org.openjdk.jmh.runner.ForkedMain.gracefullyFinished:Z
ifne 17
2: getstatic org.openjdk.jmh.runner.ForkedMain.exception:Ljava/lang/Throwable;
astore 0
start local 0 3: aload 0
ifnonnull 7
4: new java.lang.IllegalStateException
dup
5: ldc "<failure: VM prematurely exited before JMH had finished with it, explicit System.exit was called?>"
6: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
astore 0
7: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
astore 1
start local 1 8: getstatic org.openjdk.jmh.runner.ForkedMain.linkRef:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.openjdk.jmh.runner.link.BinaryLinkClient
astore 2
start local 2 9: aload 2
ifnull 16
10: aload 2
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.getOutputFormat:()Lorg/openjdk/jmh/runner/format/OutputFormat;
aload 1
invokeinterface org.openjdk.jmh.runner.format.OutputFormat.println:(Ljava/lang/String;)V
11: aload 2
new org.openjdk.jmh.runner.BenchmarkException
dup
aload 0
invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/Throwable;)V
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.pushException:(Lorg/openjdk/jmh/runner/BenchmarkException;)V
12: goto 17
StackMap locals: java.lang.Throwable java.lang.String org.openjdk.jmh.runner.link.BinaryLinkClient
StackMap stack: java.lang.Exception
13: pop
14: aload 0
getstatic org.openjdk.jmh.runner.ForkedMain.nakedErr:Ljava/io/PrintStream;
invokevirtual java.lang.Throwable.printStackTrace:(Ljava/io/PrintStream;)V
15: goto 17
16: StackMap locals:
StackMap stack:
aload 0
getstatic org.openjdk.jmh.runner.ForkedMain.nakedErr:Ljava/io/PrintStream;
invokevirtual java.lang.Throwable.printStackTrace:(Ljava/io/PrintStream;)V
end local 2 end local 1 end local 0 17: StackMap locals:
StackMap stack:
getstatic org.openjdk.jmh.runner.ForkedMain.linkRef:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.openjdk.jmh.runner.link.BinaryLinkClient
astore 0
start local 0 18: aload 0
ifnull 22
19: aload 0
invokevirtual org.openjdk.jmh.runner.link.BinaryLinkClient.close:()V
20: goto 22
StackMap locals: org.openjdk.jmh.runner.link.BinaryLinkClient
StackMap stack: java.io.IOException
21: pop
22: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
3 17 0 ex Ljava/lang/Throwable;
8 17 1 msg Ljava/lang/String;
9 17 2 link Lorg/openjdk/jmh/runner/link/BinaryLinkClient;
18 23 0 link Lorg/openjdk/jmh/runner/link/BinaryLinkClient;
Exception table:
from to target type
10 12 13 Class java.lang.Exception
19 20 21 Class java.io.IOException
}
SourceFile: "ForkedMain.java"
NestMembers:
org.openjdk.jmh.runner.ForkedMain$HangupThread org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread
InnerClasses:
private HangupThread = org.openjdk.jmh.runner.ForkedMain$HangupThread of org.openjdk.jmh.runner.ForkedMain
private ShutdownTimeoutThread = org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread of org.openjdk.jmh.runner.ForkedMain