class org.openjdk.jmh.runner.ForkedMain extends java.lang.Object
{
private static final java.util.concurrent.atomic.AtomicBoolean hangupFuse;
private static final java.util.concurrent.atomic.AtomicReference linkRef;
private static volatile boolean gracefullyFinished;
private static volatile java.lang.Throwable exception;
private static volatile java.io.PrintStream nakedErr;
void <init>()
{
org.openjdk.jmh.runner.ForkedMain v;
v := @this: org.openjdk.jmh.runner.ForkedMain;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static void main(java.lang.String[])
{
java.lang.Throwable v, v;
org.openjdk.jmh.runner.ForkedMain$HangupThread v;
java.lang.String[] v;
java.util.concurrent.atomic.AtomicReference v;
org.openjdk.jmh.runner.ForkedRunner v;
int v, v;
java.lang.String v, v;
boolean v;
java.io.PrintStream v, v, v;
java.lang.Runtime v;
org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread v;
java.lang.IllegalArgumentException v;
org.openjdk.jmh.runner.link.BinaryLinkClient v;
org.openjdk.jmh.runner.options.Options v;
v := @parameter: java.lang.String[];
v = lengthof v;
if v == 2 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Expected two arguments for forked VM");
throw v;
label:
v = <java.lang.System: java.io.PrintStream err>;
<org.openjdk.jmh.runner.ForkedMain: java.io.PrintStream nakedErr> = v;
v = staticinvoke <java.lang.Runtime: java.lang.Runtime getRuntime()>();
v = new org.openjdk.jmh.runner.ForkedMain$HangupThread;
specialinvoke v.<org.openjdk.jmh.runner.ForkedMain$HangupThread: void <init>()>();
virtualinvoke v.<java.lang.Runtime: void addShutdownHook(java.lang.Thread)>(v);
v = new org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread;
specialinvoke v.<org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread: void <init>()>();
label:
v = v[0];
v = v[1];
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = new org.openjdk.jmh.runner.link.BinaryLinkClient;
specialinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: void <init>(java.lang.String,int)>(v, v);
v = <org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicReference linkRef>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
v = virtualinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: org.openjdk.jmh.runner.options.Options handshake()>();
v = virtualinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: java.io.PrintStream getErrStream()>();
staticinvoke <java.lang.System: void setErr(java.io.PrintStream)>(v);
v = virtualinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: java.io.PrintStream getOutStream()>();
staticinvoke <java.lang.System: void setOut(java.io.PrintStream)>(v);
v = new org.openjdk.jmh.runner.ForkedRunner;
specialinvoke v.<org.openjdk.jmh.runner.ForkedRunner: void <init>(org.openjdk.jmh.runner.options.Options,org.openjdk.jmh.runner.link.BinaryLinkClient)>(v, v);
virtualinvoke v.<org.openjdk.jmh.runner.ForkedRunner: void run()>();
<org.openjdk.jmh.runner.ForkedMain: boolean gracefullyFinished> = 1;
label:
virtualinvoke v.<org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread: void start()>();
goto label;
label:
v := @caughtexception;
<org.openjdk.jmh.runner.ForkedMain: java.lang.Throwable exception> = v;
<org.openjdk.jmh.runner.ForkedMain: boolean gracefullyFinished> = 0;
label:
virtualinvoke v.<org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread: void start()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.openjdk.jmh.runner.ForkedMain$ShutdownTimeoutThread: void start()>();
throw v;
label:
v = <org.openjdk.jmh.runner.ForkedMain: boolean gracefullyFinished>;
if v != 0 goto label;
staticinvoke <java.lang.System: void exit(int)>(1);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
static void hangup()
{
java.io.PrintStream v, v;
java.lang.Throwable v;
java.lang.IllegalStateException v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.atomic.AtomicReference v, v;
java.lang.Exception v;
org.openjdk.jmh.runner.BenchmarkException v;
java.lang.Object v, v;
java.lang.String v;
org.openjdk.jmh.runner.format.OutputFormat v;
boolean v, v;
v = <org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicBoolean hangupFuse>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(0, 1);
if v != 0 goto label;
return;
label:
v = <org.openjdk.jmh.runner.ForkedMain: boolean gracefullyFinished>;
if v != 0 goto label;
v = <org.openjdk.jmh.runner.ForkedMain: java.lang.Throwable exception>;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("<failure: VM prematurely exited before JMH had finished with it, explicit System.exit was called?>");
v = v;
label:
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
v = <org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicReference linkRef>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v == null goto label;
label:
v = virtualinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: org.openjdk.jmh.runner.format.OutputFormat getOutputFormat()>();
interfaceinvoke v.<org.openjdk.jmh.runner.format.OutputFormat: void println(java.lang.String)>(v);
v = new org.openjdk.jmh.runner.BenchmarkException;
specialinvoke v.<org.openjdk.jmh.runner.BenchmarkException: void <init>(java.lang.Throwable)>(v);
virtualinvoke v.<org.openjdk.jmh.runner.link.BinaryLinkClient: void pushException(org.openjdk.jmh.runner.BenchmarkException)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.openjdk.jmh.runner.ForkedMain: java.io.PrintStream nakedErr>;
virtualinvoke v.<java.lang.Throwable: void printStackTrace(java.io.PrintStream)>(v);
goto label;
label:
v = <org.openjdk.jmh.runner.ForkedMain: java.io.PrintStream nakedErr>;
virtualinvoke v.<java.lang.Throwable: void printStackTrace(java.io.PrintStream)>(v);
label:
v = <org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicReference linkRef>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object getAndSet(java.lang.Object)>(null);
return;
catch java.lang.Exception from label to label with label;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.atomic.AtomicReference v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
<org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicBoolean hangupFuse> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>()>();
<org.openjdk.jmh.runner.ForkedMain: java.util.concurrent.atomic.AtomicReference linkRef> = v;
return;
}
}