public final class com.oracle.truffle.tools.profiler.CPUSampler implements java.io.Closeable
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.tools.profiler.CPUSampler
super_class: java.lang.Object
{
private com.oracle.truffle.tools.profiler.CPUSampler$Mode mode;
descriptor: Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
flags: (0x0002) ACC_PRIVATE
static final com.oracle.truffle.api.instrumentation.SourceSectionFilter DEFAULT_FILTER;
descriptor: Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private volatile boolean closed;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean collecting;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private long period;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long delay;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private int stackLimit;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private com.oracle.truffle.api.instrumentation.SourceSectionFilter filter;
descriptor: Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x0002) ACC_PRIVATE
private boolean stackOverflowed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.concurrent.atomic.AtomicLong samplesTaken;
descriptor: Ljava/util/concurrent/atomic/AtomicLong;
flags: (0x0002) ACC_PRIVATE
private java.util.Timer samplerThread;
descriptor: Ljava/util/Timer;
flags: (0x0002) ACC_PRIVATE
private java.util.TimerTask samplerTask;
descriptor: Ljava/util/TimerTask;
flags: (0x0002) ACC_PRIVATE
private volatile com.oracle.truffle.tools.profiler.ShadowStack shadowStack;
descriptor: Lcom/oracle/truffle/tools/profiler/ShadowStack;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile com.oracle.truffle.api.instrumentation.EventBinding<?> stacksBinding;
descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
private final java.util.Map<java.lang.Thread, com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>> rootNodes;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Thread;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
private final com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env;
descriptor: Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean gatherSelfHitTimes;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private volatile boolean nonInternalLanguageContextInitialized;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private boolean delaySamplingUntilNonInternalLangInit;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private static java.util.function.Supplier<com.oracle.truffle.tools.profiler.CPUSampler$Payload> payloadFactory;
descriptor: Ljava/util/function/Supplier;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/function/Supplier<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
private static java.util.function.BiConsumer<com.oracle.truffle.tools.profiler.CPUSampler$Payload, com.oracle.truffle.tools.profiler.CPUSampler$Payload> mergePayload;
descriptor: Ljava/util/function/BiConsumer;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/function/BiConsumer<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
private final java.util.function.Function<com.oracle.truffle.tools.profiler.CPUSampler$Payload, com.oracle.truffle.tools.profiler.CPUSampler$Payload> copyPayload;
descriptor: Ljava/util/function/Function;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/function/Function<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/tools/profiler/CPUSampler;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
3: invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
aastore
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
putstatic com.oracle.truffle.tools.profiler.CPUSampler.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
4: new com.oracle.truffle.tools.profiler.CPUSampler$1
dup
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$1.<init>:()V
putstatic com.oracle.truffle.tools.profiler.CPUSampler.payloadFactory:Ljava/util/function/Supplier;
5: new com.oracle.truffle.tools.profiler.CPUSampler$2
dup
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$2.<init>:()V
putstatic com.oracle.truffle.tools.profiler.CPUSampler.mergePayload:Ljava/util/function/BiConsumer;
6: new com.oracle.truffle.tools.profiler.CPUSampler$4
dup
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$4.<init>:()V
invokestatic com.oracle.truffle.tools.profiler.impl.CPUSamplerInstrument.setFactory:(Lcom/oracle/truffle/tools/profiler/impl/ProfilerToolFactory;)V
7: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(com.oracle.truffle.api.instrumentation.TruffleInstrument$Env);
descriptor: (Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
flags: (0x0000)
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
getstatic com.oracle.truffle.tools.profiler.CPUSampler$Mode.EXCLUDE_INLINED_ROOTS:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
putfield com.oracle.truffle.tools.profiler.CPUSampler.mode:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
2: aload 0
lconst_1
putfield com.oracle.truffle.tools.profiler.CPUSampler.period:J
3: aload 0
lconst_0
putfield com.oracle.truffle.tools.profiler.CPUSampler.delay:J
4: aload 0
sipush 10000
putfield com.oracle.truffle.tools.profiler.CPUSampler.stackLimit:I
5: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.CPUSampler.stackOverflowed:Z
6: aload 0
new java.util.concurrent.atomic.AtomicLong
dup
lconst_0
invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
putfield com.oracle.truffle.tools.profiler.CPUSampler.samplesTaken:Ljava/util/concurrent/atomic/AtomicLong;
7: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.oracle.truffle.tools.profiler.CPUSampler.rootNodes:Ljava/util/Map;
8: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.CPUSampler.gatherSelfHitTimes:Z
9: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.CPUSampler.nonInternalLanguageContextInitialized:Z
10: aload 0
iconst_1
putfield com.oracle.truffle.tools.profiler.CPUSampler.delaySamplingUntilNonInternalLangInit:Z
11: aload 0
new com.oracle.truffle.tools.profiler.CPUSampler$3
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$3.<init>:(Lcom/oracle/truffle/tools/profiler/CPUSampler;)V
putfield com.oracle.truffle.tools.profiler.CPUSampler.copyPayload:Ljava/util/function/Function;
12: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
13: aload 1
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
new com.oracle.truffle.tools.profiler.CPUSampler$5
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$5.<init>:(Lcom/oracle/truffle/tools/profiler/CPUSampler;)V
14: iconst_1
15: invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachContextsListener:(Lcom/oracle/truffle/api/instrumentation/ContextsListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
pop
16: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 17 1 env Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
MethodParameters:
Name Flags
env
public static com.oracle.truffle.tools.profiler.CPUSampler find(org.graalvm.polyglot.Engine);
descriptor: (Lorg/graalvm/polyglot/Engine;)Lcom/oracle/truffle/tools/profiler/CPUSampler;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.truffle.tools.profiler.impl.CPUSamplerInstrument.getSampler:(Lorg/graalvm/polyglot/Engine;)Lcom/oracle/truffle/tools/profiler/CPUSampler;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 engine Lorg/graalvm/polyglot/Engine;
MethodParameters:
Name Flags
engine
public synchronized void setCollecting(boolean);
descriptor: (Z)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.collecting:Z
iload 1
if_icmpeq 3
1: aload 0
iload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.collecting:Z
2: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.resetSampling:()V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 4 1 collecting Z
MethodParameters:
Name Flags
collecting
public synchronized boolean isCollecting();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.collecting:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public synchronized void setMode(com.oracle.truffle.tools.profiler.CPUSampler$Mode);
descriptor: (Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.mode:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 3 1 mode Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
MethodParameters:
Name Flags
mode
public synchronized void setPeriod(long);
descriptor: (J)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=8, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: lload 1
lconst_1
lcmp
ifge 3
2: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Invalid sample period %s."
iconst_1
anewarray java.lang.Object
dup
iconst_0
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.period:J
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 5 1 samplePeriod J
MethodParameters:
Name Flags
samplePeriod
public synchronized long getPeriod();
descriptor: ()J
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.period:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public synchronized void setDelay(long);
descriptor: (J)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=8, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: lload 1
lconst_0
lcmp
ifge 3
2: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Invalid delay %s."
iconst_1
anewarray java.lang.Object
dup
iconst_0
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.delay:J
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 5 1 delay J
MethodParameters:
Name Flags
delay
public synchronized void setStackLimit(int);
descriptor: (I)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: iload 1
iconst_1
if_icmpge 3
2: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Invalid stack limit %s."
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.stackLimit:I
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 5 1 stackLimit I
MethodParameters:
Name Flags
stackLimit
public synchronized int getStackLimit();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stackLimit:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public synchronized void setFilter(com.oracle.truffle.api.instrumentation.SourceSectionFilter);
descriptor: (Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.filter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 3 1 filter Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
MethodParameters:
Name Flags
filter
public synchronized void setDelaySamplingUntilNonInternalLangInit(boolean);
descriptor: (Z)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: aload 0
iload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.delaySamplingUntilNonInternalLangInit:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 3 1 delaySamplingUntilNonInternalLangInit Z
MethodParameters:
Name Flags
delaySamplingUntilNonInternalLangInit
public synchronized com.oracle.truffle.api.instrumentation.SourceSectionFilter getFilter();
descriptor: ()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.filter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public long getSampleCount();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplesTaken:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public boolean hasStackOverflowed();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stackOverflowed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public synchronized java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>> getRootNodes();
descriptor: ()Ljava/util/Collection;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=4, args_size=1
start local 0 0: new com.oracle.truffle.tools.profiler.ProfilerNode
dup
invokespecial com.oracle.truffle.tools.profiler.ProfilerNode.<init>:()V
astore 1
start local 1 1: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ProfilerNode top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
astore 2
start local 2 3: aload 1
aload 2
getstatic com.oracle.truffle.tools.profiler.CPUSampler.mergePayload:Ljava/util/function/BiConsumer;
getstatic com.oracle.truffle.tools.profiler.CPUSampler.payloadFactory:Ljava/util/function/Supplier;
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.deepMergeChildrenFrom:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/util/function/BiConsumer;Ljava/util/function/Supplier;)V
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 6 1 mergedRoot Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
3 4 2 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
Signature: ()Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
public synchronized java.util.Map<java.lang.Thread, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>> getThreadToNodesMap();
descriptor: ()Ljava/util/Map;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=1
start local 0 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 1
start local 1 1: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 6
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler java.util.Map top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 2
start local 2 3: new com.oracle.truffle.tools.profiler.ProfilerNode
dup
invokespecial com.oracle.truffle.tools.profiler.ProfilerNode.<init>:()V
astore 4
start local 4 4: aload 4
aload 2
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.copyPayload:Ljava/util/function/Function;
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.deepCopyChildrenFrom:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/util/function/Function;)V
5: aload 1
aload 2
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Thread
aload 4
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 end local 2 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: aload 1
invokestatic java.util.Collections.unmodifiableMap:(Ljava/util/Map;)Ljava/util/Map;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 8 1 returnValue Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;>;
3 6 2 entry Ljava/util/Map$Entry<Ljava/lang/Thread;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
4 6 4 copy Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
Signature: ()Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;>;
public synchronized void clearData();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplesTaken:Ljava/util/concurrent/atomic/AtomicLong;
lconst_0
invokevirtual java.util.concurrent.atomic.AtomicLong.set:(J)V
1: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 6
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler top java.util.Iterator
StackMap stack:
2: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
astore 1
start local 1 3: aload 1
getfield com.oracle.truffle.tools.profiler.ProfilerNode.children:Ljava/util/Map;
astore 3
start local 3 4: aload 3
ifnull 6
5: aload 3
invokeinterface java.util.Map.clear:()V
end local 3 end local 1 6: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
3 6 1 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
4 6 3 rootChildren Ljava/util/Map<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
public synchronized boolean hasData();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=5, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 8
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler int top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
astore 2
start local 2 3: aload 2
getfield com.oracle.truffle.tools.profiler.ProfilerNode.children:Ljava/util/Map;
astore 4
start local 4 4: iload 1
ifne 6
aload 4
ifnull 5
aload 4
invokeinterface java.util.Map.isEmpty:()Z
ifeq 6
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler int com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator java.util.Map
StackMap stack:
5: iconst_0
goto 7
StackMap locals:
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: istore 1
end local 4 end local 2 8: StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler int top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
9: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 10 1 hasData Z
3 8 2 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
4 8 4 rootChildren Ljava/util/Map<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield com.oracle.truffle.tools.profiler.CPUSampler.closed:Z
1: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.resetSampling:()V
2: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.clearData:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public boolean isGatherSelfHitTimes();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.gatherSelfHitTimes:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
public synchronized void setGatherSelfHitTimes(boolean);
descriptor: (Z)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.enterChangeConfig:()V
1: aload 0
iload 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.gatherSelfHitTimes:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
0 3 1 gatherSelfHitTimes Z
MethodParameters:
Name Flags
gatherSelfHitTimes
public java.util.Map<java.lang.Thread, java.util.List<com.oracle.truffle.tools.profiler.StackTraceEntry>> takeSample();
descriptor: ()Ljava/util/Map;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.initializeShadowStack:()Lcom/oracle/truffle/tools/profiler/ShadowStack;
astore 1
3: StackMap locals: com.oracle.truffle.tools.profiler.ShadowStack
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.delaySamplingUntilNonInternalLangInit:Z
ifeq 5
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.nonInternalLanguageContextInitialized:Z
ifne 5
4: invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
areturn
5: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 6
aload 1
ifnonnull 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals:
StackMap stack:
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 2
start local 2 7: aload 1
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack.getStacks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 18
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack java.util.Map top java.util.Iterator
StackMap stack:
8: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack
astore 3
start local 3 9: aload 3
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.hasStackOverflowed:()Z
ifeq 12
10: aload 0
iconst_1
putfield com.oracle.truffle.tools.profiler.CPUSampler.stackOverflowed:Z
11: goto 18
12: StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack java.util.Map com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack java.util.Iterator
StackMap stack:
aload 3
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.getStack:()[Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
astore 5
start local 5 13: aload 5
ifnull 18
aload 5
arraylength
ifle 18
14: getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 15
aload 2
aload 3
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.getThread:()Ljava/lang/Thread;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 15
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
15: StackMap locals: com.oracle.truffle.tools.profiler.StackTraceEntry[]
StackMap stack:
aload 5
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
astore 6
start local 6 16: aload 6
invokestatic java.util.Collections.reverse:(Ljava/util/List;)V
17: aload 2
aload 3
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.getThread:()Ljava/lang/Thread;
aload 6
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 end local 5 end local 3 18: StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack java.util.Map top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
19: aload 2
invokestatic java.util.Collections.unmodifiableMap:(Ljava/util/Map;)Ljava/util/Map;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 20 1 localShadowStack Lcom/oracle/truffle/tools/profiler/ShadowStack;
7 20 2 stacks Ljava/util/Map<Ljava/lang/Thread;Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;>;
9 18 3 stack Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;
13 18 5 strace [Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
16 18 6 stackTraceEntries Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;
Signature: ()Ljava/util/Map<Ljava/lang/Thread;Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;>;
static java.util.Map<java.lang.Thread, java.lang.StackTraceElement[]> toStackTraceElement(java.util.Map<java.lang.Thread, java.util.List<com.oracle.truffle.tools.profiler.StackTraceEntry>>);
descriptor: (Ljava/util/Map;)Ljava/util/Map;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 1
start local 1 1: aload 0
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: java.util.Map java.util.Map top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 2
start local 2 3: aload 1
aload 2
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Thread
aload 2
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.List
invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
com/oracle/truffle/tools/profiler/CPUSampler.lambda$0(Lcom/oracle/truffle/tools/profiler/StackTraceEntry;)Ljava/lang/StackTraceElement; (6)
(Lcom/oracle/truffle/tools/profiler/StackTraceEntry;)Ljava/lang/StackTraceElement;
invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
invokeinterface java.util.stream.Stream.toArray:()[Ljava/lang/Object;
checkcast java.lang.StackTraceElement[]
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 sample Ljava/util/Map<Ljava/lang/Thread;Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;>;
1 6 1 converted Ljava/util/Map<Ljava/lang/Thread;[Ljava/lang/StackTraceElement;>;
3 4 2 entry Ljava/util/Map$Entry<Ljava/lang/Thread;Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;>;
Signature: (Ljava/util/Map<Ljava/lang/Thread;Ljava/util/List<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;>;>;)Ljava/util/Map<Ljava/lang/Thread;[Ljava/lang/StackTraceElement;>;
MethodParameters:
Name Flags
sample
private synchronized com.oracle.truffle.tools.profiler.ShadowStack initializeShadowStack();
descriptor: ()Lcom/oracle/truffle/tools/profiler/ShadowStack;
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=7, locals=3, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
astore 1
start local 1 1: aload 1
ifnonnull 10
2: getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 3
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
ifnull 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: com.oracle.truffle.tools.profiler.ShadowStack
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.filter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
astore 2
start local 2 4: aload 2
ifnonnull 6
5: getstatic com.oracle.truffle.tools.profiler.CPUSampler.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
astore 2
6: StackMap locals: com.oracle.truffle.api.instrumentation.SourceSectionFilter
StackMap stack:
aload 0
new com.oracle.truffle.tools.profiler.ShadowStack
dup
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stackLimit:I
aload 2
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
ldc "cpusampler"
invokestatic com.oracle.truffle.api.TruffleLogger.getLogger:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleLogger;
invokespecial com.oracle.truffle.tools.profiler.ShadowStack.<init>:(ILcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/TruffleLogger;)V
dup
astore 1
putfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
7: aload 0
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
aload 2
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.mode:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
invokestatic com.oracle.truffle.tools.profiler.CPUSampler.combine:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.mode:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
getstatic com.oracle.truffle.tools.profiler.CPUSampler$Mode.EXCLUDE_INLINED_ROOTS:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
if_acmpne 8
iconst_1
goto 9
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack com.oracle.truffle.api.instrumentation.SourceSectionFilter
StackMap stack: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack com.oracle.truffle.api.instrumentation.Instrumenter com.oracle.truffle.api.instrumentation.SourceSectionFilter
8: iconst_0
StackMap locals: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack com.oracle.truffle.api.instrumentation.SourceSectionFilter
StackMap stack: com.oracle.truffle.tools.profiler.CPUSampler com.oracle.truffle.tools.profiler.ShadowStack com.oracle.truffle.api.instrumentation.Instrumenter com.oracle.truffle.api.instrumentation.SourceSectionFilter int
9: invokevirtual com.oracle.truffle.tools.profiler.ShadowStack.install:(Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
putfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
end local 2 10: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 11 1 localShadowStack Lcom/oracle/truffle/tools/profiler/ShadowStack;
4 10 2 f Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
private void resetSampling();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.cleanup:()V
2: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.collecting:Z
ifeq 3
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.closed:Z
ifeq 4
3: StackMap locals:
StackMap stack:
return
4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
ifnonnull 6
5: aload 0
new java.util.Timer
dup
ldc "Sampling thread"
iconst_1
invokespecial java.util.Timer.<init>:(Ljava/lang/String;Z)V
putfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
6: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.CPUSampler.stackOverflowed:Z
7: aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.initializeShadowStack:()Lcom/oracle/truffle/tools/profiler/ShadowStack;
pop
8: aload 0
new com.oracle.truffle.tools.profiler.CPUSampler$SamplingTimerTask
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.CPUSampler$SamplingTimerTask.<init>:(Lcom/oracle/truffle/tools/profiler/CPUSampler;)V
putfield com.oracle.truffle.tools.profiler.CPUSampler.samplerTask:Ljava/util/TimerTask;
9: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerTask:Ljava/util/TimerTask;
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.delay:J
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.period:J
invokevirtual java.util.Timer.schedule:(Ljava/util/TimerTask;JJ)V
10: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
private static com.oracle.truffle.api.instrumentation.SourceSectionFilter combine(com.oracle.truffle.api.instrumentation.SourceSectionFilter, com.oracle.truffle.tools.profiler.CPUSampler$Mode);
descriptor: (Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: aload 2
ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
2: aload 1
getstatic com.oracle.truffle.tools.profiler.CPUSampler$Mode.STATEMENTS:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
if_acmpne 4
3: aload 2
ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
4: StackMap locals: java.util.List
StackMap stack:
invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
aload 2
iconst_0
anewarray java.lang.Class
invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.lang.Class[]
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
aload 0
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.and:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 filter Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
0 5 1 mode Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
1 5 2 tags Ljava/util/List<Ljava/lang/Class<*>;>;
MethodParameters:
Name Flags
filter
mode
private void cleanup();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.invalidateStack:()V
2: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerTask:Ljava/util/TimerTask;
ifnull 5
3: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerTask:Ljava/util/TimerTask;
invokevirtual java.util.TimerTask.cancel:()Z
pop
4: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.CPUSampler.samplerTask:Ljava/util/TimerTask;
5: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
ifnull 8
6: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
invokevirtual java.util.Timer.cancel:()V
7: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.CPUSampler.samplerThread:Ljava/util/Timer;
8: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
private void enterChangeConfig();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.closed:Z
ifeq 3
2: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "CPUSampler is already closed."
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.collecting:Z
ifeq 5
4: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Cannot change sampler configuration while collecting. Call setCollecting(false) to disable collection first."
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.invalidateStack:()V
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
private void invalidateStack();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
astore 1
start local 1 1: aload 1
ifnull 15
2: aload 0
dup
astore 2
monitorenter
3: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
astore 1
4: aload 1
ifnull 10
5: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
ifnull 8
6: aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
7: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
8: StackMap locals: com.oracle.truffle.tools.profiler.ShadowStack com.oracle.truffle.tools.profiler.CPUSampler
StackMap stack:
aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.CPUSampler.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
9: goto 11
10: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.tools.profiler.CPUSampler.$assertionsDisabled:Z
ifne 11
aload 0
getfield com.oracle.truffle.tools.profiler.CPUSampler.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
ifnull 11
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
11: StackMap locals:
StackMap stack:
aload 2
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 2
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/oracle/truffle/tools/profiler/CPUSampler;
1 16 1 localShadowStack Lcom/oracle/truffle/tools/profiler/ShadowStack;
Exception table:
from to target type
3 12 13 any
13 14 13 any
private static java.lang.StackTraceElement lambda$0(com.oracle.truffle.tools.profiler.StackTraceEntry);
descriptor: (Lcom/oracle/truffle/tools/profiler/StackTraceEntry;)Ljava/lang/StackTraceElement;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.oracle.truffle.tools.profiler.StackTraceEntry.toStackTraceElement:()Ljava/lang/StackTraceElement;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 e Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
}
SourceFile: "CPUSampler.java"
NestMembers:
com.oracle.truffle.tools.profiler.CPUSampler$1 com.oracle.truffle.tools.profiler.CPUSampler$2 com.oracle.truffle.tools.profiler.CPUSampler$3 com.oracle.truffle.tools.profiler.CPUSampler$4 com.oracle.truffle.tools.profiler.CPUSampler$5 com.oracle.truffle.tools.profiler.CPUSampler$Mode com.oracle.truffle.tools.profiler.CPUSampler$Payload com.oracle.truffle.tools.profiler.CPUSampler$SamplingTimerTask com.oracle.truffle.tools.profiler.CPUSampler$SamplingTimerTask$1
InnerClasses:
public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
public final RootTag = com.oracle.truffle.api.instrumentation.StandardTags$RootTag of com.oracle.truffle.api.instrumentation.StandardTags
public final StatementTag = com.oracle.truffle.api.instrumentation.StandardTags$StatementTag of com.oracle.truffle.api.instrumentation.StandardTags
public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
com.oracle.truffle.tools.profiler.CPUSampler$1
com.oracle.truffle.tools.profiler.CPUSampler$2
com.oracle.truffle.tools.profiler.CPUSampler$3
com.oracle.truffle.tools.profiler.CPUSampler$4
com.oracle.truffle.tools.profiler.CPUSampler$5
public final Mode = com.oracle.truffle.tools.profiler.CPUSampler$Mode of com.oracle.truffle.tools.profiler.CPUSampler
public final Payload = com.oracle.truffle.tools.profiler.CPUSampler$Payload of com.oracle.truffle.tools.profiler.CPUSampler
private SamplingTimerTask = com.oracle.truffle.tools.profiler.CPUSampler$SamplingTimerTask of com.oracle.truffle.tools.profiler.CPUSampler
final ThreadLocalStack = com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack of com.oracle.truffle.tools.profiler.ShadowStack
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Entry = java.util.Map$Entry of java.util.Map