final class com.oracle.truffle.tools.profiler.MemoryTracer$Listener implements com.oracle.truffle.api.instrumentation.AllocationListener
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.tools.profiler.MemoryTracer$Listener
super_class: java.lang.Object
{
java.lang.ThreadLocal<java.lang.Boolean> gettingMetaObject;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x0000)
Signature: Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>;
final com.oracle.truffle.tools.profiler.MemoryTracer this$0;
descriptor: Lcom/oracle/truffle/tools/profiler/MemoryTracer;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(com.oracle.truffle.tools.profiler.MemoryTracer);
descriptor: (Lcom/oracle/truffle/tools/profiler/MemoryTracer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokedynamic get()Ljava/util/function/Supplier;
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;
com/oracle/truffle/tools/profiler/MemoryTracer$Listener.lambda$0()Ljava/lang/Boolean; (6)
()Ljava/lang/Boolean;
invokestatic java.lang.ThreadLocal.withInitial:(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal;
putfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.gettingMetaObject:Ljava/lang/ThreadLocal;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer$Listener;
MethodParameters:
Name Flags
this$0 final
public void onEnter(com.oracle.truffle.api.instrumentation.AllocationEvent);
descriptor: (Lcom/oracle/truffle/api/instrumentation/AllocationEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=2, args_size=2
start local 0 start local 1 0: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer$Listener;
0 1 1 event Lcom/oracle/truffle/api/instrumentation/AllocationEvent;
MethodParameters:
Name Flags
event
public void onReturnValue(com.oracle.truffle.api.instrumentation.AllocationEvent);
descriptor: (Lcom/oracle/truffle/api/instrumentation/AllocationEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.gettingMetaObject:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
getfield com.oracle.truffle.tools.profiler.MemoryTracer.shadowStack:Lcom/oracle/truffle/tools/profiler/ShadowStack;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack.getStack:(Ljava/lang/Thread;)Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;
astore 2
start local 2 3: aload 2
ifnull 4
aload 2
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.getStackIndex:()I
iconst_m1
if_icmpne 5
4: StackMap locals: com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack
StackMap stack:
return
5: StackMap locals:
StackMap stack:
aload 2
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.hasStackOverflowed:()Z
ifeq 8
6: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
iconst_1
putfield com.oracle.truffle.tools.profiler.MemoryTracer.stackOverflowed:Z
7: return
8: StackMap locals:
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getLanguage:()Lcom/oracle/truffle/api/nodes/LanguageInfo;
astore 3
start local 3 9: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.gettingMetaObject:Ljava/lang/ThreadLocal;
iconst_1
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
10: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
getfield com.oracle.truffle.tools.profiler.MemoryTracer.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
aload 3
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getValue:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getLanguageView:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 11: invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
aload 5
invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
astore 6
start local 6 12: aload 6
aload 5
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasMetaObject:(Ljava/lang/Object;)Z
ifeq 18
13: getstatic com.oracle.truffle.tools.profiler.MemoryTracer.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
getstatic com.oracle.truffle.tools.profiler.MemoryTracer.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 6
aload 5
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getMetaObject:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getMetaQualifiedName:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.asString:(Ljava/lang/Object;)Ljava/lang/String;
astore 4
start local 4 14: goto 19
end local 4 StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.api.instrumentation.AllocationEvent com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack com.oracle.truffle.api.nodes.LanguageInfo top java.lang.Object com.oracle.truffle.api.interop.InteropLibrary
StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
15: astore 7
start local 7 16: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
17: new java.lang.AssertionError
dup
aload 7
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 7 18: StackMap locals:
StackMap stack:
ldc "null"
astore 4
start local 4 19: StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.api.instrumentation.AllocationEvent com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack com.oracle.truffle.api.nodes.LanguageInfo java.lang.String java.lang.Object com.oracle.truffle.api.interop.InteropLibrary
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.gettingMetaObject:Ljava/lang/ThreadLocal;
iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
20: new com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo
dup
aload 3
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getNewSize:()J
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getOldSize:()J
lsub
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getOldSize:()J
lconst_0
lcmp
ifeq 21
iconst_1
goto 22
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.api.instrumentation.AllocationEvent com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack com.oracle.truffle.api.nodes.LanguageInfo java.lang.String java.lang.Object com.oracle.truffle.api.interop.InteropLibrary
StackMap stack: new 20 new 20 com.oracle.truffle.api.nodes.LanguageInfo long
21: iconst_0
StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.api.instrumentation.AllocationEvent com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack com.oracle.truffle.api.nodes.LanguageInfo java.lang.String java.lang.Object com.oracle.truffle.api.interop.InteropLibrary
StackMap stack: new 20 new 20 com.oracle.truffle.api.nodes.LanguageInfo long int
22: aload 4
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo.<init>:(Lcom/oracle/truffle/api/nodes/LanguageInfo;JZLjava/lang/String;)V
astore 7
start local 7 23: aload 0
aload 2
aload 7
invokevirtual com.oracle.truffle.tools.profiler.MemoryTracer$Listener.handleEvent:(Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;Lcom/oracle/truffle/tools/profiler/MemoryTracer$AllocationEventInfo;)Z
pop
24: return
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 25 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer$Listener;
0 25 1 event Lcom/oracle/truffle/api/instrumentation/AllocationEvent;
3 25 2 stack Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;
9 25 3 languageInfo Lcom/oracle/truffle/api/nodes/LanguageInfo;
14 15 4 metaObjectString Ljava/lang/String;
19 25 4 metaObjectString Ljava/lang/String;
11 25 5 view Ljava/lang/Object;
12 25 6 viewLib Lcom/oracle/truffle/api/interop/InteropLibrary;
16 18 7 e Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
23 25 7 info Lcom/oracle/truffle/tools/profiler/MemoryTracer$AllocationEventInfo;
Exception table:
from to target type
13 14 15 Class com.oracle.truffle.api.interop.UnsupportedMessageException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
event
boolean handleEvent(com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack, com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo);
descriptor: (Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;Lcom/oracle/truffle/tools/profiler/MemoryTracer$AllocationEventInfo;)Z
flags: (0x0000)
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack.getStack:()[Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
astore 3
start local 3 1: aload 3
ifnonnull 3
2: iconst_0
ireturn
3: StackMap locals: com.oracle.truffle.tools.profiler.StackTraceEntry[]
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
dup
astore 4
monitorenter
4: aload 0
getfield com.oracle.truffle.tools.profiler.MemoryTracer$Listener.this$0:Lcom/oracle/truffle/tools/profiler/MemoryTracer;
getfield com.oracle.truffle.tools.profiler.MemoryTracer.rootNodes:Ljava/util/Map;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
new com.oracle.truffle.tools.profiler.MemoryTracer$Listener$1
dup
aload 0
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$Listener$1.<init>:(Lcom/oracle/truffle/tools/profiler/MemoryTracer$Listener;)V
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.ProfilerNode
astore 5
start local 5 5: iconst_0
istore 6
start local 6 6: goto 15
7: StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer com.oracle.truffle.tools.profiler.ProfilerNode int
StackMap stack:
aload 3
iload 6
aaload
astore 7
start local 7 8: aload 5
aload 7
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.findChild:(Lcom/oracle/truffle/tools/profiler/StackTraceEntry;)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
astore 8
start local 8 9: aload 8
ifnonnull 12
10: new com.oracle.truffle.tools.profiler.ProfilerNode
dup
aload 5
aload 7
new com.oracle.truffle.tools.profiler.MemoryTracer$Payload
dup
invokespecial com.oracle.truffle.tools.profiler.MemoryTracer$Payload.<init>:()V
invokespecial com.oracle.truffle.tools.profiler.ProfilerNode.<init>:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Ljava/lang/Object;)V
astore 8
11: aload 5
aload 7
aload 8
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.addChild:(Lcom/oracle/truffle/tools/profiler/StackTraceEntry;Lcom/oracle/truffle/tools/profiler/ProfilerNode;)V
12: StackMap locals: com.oracle.truffle.tools.profiler.StackTraceEntry com.oracle.truffle.tools.profiler.ProfilerNode
StackMap stack:
aload 8
astore 5
13: aload 5
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.MemoryTracer$Payload
invokevirtual com.oracle.truffle.tools.profiler.MemoryTracer$Payload.incrementTotalAllocations:()V
end local 8 end local 7 14: iinc 6 1
StackMap locals:
StackMap stack:
15: iload 6
aload 3
arraylength
if_icmplt 7
end local 6 16: aload 5
invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
checkcast com.oracle.truffle.tools.profiler.MemoryTracer$Payload
invokevirtual com.oracle.truffle.tools.profiler.MemoryTracer$Payload.getEvents:()Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
17: aload 4
monitorexit
18: iconst_1
ireturn
end local 5 19: StackMap locals: com.oracle.truffle.tools.profiler.MemoryTracer$Listener com.oracle.truffle.tools.profiler.ShadowStack$ThreadLocalStack com.oracle.truffle.tools.profiler.MemoryTracer$AllocationEventInfo com.oracle.truffle.tools.profiler.StackTraceEntry[] com.oracle.truffle.tools.profiler.MemoryTracer
StackMap stack: java.lang.Throwable
aload 4
monitorexit
20: athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/oracle/truffle/tools/profiler/MemoryTracer$Listener;
0 21 1 stack Lcom/oracle/truffle/tools/profiler/ShadowStack$ThreadLocalStack;
0 21 2 info Lcom/oracle/truffle/tools/profiler/MemoryTracer$AllocationEventInfo;
1 21 3 locations [Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
5 19 5 treeNode Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
6 16 6 i I
8 14 7 location Lcom/oracle/truffle/tools/profiler/StackTraceEntry;
9 14 8 child Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/MemoryTracer$Payload;>;
Exception table:
from to target type
4 18 19 any
19 20 19 any
MethodParameters:
Name Flags
stack
info
private static java.lang.Boolean lambda$0();
descriptor: ()Ljava/lang/Boolean;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=0, args_size=0
0: iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "MemoryTracer.java"
NestHost: com.oracle.truffle.tools.profiler.MemoryTracer
InnerClasses:
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
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
com.oracle.truffle.tools.profiler.MemoryTracer$Listener$1
public final Payload = com.oracle.truffle.tools.profiler.MemoryTracer$Payload of com.oracle.truffle.tools.profiler.MemoryTracer
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