public class org.openjdk.jmh.profile.StackProfiler implements org.openjdk.jmh.profile.InternalProfiler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.openjdk.jmh.profile.StackProfiler
super_class: java.lang.Object
{
private static final java.lang.String[] IGNORED_THREADS;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final int stackLines;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int topStacks;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int periodMsec;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean sampleLine;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Set<java.lang.String> excludePackageNames;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Ljava/lang/String;>;
private volatile org.openjdk.jmh.profile.StackProfiler$SamplingTask samplingTask;
descriptor: Lorg/openjdk/jmh/profile/StackProfiler$SamplingTask;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 6
anewarray java.lang.String
dup
iconst_0
1: ldc "Finalizer"
aastore
dup
iconst_1
2: ldc "Signal Dispatcher"
aastore
dup
iconst_2
3: ldc "Reference Handler"
aastore
dup
iconst_3
4: ldc "main"
aastore
dup
iconst_4
5: ldc "Sampling Thread"
aastore
dup
iconst_5
6: ldc "Attach Listener"
aastore
7: putstatic org.openjdk.jmh.profile.StackProfiler.IGNORED_THREADS:[Ljava/lang/String;
8: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: new joptsimple.OptionParser
dup
invokespecial joptsimple.OptionParser.<init>:()V
astore 2
start local 2 2: aload 2
new org.openjdk.jmh.profile.ProfilerOptionFormatter
dup
ldc Lorg/openjdk/jmh/profile/StackProfiler;
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
invokespecial org.openjdk.jmh.profile.ProfilerOptionFormatter.<init>:(Ljava/lang/String;)V
invokevirtual joptsimple.OptionParser.formatHelpWith:(Ljoptsimple/HelpFormatter;)V
3: aload 2
ldc "lines"
ldc "Number of stack lines to save in each stack trace. Larger values provide more insight into who is calling the top stack method, as the expense of more stack trace shapes to collect."
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
4: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
getstatic org.openjdk.jmh.runner.options.IntegerValueConverter.POSITIVE:Lorg/openjdk/jmh/runner/options/IntegerValueConverter;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesConvertedBy:(Ljoptsimple/ValueConverter;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "int"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
iconst_1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iconst_0
anewarray java.lang.Integer
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
5: astore 3
start local 3 6: aload 2
ldc "top"
ldc "Number of top stacks to show in the profiling results. Larger values may catch some stack traces that linger in the distribution tail."
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
7: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
getstatic org.openjdk.jmh.runner.options.IntegerValueConverter.POSITIVE:Lorg/openjdk/jmh/runner/options/IntegerValueConverter;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesConvertedBy:(Ljoptsimple/ValueConverter;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "int"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
bipush 10
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iconst_0
anewarray java.lang.Integer
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
8: astore 4
start local 4 9: aload 2
ldc "period"
ldc "Sampling period, in milliseconds. Smaller values improve accuracy, at the expense of more profiling overhead."
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
10: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
getstatic org.openjdk.jmh.runner.options.IntegerValueConverter.POSITIVE:Lorg/openjdk/jmh/runner/options/IntegerValueConverter;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesConvertedBy:(Ljoptsimple/ValueConverter;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "int"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
bipush 10
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iconst_0
anewarray java.lang.Integer
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
11: astore 5
start local 5 12: aload 2
ldc "detailLine"
ldc "Record detailed source line info. This adds the line numbers to the recorded stack traces."
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
13: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc Ljava/lang/Boolean;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.ofType:(Ljava/lang/Class;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "bool"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
iconst_0
anewarray java.lang.Boolean
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
14: astore 6
start local 6 15: aload 2
ldc "excludePackages"
ldc "Enable package filtering. Use excludePackages option to control what packages are filtered"
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
16: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc Ljava/lang/Boolean;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.ofType:(Ljava/lang/Class;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "bool"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
iconst_0
anewarray java.lang.Boolean
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
17: astore 7
start local 7 18: aload 2
ldc "excludePackageNames"
ldc "Filter there packages. This is expected to be a comma-separated list\nof the fully qualified package names to be excluded. Every stack line that starts with the provided\npatterns will be excluded."
invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
19: invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc ","
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesSeparatedBy:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc Ljava/lang/String;
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.ofType:(Ljava/lang/Class;)Ljoptsimple/ArgumentAcceptingOptionSpec;
ldc "package+"
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
20: ldc "java."
iconst_5
anewarray java.lang.String
dup
iconst_0
ldc "javax."
aastore
dup
iconst_1
ldc "sun."
aastore
dup
iconst_2
ldc "sunw."
aastore
dup
iconst_3
ldc "com.sun."
aastore
dup
iconst_4
ldc "org.openjdk.jmh."
aastore
invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
21: astore 8
start local 8 22: aload 1
aload 2
invokestatic org.openjdk.jmh.profile.ProfilerUtils.parseInitLine:(Ljava/lang/String;Ljoptsimple/OptionParser;)Ljoptsimple/OptionSet;
astore 9
start local 9 23: aload 0
aload 9
aload 6
invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
putfield org.openjdk.jmh.profile.StackProfiler.sampleLine:Z
24: aload 0
aload 9
aload 5
invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
putfield org.openjdk.jmh.profile.StackProfiler.periodMsec:I
25: aload 0
aload 9
aload 4
invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
putfield org.openjdk.jmh.profile.StackProfiler.topStacks:I
26: aload 0
aload 9
aload 3
invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
putfield org.openjdk.jmh.profile.StackProfiler.stackLines:I
27: aload 9
aload 7
invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
istore 10
start local 10 28: aload 0
iload 10
ifeq 30
29: new java.util.HashSet
dup
aload 9
aload 8
invokevirtual joptsimple.OptionSet.valuesOf:(Ljoptsimple/OptionSpec;)Ljava/util/List;
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
goto 31
30: StackMap locals: org.openjdk.jmh.profile.StackProfiler java.lang.String joptsimple.OptionParser joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSet int
StackMap stack: org.openjdk.jmh.profile.StackProfiler
invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
31: StackMap locals: org.openjdk.jmh.profile.StackProfiler java.lang.String joptsimple.OptionParser joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSet int
StackMap stack: org.openjdk.jmh.profile.StackProfiler java.util.Set
putfield org.openjdk.jmh.profile.StackProfiler.excludePackageNames:Ljava/util/Set;
end local 10 32: goto 35
StackMap locals: org.openjdk.jmh.profile.StackProfiler java.lang.String joptsimple.OptionParser joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSet
StackMap stack: joptsimple.OptionException
33: astore 10
start local 10 34: new org.openjdk.jmh.profile.ProfilerException
dup
aload 10
invokevirtual joptsimple.OptionException.getMessage:()Ljava/lang/String;
invokespecial org.openjdk.jmh.profile.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
end local 10 35: StackMap locals:
StackMap stack:
return
end local 9 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 36 0 this Lorg/openjdk/jmh/profile/StackProfiler;
0 36 1 initLine Ljava/lang/String;
2 36 2 parser Ljoptsimple/OptionParser;
6 36 3 optStackLines Ljoptsimple/OptionSpec<Ljava/lang/Integer;>;
9 36 4 optTopStacks Ljoptsimple/OptionSpec<Ljava/lang/Integer;>;
12 36 5 optSamplePeriod Ljoptsimple/OptionSpec<Ljava/lang/Integer;>;
15 36 6 optDetailLine Ljoptsimple/OptionSpec<Ljava/lang/Boolean;>;
18 36 7 optExclude Ljoptsimple/OptionSpec<Ljava/lang/Boolean;>;
22 36 8 optExcludeClasses Ljoptsimple/OptionSpec<Ljava/lang/String;>;
23 36 9 set Ljoptsimple/OptionSet;
28 32 10 excludePackages Z
34 35 10 e Ljoptsimple/OptionException;
Exception table:
from to target type
23 32 33 Class joptsimple.OptionException
Exceptions:
throws org.openjdk.jmh.profile.ProfilerException
MethodParameters:
Name Flags
initLine
public void beforeIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams);
descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new org.openjdk.jmh.profile.StackProfiler$SamplingTask
dup
aload 0
invokespecial org.openjdk.jmh.profile.StackProfiler$SamplingTask.<init>:(Lorg/openjdk/jmh/profile/StackProfiler;)V
putfield org.openjdk.jmh.profile.StackProfiler.samplingTask:Lorg/openjdk/jmh/profile/StackProfiler$SamplingTask;
1: aload 0
getfield org.openjdk.jmh.profile.StackProfiler.samplingTask:Lorg/openjdk/jmh/profile/StackProfiler$SamplingTask;
invokevirtual org.openjdk.jmh.profile.StackProfiler$SamplingTask.start:()V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/openjdk/jmh/profile/StackProfiler;
0 3 1 benchmarkParams Lorg/openjdk/jmh/infra/BenchmarkParams;
0 3 2 iterationParams Lorg/openjdk/jmh/infra/IterationParams;
MethodParameters:
Name Flags
benchmarkParams
iterationParams
public java.util.Collection<? extends org.openjdk.jmh.results.Result> afterIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams, org.openjdk.jmh.results.IterationResult);
descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.openjdk.jmh.profile.StackProfiler.samplingTask:Lorg/openjdk/jmh/profile/StackProfiler$SamplingTask;
invokevirtual org.openjdk.jmh.profile.StackProfiler$SamplingTask.stop:()V
1: new org.openjdk.jmh.profile.StackProfiler$StackResult
dup
aload 0
getfield org.openjdk.jmh.profile.StackProfiler.samplingTask:Lorg/openjdk/jmh/profile/StackProfiler$SamplingTask;
getfield org.openjdk.jmh.profile.StackProfiler$SamplingTask.stacks:Ljava/util/Map;
aload 0
getfield org.openjdk.jmh.profile.StackProfiler.topStacks:I
invokespecial org.openjdk.jmh.profile.StackProfiler$StackResult.<init>:(Ljava/util/Map;I)V
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/openjdk/jmh/profile/StackProfiler;
0 2 1 benchmarkParams Lorg/openjdk/jmh/infra/BenchmarkParams;
0 2 2 iterationParams Lorg/openjdk/jmh/infra/IterationParams;
0 2 3 result Lorg/openjdk/jmh/results/IterationResult;
Signature: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)Ljava/util/Collection<+Lorg/openjdk/jmh/results/Result;>;
MethodParameters:
Name Flags
benchmarkParams
iterationParams
result
public java.lang.String getDescription();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Simple and naive Java stack profiler"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/openjdk/jmh/profile/StackProfiler;
static java.lang.String dottedLine(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: aload 1
ldc "...."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
2: aload 0
ifnull 6
3: new java.lang.StringBuilder
dup
ldc "["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 0
4: aload 1
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: goto 7
6: StackMap locals: java.lang.StringBuilder
StackMap stack:
ldc ""
astore 0
7: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 8: goto 11
9: StackMap locals: int
StackMap stack:
aload 1
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
10: iinc 2 1
StackMap locals:
StackMap stack:
11: iload 2
bipush 96
aload 0
invokevirtual java.lang.String.length:()I
isub
if_icmplt 9
end local 2 12: aload 1
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
13: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 header Ljava/lang/String;
1 14 1 sb Ljava/lang/StringBuilder;
8 12 2 c I
MethodParameters:
Name Flags
header
}
SourceFile: "StackProfiler.java"
NestMembers:
org.openjdk.jmh.profile.StackProfiler$SamplingTask org.openjdk.jmh.profile.StackProfiler$StackRecord org.openjdk.jmh.profile.StackProfiler$StackResult org.openjdk.jmh.profile.StackProfiler$StackResult$1 org.openjdk.jmh.profile.StackProfiler$StackResultAggregator
InnerClasses:
public final State = java.lang.Thread$State of java.lang.Thread
public SamplingTask = org.openjdk.jmh.profile.StackProfiler$SamplingTask of org.openjdk.jmh.profile.StackProfiler
private StackRecord = org.openjdk.jmh.profile.StackProfiler$StackRecord of org.openjdk.jmh.profile.StackProfiler
public StackResult = org.openjdk.jmh.profile.StackProfiler$StackResult of org.openjdk.jmh.profile.StackProfiler
public StackResultAggregator = org.openjdk.jmh.profile.StackProfiler$StackResultAggregator of org.openjdk.jmh.profile.StackProfiler