public class org.openjdk.jmh.profile.PausesProfiler extends java.lang.Object implements org.openjdk.jmh.profile.InternalProfiler
{
private org.openjdk.jmh.profile.PausesProfiler$Ticker ticker;
private org.openjdk.jmh.util.SampleBuffer buffer;
private long expectedNs;
private long thresh;
public java.lang.String getDescription()
{
org.openjdk.jmh.profile.PausesProfiler v;
v := @this: org.openjdk.jmh.profile.PausesProfiler;
return "Pauses profiler";
}
public void <init>(java.lang.String) throws org.openjdk.jmh.profile.ProfilerException
{
java.lang.Integer v, v;
joptsimple.OptionParser v;
joptsimple.OptionSet v;
joptsimple.ArgumentAcceptingOptionSpec v, v, v, v, v, v, v, v;
joptsimple.OptionSpecBuilder v, v;
java.lang.Integer[] v, v;
org.openjdk.jmh.profile.PausesProfiler v;
long v, v, v;
org.openjdk.jmh.runner.options.IntegerValueConverter v, v;
joptsimple.OptionException v;
int v, v, v, v, v;
java.lang.String v, v, v;
org.openjdk.jmh.profile.ProfilerException v;
org.openjdk.jmh.profile.ProfilerOptionFormatter v;
java.util.concurrent.TimeUnit v, v;
java.lang.Class v;
java.lang.Object v, v, v;
v := @this: org.openjdk.jmh.profile.PausesProfiler;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new joptsimple.OptionParser;
specialinvoke v.<joptsimple.OptionParser: void <init>()>();
v = new org.openjdk.jmh.profile.ProfilerOptionFormatter;
v = class "Lorg/openjdk/jmh/profile/PausesProfiler;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getCanonicalName()>();
specialinvoke v.<org.openjdk.jmh.profile.ProfilerOptionFormatter: void <init>(java.lang.String)>(v);
virtualinvoke v.<joptsimple.OptionParser: void formatHelpWith(joptsimple.HelpFormatter)>(v);
v = virtualinvoke v.<joptsimple.OptionParser: joptsimple.OptionSpecBuilder accepts(java.lang.String,java.lang.String)>("period", "Sampling period, in us. Smaller values improve accuracy, at the expense of more profiling overhead.");
v = virtualinvoke v.<joptsimple.OptionSpecBuilder: joptsimple.ArgumentAcceptingOptionSpec withRequiredArg()>();
v = <org.openjdk.jmh.runner.options.IntegerValueConverter: org.openjdk.jmh.runner.options.IntegerValueConverter POSITIVE>;
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec withValuesConvertedBy(joptsimple.ValueConverter)>(v);
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec describedAs(java.lang.String)>("int");
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(50);
v = newarray (java.lang.Integer)[0];
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec defaultsTo(java.lang.Object,java.lang.Object[])>(v, v);
v = virtualinvoke v.<joptsimple.OptionParser: joptsimple.OptionSpecBuilder accepts(java.lang.String,java.lang.String)>("threshold", "Threshold to filter pauses, in us. If unset, the threshold is figured during the initial calibration.");
v = virtualinvoke v.<joptsimple.OptionSpecBuilder: joptsimple.ArgumentAcceptingOptionSpec withRequiredArg()>();
v = <org.openjdk.jmh.runner.options.IntegerValueConverter: org.openjdk.jmh.runner.options.IntegerValueConverter POSITIVE>;
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec withValuesConvertedBy(joptsimple.ValueConverter)>(v);
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec describedAs(java.lang.String)>("int");
v = (int) -1;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = newarray (java.lang.Integer)[0];
v = virtualinvoke v.<joptsimple.ArgumentAcceptingOptionSpec: joptsimple.ArgumentAcceptingOptionSpec defaultsTo(java.lang.Object,java.lang.Object[])>(v, v);
v = staticinvoke <org.openjdk.jmh.profile.ProfilerUtils: joptsimple.OptionSet parseInitLine(java.lang.String,joptsimple.OptionParser)>(v, v);
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MICROSECONDS>;
v = virtualinvoke v.<joptsimple.OptionSet: java.lang.Object valueOf(joptsimple.OptionSpec)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v.<org.openjdk.jmh.profile.PausesProfiler: long expectedNs> = v;
v = virtualinvoke v.<joptsimple.OptionSet: java.lang.Object valueOf(joptsimple.OptionSpec)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = (int) -1;
if v == v goto label;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MICROSECONDS>;
v = virtualinvoke v.<joptsimple.OptionSet: java.lang.Object valueOf(joptsimple.OptionSpec)>(v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v.<org.openjdk.jmh.profile.PausesProfiler: long thresh> = v;
goto label;
label:
v = specialinvoke v.<org.openjdk.jmh.profile.PausesProfiler: long calibrate()>();
v.<org.openjdk.jmh.profile.PausesProfiler: long thresh> = v;
label:
goto label;
label:
v := @caughtexception;
v = new org.openjdk.jmh.profile.ProfilerException;
v = virtualinvoke v.<joptsimple.OptionException: java.lang.String getMessage()>();
specialinvoke v.<org.openjdk.jmh.profile.ProfilerException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
catch joptsimple.OptionException from label to label with label;
}
public void beforeIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams)
{
org.openjdk.jmh.infra.BenchmarkParams v;
org.openjdk.jmh.infra.IterationParams v;
org.openjdk.jmh.profile.PausesProfiler v;
org.openjdk.jmh.profile.PausesProfiler$Ticker v, v;
org.openjdk.jmh.util.SampleBuffer v, v;
v := @this: org.openjdk.jmh.profile.PausesProfiler;
v := @parameter: org.openjdk.jmh.infra.BenchmarkParams;
v := @parameter: org.openjdk.jmh.infra.IterationParams;
v = new org.openjdk.jmh.util.SampleBuffer;
specialinvoke v.<org.openjdk.jmh.util.SampleBuffer: void <init>()>();
v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.util.SampleBuffer buffer> = v;
v = new org.openjdk.jmh.profile.PausesProfiler$Ticker;
v = v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.util.SampleBuffer buffer>;
specialinvoke v.<org.openjdk.jmh.profile.PausesProfiler$Ticker: void <init>(org.openjdk.jmh.profile.PausesProfiler,org.openjdk.jmh.util.SampleBuffer)>(v, v);
v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.profile.PausesProfiler$Ticker ticker> = v;
v = v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.profile.PausesProfiler$Ticker ticker>;
virtualinvoke v.<org.openjdk.jmh.profile.PausesProfiler$Ticker: void start()>();
return;
}
public java.util.Collection afterIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams, org.openjdk.jmh.results.IterationResult)
{
org.openjdk.jmh.profile.PausesProfiler v;
org.openjdk.jmh.results.IterationResult v;
org.openjdk.jmh.util.SampleBuffer v;
org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult v;
java.util.List v;
org.openjdk.jmh.infra.BenchmarkParams v;
org.openjdk.jmh.infra.IterationParams v;
java.lang.InterruptedException v;
org.openjdk.jmh.profile.PausesProfiler$Ticker v, v;
v := @this: org.openjdk.jmh.profile.PausesProfiler;
v := @parameter: org.openjdk.jmh.infra.BenchmarkParams;
v := @parameter: org.openjdk.jmh.infra.IterationParams;
v := @parameter: org.openjdk.jmh.results.IterationResult;
v = v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.profile.PausesProfiler$Ticker ticker>;
virtualinvoke v.<org.openjdk.jmh.profile.PausesProfiler$Ticker: void interrupt()>();
label:
v = v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.profile.PausesProfiler$Ticker ticker>;
virtualinvoke v.<org.openjdk.jmh.profile.PausesProfiler$Ticker: void join()>();
label:
goto label;
label:
v := @caughtexception;
label:
v = new org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult;
v = v.<org.openjdk.jmh.profile.PausesProfiler: org.openjdk.jmh.util.SampleBuffer buffer>;
specialinvoke v.<org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult: void <init>(org.openjdk.jmh.util.SampleBuffer)>(v);
v = staticinvoke <java.util.Collections: java.util.List singletonList(java.lang.Object)>(v);
return v;
catch java.lang.InterruptedException from label to label with label;
}
private long calibrate()
{
org.openjdk.jmh.profile.PausesProfiler v;
long v, v, v, v, v, v, v, v, v;
org.openjdk.jmh.util.SampleBuffer v;
org.openjdk.jmh.util.Statistics v;
byte v, v;
int v, v;
double v;
java.util.concurrent.TimeUnit v;
v := @this: org.openjdk.jmh.profile.PausesProfiler;
v = new org.openjdk.jmh.util.SampleBuffer;
specialinvoke v.<org.openjdk.jmh.util.SampleBuffer: void <init>()>();
v = 0;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(3L);
label:
v = v;
v = v + 1;
if v >= 10000 goto label;
v = v - v;
v = v cmp v;
if v >= 0 goto label;
v = v.<org.openjdk.jmh.profile.PausesProfiler: long expectedNs>;
staticinvoke <java.util.concurrent.locks.LockSupport: void parkNanos(long)>(v);
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v - v;
v = v.<org.openjdk.jmh.profile.PausesProfiler: long expectedNs>;
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
virtualinvoke v.<org.openjdk.jmh.util.SampleBuffer: void add(long)>(v);
label:
v = v;
goto label;
label:
v = virtualinvoke v.<org.openjdk.jmh.util.SampleBuffer: org.openjdk.jmh.util.Statistics getStatistics(double)>(1.0);
v = interfaceinvoke v.<org.openjdk.jmh.util.Statistics: double getMax()>();
return v;
}
}