public class org.openjdk.jmh.runner.CompilerHints extends org.openjdk.jmh.runner.AbstractResourceReader
{
public static final java.lang.String LIST;
static final java.lang.String[] HINT_COMPATIBLE_JVMS;
static final java.lang.String JVM_ZING;
private static volatile org.openjdk.jmh.runner.CompilerHints defaultList;
private static volatile java.lang.String hintsFile;
private final java.util.Set hints;
static final java.lang.String XX_COMPILE_COMMAND_FILE;
static final java.lang.String BLACKHOLE_MODE_NAME;
static final java.lang.String BLACKHOLE_AUTODETECT_NAME;
static final java.lang.String BLACKHOLE_DEBUG_NAME;
static final boolean BLACKHOLE_MODE_AUTODETECT;
static final boolean BLACKHOLE_MODE_DEBUG;
private static org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode;
private static org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect;
public static org.openjdk.jmh.runner.CompilerHints defaultList()
{
org.openjdk.jmh.runner.CompilerHints v, v, v;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints defaultList>;
if v != null goto label;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints fromResource(java.lang.String)>("/META-INF/CompilerHints");
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints defaultList> = v;
label:
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints defaultList>;
return v;
}
public static java.lang.String hintsFile()
{
java.lang.IllegalStateException v;
java.util.Set v;
java.io.IOException v;
org.openjdk.jmh.runner.CompilerHints v;
java.util.ArrayList v;
int v, v;
java.lang.String v, v, v;
org.openjdk.jmh.runner.CompilerHints$BlackholeMode v;
boolean v, v;
v = <org.openjdk.jmh.runner.CompilerHints: java.lang.String hintsFile>;
if v != null goto label;
label:
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints defaultList()>();
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints: java.util.Set get()>();
v = new java.util.ArrayList;
v = interfaceinvoke v.<java.util.Set: int size()>();
v = v + 2;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("quiet");
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("inline,org/openjdk/jmh/infra/Blackhole.consume");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("dontinline,org/openjdk/jmh/infra/Blackhole.consumeCPU");
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints$BlackholeMode: boolean shouldBlackhole()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("blackhole,org/openjdk/jmh/infra/Blackhole.consumeCompiler");
label:
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints$BlackholeMode: boolean shouldNotInline()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("dontinline,org/openjdk/jmh/infra/Blackhole.consumeFull");
label:
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
v = staticinvoke <org.openjdk.jmh.util.FileUtils: java.lang.String createTempFileWithLines(java.lang.String,java.lang.Iterable)>("compilecommand", v);
<org.openjdk.jmh.runner.CompilerHints: java.lang.String hintsFile> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Error creating compiler hints file", v);
throw v;
label:
v = <org.openjdk.jmh.runner.CompilerHints: java.lang.String hintsFile>;
return v;
catch java.io.IOException from label to label with label;
}
public static org.openjdk.jmh.runner.CompilerHints fromResource(java.lang.String)
{
java.lang.String v;
org.openjdk.jmh.runner.CompilerHints v;
v := @parameter: java.lang.String;
v = new org.openjdk.jmh.runner.CompilerHints;
specialinvoke v.<org.openjdk.jmh.runner.CompilerHints: void <init>(java.lang.String,java.lang.String)>(null, v);
return v;
}
public static org.openjdk.jmh.runner.CompilerHints fromFile(java.lang.String)
{
java.lang.String v;
org.openjdk.jmh.runner.CompilerHints v;
v := @parameter: java.lang.String;
v = new org.openjdk.jmh.runner.CompilerHints;
specialinvoke v.<org.openjdk.jmh.runner.CompilerHints: void <init>(java.lang.String,java.lang.String)>(v, null);
return v;
}
private void <init>(java.lang.String, java.lang.String)
{
java.util.Set v, v;
java.lang.String v, v;
org.openjdk.jmh.runner.CompilerHints v;
v := @this: org.openjdk.jmh.runner.CompilerHints;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
specialinvoke v.<org.openjdk.jmh.runner.AbstractResourceReader: void <init>(java.lang.String,java.lang.String,java.lang.String)>(v, v, null);
v = specialinvoke v.<org.openjdk.jmh.runner.CompilerHints: java.util.Set read()>();
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
v.<org.openjdk.jmh.runner.CompilerHints: java.util.Set hints> = v;
return;
}
private static boolean isHintCompatibleVM()
{
java.lang.String[] v, v;
int v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v;
boolean v, v;
java.io.PrintStream v;
java.lang.RuntimeException v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.vm.name");
v = <org.openjdk.jmh.runner.CompilerHints: java.lang.String[] HINT_COMPATIBLE_JVMS>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(v);
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("Zing");
if v == 0 goto label;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.version");
label:
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(95);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>("\\.");
v = v[0];
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v <= 5 goto label;
label:
return 1;
label:
v = v[0];
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v != 5 goto label;
v = v[1];
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v < 10 goto label;
label:
return 1;
label:
v := @caughtexception;
v = <java.lang.System: java.io.PrintStream err>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("ERROR: Zing version format does not match 1.*.0-zing_*.*.*.*");
label:
return 0;
catch java.lang.NumberFormatException from label to label with label;
catch java.lang.ArrayIndexOutOfBoundsException from label to label with label;
catch java.lang.NumberFormatException from label to label with label;
catch java.lang.ArrayIndexOutOfBoundsException from label to label with label;
}
public java.util.Set get()
{
java.util.Set v;
org.openjdk.jmh.runner.CompilerHints v;
v := @this: org.openjdk.jmh.runner.CompilerHints;
v = v.<org.openjdk.jmh.runner.CompilerHints: java.util.Set hints>;
return v;
}
private java.util.Set read()
{
java.lang.Throwable v;
java.util.Iterator v;
java.io.IOException v;
java.lang.RuntimeException v;
org.openjdk.jmh.runner.CompilerHints v;
java.util.TreeSet v;
java.util.List v;
java.lang.Object v;
java.io.BufferedReader v;
java.lang.String v, v;
boolean v, v, v;
v := @this: org.openjdk.jmh.runner.CompilerHints;
v = new java.util.TreeSet;
specialinvoke v.<java.util.TreeSet: void <init>()>();
label:
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints: java.util.List getReaders()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = new java.io.BufferedReader;
specialinvoke v.<java.io.BufferedReader: void <init>(java.io.Reader)>(v);
label:
v = virtualinvoke v.<java.io.BufferedReader: java.lang.String readLine()>();
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("#");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = virtualinvoke v.<java.io.BufferedReader: java.lang.String readLine()>();
goto label;
label:
virtualinvoke v.<java.io.BufferedReader: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Error reading compiler hints", v);
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
public static java.util.List getCompileCommandFiles(java.util.List)
{
java.util.Iterator v;
java.util.ArrayList v;
java.util.List v;
int v;
java.lang.Object v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.util.List;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("-XX:CompileCommandFile=");
if v == 0 goto label;
v = "-XX:CompileCommandFile=";
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public static void addCompilerHints(java.util.List)
{
java.util.ArrayList v;
int v;
java.lang.String v, v, v, v, v, v, v;
boolean v, v;
java.io.PrintStream v;
java.io.File v;
java.util.List v;
org.openjdk.jmh.runner.CompilerHints$BlackholeMode v, v;
v := @parameter: java.util.List;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: boolean isHintCompatibleVM()>();
if v != 0 goto label;
v = <java.lang.System: java.io.PrintStream err>;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.vm.name");
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.version");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("WARNING: Not a HotSpot compiler command compatible VM (\"\u0001-\u0001\"), compilerHints are disabled.");
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
return;
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: java.lang.String hintsFile()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void removeCompileCommandFiles(java.util.List,java.util.List)>(v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>(".hotspot_compiler");
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v == 0 goto label;
v = virtualinvoke v.<java.io.File: java.lang.String getAbsolutePath()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()>();
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode COMPILER>;
if v != v goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:+UnlockDiagnosticVMOptions");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:+UnlockExperimentalVMOptions");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-DcompilerBlackholesEnabled=true");
label:
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: java.lang.String mergeHintFiles(java.util.List)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("-XX:CompileCommandFile=\u0001");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return;
}
private static void removeCompileCommandFiles(java.util.List, java.util.List)
{
java.util.Iterator v;
java.util.List v, v;
int v;
java.lang.Object v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("-XX:CompileCommandFile=");
if v == 0 goto label;
v = "-XX:CompileCommandFile=";
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
}
private static java.lang.String mergeHintFiles(java.util.List)
{
java.lang.IllegalStateException v;
java.util.Iterator v;
java.util.Set v;
java.io.IOException v;
org.openjdk.jmh.runner.CompilerHints v;
java.util.TreeSet v;
java.util.List v;
int v;
java.lang.Object v, v;
java.lang.String v;
boolean v;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
return v;
label:
v = new java.util.TreeSet;
specialinvoke v.<java.util.TreeSet: void <init>()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints fromFile(java.lang.String)>(v);
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints: java.util.Set get()>();
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
goto label;
label:
v = staticinvoke <org.openjdk.jmh.util.FileUtils: java.lang.String createTempFileWithLines(java.lang.String,java.lang.Iterable)>("compilecommand", v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Error merging compiler hints files", v);
throw v;
catch java.io.IOException from label to label with label;
}
private static org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()
{
java.lang.IllegalStateException v, v;
java.lang.String v, v;
boolean v, v, v, v;
org.openjdk.jmh.runner.CompilerHints$BlackholeSelect v, v, v;
java.lang.IllegalArgumentException v;
org.openjdk.jmh.runner.CompilerHints$BlackholeMode v, v, v, v, v, v, v, v, v, v;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
if v == null goto label;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
return v;
label:
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("jmh.blackhole.mode");
if v == null goto label;
label:
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode valueOf(java.lang.String)>(v);
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode> = v;
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeSelect: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect FORCED>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect> = v;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints$BlackholeMode: boolean shouldBlackhole()>();
if v == 0 goto label;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: boolean compilerBlackholesAvailable()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Compiler Blackholes are not available in current VM");
throw v;
label:
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Unknown Blackhole mode: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <org.openjdk.jmh.runner.CompilerHints: boolean BLACKHOLE_MODE_AUTODETECT>;
if v == 0 goto label;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: boolean compilerBlackholesAvailable()>();
if v == 0 goto label;
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode COMPILER>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode> = v;
goto label;
label:
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode FULL_DONTINLINE>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode> = v;
label:
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeSelect: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect AUTO>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect> = v;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
return v;
label:
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode FULL_DONTINLINE>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode> = v;
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeSelect: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect FALLBACK>;
<org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect> = v;
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode>;
return v;
catch java.lang.IllegalArgumentException from label to label with label;
}
private static org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect()
{
org.openjdk.jmh.runner.CompilerHints$BlackholeSelect v;
staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()>();
v = <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect>;
return v;
}
private static boolean compilerBlackholesAvailable()
{
java.util.ArrayList v, v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
java.util.Iterator v, v;
java.util.Collection v, v;
java.lang.Object v, v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <org.openjdk.jmh.util.Utils: java.lang.String getCurrentJvm()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:+UnlockExperimentalVMOptions");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:CompileCommand=quiet");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:CompileCommand=blackhole,some/fake/Class.method");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-version");
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>("Blackhole command errors test:");
v = staticinvoke <org.openjdk.jmh.util.Utils: java.util.Collection runWith(java.util.List)>(v);
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("CompilerOracle");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("CompileCommand");
if v == 0 goto label;
label:
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>("Found the suspected error line, no compiler blackholes.");
return 0;
label:
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = staticinvoke <org.openjdk.jmh.util.Utils: java.lang.String getCurrentJvm()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:+UnlockExperimentalVMOptions");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-XX:CompileCommand=blackhole,some/fake/Class.method");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("-version");
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>("Blackhole command acceptance test:");
v = staticinvoke <org.openjdk.jmh.util.Utils: java.util.Collection runWith(java.util.List)>(v);
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("CompilerOracle");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("CompileCommand");
if v == 0 goto label;
label:
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>("Found the acceptance line, compiler blackholes are available.");
return 1;
label:
staticinvoke <org.openjdk.jmh.runner.CompilerHints: void debug(java.lang.String)>("Compiler blackholes are not available.");
return 0;
}
private static void debug(java.lang.String)
{
java.io.PrintStream v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.String;
v = <org.openjdk.jmh.runner.CompilerHints: boolean BLACKHOLE_MODE_DEBUG>;
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
return;
}
public static void printBlackhole(java.io.PrintStream)
{
java.io.PrintStream v;
org.openjdk.jmh.runner.CompilerHints$BlackholeSelect v;
java.lang.String v, v, v;
org.openjdk.jmh.runner.CompilerHints$BlackholeMode v;
v := @parameter: java.io.PrintStream;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()>();
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints$BlackholeMode: java.lang.String desc()>();
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeSelect blackholeSelect()>();
v = virtualinvoke v.<org.openjdk.jmh.runner.CompilerHints$BlackholeSelect: java.lang.String desc()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("# Blackhole mode: \u (\u)");
virtualinvoke v.<java.io.PrintStream: void print(java.lang.String)>(v);
virtualinvoke v.<java.io.PrintStream: void println()>();
return;
}
public static void printWarnings(java.io.PrintStream)
{
java.io.PrintStream v;
org.openjdk.jmh.runner.CompilerHints$BlackholeMode v, v;
v := @parameter: java.io.PrintStream;
v = staticinvoke <org.openjdk.jmh.runner.CompilerHints: org.openjdk.jmh.runner.CompilerHints$BlackholeMode blackholeMode()>();
v = <org.openjdk.jmh.runner.CompilerHints$BlackholeMode: org.openjdk.jmh.runner.CompilerHints$BlackholeMode COMPILER>;
if v != v goto label;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("NOTE: Current JVM experimentally supports Compiler Blackholes, and they are in use. Please exercise");
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("extra caution when trusting the results, look into the generated code to check the benchmark still");
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("works, and factor in a small probability of new VM bugs. Additionally, while comparisons between");
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("different JVMs are already problematic, the performance difference caused by different Blackhole");
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("modes can be very significant. Please make sure you use the consistent Blackhole mode for comparisons.");
virtualinvoke v.<java.io.PrintStream: void println()>();
label:
return;
}
static void <clinit>()
{
java.lang.String[] v;
java.lang.String v, v;
boolean v, v;
v = newarray (java.lang.String)[3];
v[0] = "OpenJDK";
v[1] = "HotSpot";
v[2] = "GraalVM";
<org.openjdk.jmh.runner.CompilerHints: java.lang.String[] HINT_COMPATIBLE_JVMS> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String,java.lang.String)>("jmh.blackhole.autoDetect", "true");
v = staticinvoke <java.lang.Boolean: boolean parseBoolean(java.lang.String)>(v);
<org.openjdk.jmh.runner.CompilerHints: boolean BLACKHOLE_MODE_AUTODETECT> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String,java.lang.String)>("jmh.blackhole.debug", "false");
v = staticinvoke <java.lang.Boolean: boolean parseBoolean(java.lang.String)>(v);
<org.openjdk.jmh.runner.CompilerHints: boolean BLACKHOLE_MODE_DEBUG> = v;
return;
}
}