public final class com.oracle.truffle.tools.profiler.MemoryTracer 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.MemoryTracer
super_class: java.lang.Object
{
private static final com.oracle.truffle.api.interop.InteropLibrary INTEROP;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private com.oracle.truffle.api.instrumentation.SourceSectionFilter filter;
descriptor: Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x0002) ACC_PRIVATE
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 closed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean collecting;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private com.oracle.truffle.api.instrumentation.EventBinding<?> activeBinding;
descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
flags: (0x0002) ACC_PRIVATE
Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
private int stackLimit;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private com.oracle.truffle.tools.profiler.ShadowStack shadowStack;
descriptor: Lcom/oracle/truffle/tools/profiler/ShadowStack;
flags: (0x0002) ACC_PRIVATE
private com.oracle.truffle.api.instrumentation.EventBinding<?> stacksBinding;
descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
flags: (0x0002) ACC_PRIVATE
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.MemoryTracer$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/MemoryTracer$Payload;>;>;
private boolean stackOverflowed;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private static final com.oracle.truffle.api.instrumentation.SourceSectionFilter DEFAULT_FILTER;
descriptor: Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
java.util.function.Supplier<com.oracle.truffle.tools.profiler.MemoryTracer$Payload> payloadFactory;
descriptor: Ljava/util/function/Supplier;
flags: (0x0000)
Signature: Ljava/util/function/Supplier<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
java.util.function.Function<com.oracle.truffle.tools.profiler.MemoryTracer$Payload, com.oracle.truffle.tools.profiler.MemoryTracer$Payload> copyPayload;
descriptor: Ljava/util/function/Function;
flags: (0x0000)
Signature: Ljava/util/function/Function<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
java.util.function.BiConsumer<com.oracle.truffle.tools.profiler.MemoryTracer$Payload, com.oracle.truffle.tools.profiler.MemoryTracer$Payload> mergePayload;
descriptor: Ljava/util/function/BiConsumer;
flags: (0x0000)
Signature: Ljava/util/function/BiConsumer<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;Lcom/oracle/truffle/tools/profiler/MemoryTracer$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/MemoryTracer;
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.MemoryTracer.$assertionsDisabled:Z
3: invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
putstatic com.oracle.truffle.tools.profiler.MemoryTracer.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
4: 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;
new com.oracle.truffle.tools.profiler.MemoryTracer$1
dup
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$1.<init>:()V
invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.sourceIs:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$SourcePredicate;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
5: invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
6: putstatic com.oracle.truffle.tools.profiler.MemoryTracer.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
7: new com.oracle.truffle.tools.profiler.MemoryTracer$5
dup
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$5.<init>:()V
invokestatic com.oracle.truffle.tools.profiler.impl.MemoryTracerInstrument.setFactory:(Lcom/oracle/truffle/tools/profiler/impl/ProfilerToolFactory;)V
8: 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=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.MemoryTracer.filter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
2: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.MemoryTracer.closed:Z
3: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.MemoryTracer.collecting:Z
4: aload 0
sipush 1000
putfield com.oracle.truffle.tools.profiler.MemoryTracer.stackLimit:I
5: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.oracle.truffle.tools.profiler.MemoryTracer.rootNodes:Ljava/util/Map;
6: aload 0
iconst_0
putfield com.oracle.truffle.tools.profiler.MemoryTracer.stackOverflowed:Z
7: aload 0
new com.oracle.truffle.tools.profiler.MemoryTracer$2
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$2.<init>:(Lcom/oracle/truffle/tools/profiler/MemoryTracer;)V
putfield com.oracle.truffle.tools.profiler.MemoryTracer.payloadFactory:Ljava/util/function/Supplier;
8: aload 0
new com.oracle.truffle.tools.profiler.MemoryTracer$3
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$3.<init>:(Lcom/oracle/truffle/tools/profiler/MemoryTracer;)V
putfield com.oracle.truffle.tools.profiler.MemoryTracer.copyPayload:Ljava/util/function/Function;
9: aload 0
new com.oracle.truffle.tools.profiler.MemoryTracer$4
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$4.<init>:(Lcom/oracle/truffle/tools/profiler/MemoryTracer;)V
putfield com.oracle.truffle.tools.profiler.MemoryTracer.mergePayload:Ljava/util/function/BiConsumer;
10: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.MemoryTracer.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
11: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
0 12 1 env Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
MethodParameters:
Name Flags
env
void resetTracer();
descriptor: ()V
flags: (0x0000)
Code:
stack=7, locals=2, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.MemoryTracer.$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.MemoryTracer.activeBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
ifnull 4
2: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.activeBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
3: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.MemoryTracer.activeBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.collecting:Z
ifeq 5
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.closed:Z
ifeq 6
5: StackMap locals:
StackMap stack:
return
6: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.filter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
astore 1
start local 1 7: aload 1
ifnonnull 9
8: getstatic com.oracle.truffle.tools.profiler.MemoryTracer.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
astore 1
9: 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.MemoryTracer.stackLimit:I
aload 1
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
ldc "cputracer"
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
putfield com.oracle.truffle.tools.profiler.MemoryTracer.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
10: aload 0
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
aload 1
iconst_0
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.MemoryTracer.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
11: aload 0
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
getstatic com.oracle.truffle.api.instrumentation.AllocationEventFilter.ANY:Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter;
new com.oracle.truffle.tools.profiler.MemoryTracer$Listener
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$Listener.<init>:(Lcom/oracle/truffle/tools/profiler/MemoryTracer;)V
invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachAllocationListener:(Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter;Lcom/oracle/truffle/api/instrumentation/AllocationListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
putfield com.oracle.truffle.tools.profiler.MemoryTracer.activeBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
12: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
7 13 1 f Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
public static com.oracle.truffle.tools.profiler.MemoryTracer find(org.graalvm.polyglot.Engine);
descriptor: (Lorg/graalvm/polyglot/Engine;)Lcom/oracle/truffle/tools/profiler/MemoryTracer;
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.MemoryTracerInstrument.getTracer:(Lorg/graalvm/polyglot/Engine;)Lcom/oracle/truffle/tools/profiler/MemoryTracer;
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=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.closed:Z
ifeq 2
1: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Memory Tracer is already closed."
invokespecial com.oracle.truffle.tools.profiler.ProfilerException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.collecting:Z
iload 1
if_icmpeq 5
3: aload 0
iload 1
putfield com.oracle.truffle.tools.profiler.MemoryTracer.collecting:Z
4: aload 0
invokevirtual com.oracle.truffle.tools.profiler.MemoryTracer.resetTracer:()V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
0 6 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.MemoryTracer.collecting:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
public synchronized java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.MemoryTracer$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.MemoryTracer.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.MemoryTracer 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
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.mergePayload:Ljava/util/function/BiConsumer;
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.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/MemoryTracer;
1 6 1 copy Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
3 4 2 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
Signature: ()Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;
public synchronized java.util.Map<java.lang.Thread, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.MemoryTracer$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.MemoryTracer.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.MemoryTracer 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.MemoryTracer.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/MemoryTracer;
1 8 1 returnValue Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;>;
3 6 2 entry Ljava/util/Map$Entry<Ljava/lang/Thread;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;
4 6 4 copy Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
Signature: ()Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;>;
public synchronized void clearData();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=4, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 5
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
astore 1
start local 1 2: aload 1
getfield com.oracle.truffle.tools.profiler.ProfilerNode.children:Ljava/util/Map;
astore 3
start local 3 3: aload 3
ifnull 5
4: aload 3
invokeinterface java.util.Map.clear:()V
end local 3 end local 1 5: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
2 5 1 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
3 5 3 rootChildren Ljava/util/Map<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;
public synchronized boolean hasData();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, 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.MemoryTracer.rootNodes:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 7
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer 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
aload 4
ifnull 5
aload 4
invokeinterface java.util.Map.isEmpty:()Z
ifne 5
iconst_1
goto 6
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer int com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator java.util.Map
StackMap stack: int
5: iconst_0
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer int com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator java.util.Map
StackMap stack: int int
6: ior
istore 1
end local 4 end local 2 7: StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer int top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
8: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
1 9 1 hasData Z
3 7 2 node Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
4 7 4 rootChildren Ljava/util/Map<Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;>;
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.MemoryTracer.stackLimit:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
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.MemoryTracer.verifyConfigAllowed:()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.MemoryTracer.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/MemoryTracer;
0 5 1 stackLimit I
MethodParameters:
Name Flags
stackLimit
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.MemoryTracer.stackOverflowed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
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.MemoryTracer.verifyConfigAllowed:()V
1: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.MemoryTracer.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/MemoryTracer;
0 3 1 filter Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
MethodParameters:
Name Flags
filter
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.MemoryTracer.$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
iconst_1
putfield com.oracle.truffle.tools.profiler.MemoryTracer.closed:Z
2: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
ifnull 5
3: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
4: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.MemoryTracer.stacksBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
5: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
ifnull 7
6: aload 0
aconst_null
putfield com.oracle.truffle.tools.profiler.MemoryTracer.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
private void verifyConfigAllowed();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic com.oracle.truffle.tools.profiler.MemoryTracer.$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.MemoryTracer.closed:Z
ifeq 3
2: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Memory Tracer 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.MemoryTracer.collecting:Z
ifeq 5
4: new com.oracle.truffle.tools.profiler.ProfilerException
dup
ldc "Cannot change tracer 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:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer;
}
SourceFile: "MemoryTracer.java"
NestMembers:
com.oracle.truffle.tools.profiler.MemoryTracer$1 com.oracle.truffle.tools.profiler.MemoryTracer$2 com.oracle.truffle.tools.profiler.MemoryTracer$3 com.oracle.truffle.tools.profiler.MemoryTracer$4 com.oracle.truffle.tools.profiler.MemoryTracer$5 com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.tools.profiler.MemoryTracer$Listener$1 com.oracle.truffle.tools.profiler.MemoryTracer$Payload
InnerClasses:
public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
public abstract SourcePredicate = com.oracle.truffle.api.instrumentation.SourceSectionFilter$SourcePredicate 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 Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
com.oracle.truffle.tools.profiler.MemoryTracer$1
com.oracle.truffle.tools.profiler.MemoryTracer$2
com.oracle.truffle.tools.profiler.MemoryTracer$3
com.oracle.truffle.tools.profiler.MemoryTracer$4
com.oracle.truffle.tools.profiler.MemoryTracer$5
public final AllocationEventInfo = com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo of com.oracle.truffle.tools.profiler.MemoryTracer
private final Listener = com.oracle.truffle.tools.profiler.MemoryTracer$Listener of com.oracle.truffle.tools.profiler.MemoryTracer
public final Payload = com.oracle.truffle.tools.profiler.MemoryTracer$Payload of com.oracle.truffle.tools.profiler.MemoryTracer
public abstract Entry = java.util.Map$Entry of java.util.Map