class com.oracle.truffle.tools.profiler.HeapMonitor$Listener implements com.oracle.truffle.api.instrumentation.AllocationListener
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.truffle.tools.profiler.HeapMonitor$Listener
super_class: java.lang.Object
{
final com.oracle.truffle.tools.profiler.HeapMonitor this$0;
descriptor: Lcom/oracle/truffle/tools/profiler/HeapMonitor;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(com.oracle.truffle.tools.profiler.HeapMonitor);
descriptor: (Lcom/oracle/truffle/tools/profiler/HeapMonitor;)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.HeapMonitor$Listener.this$0:Lcom/oracle/truffle/tools/profiler/HeapMonitor;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/profiler/HeapMonitor$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/HeapMonitor$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=11, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getValue:()Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: return
3: StackMap locals: java.lang.Object
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getLanguage:()Lcom/oracle/truffle/api/nodes/LanguageInfo;
astore 3
start local 3 4: aload 0
getfield com.oracle.truffle.tools.profiler.HeapMonitor$Listener.this$0:Lcom/oracle/truffle/tools/profiler/HeapMonitor;
getfield com.oracle.truffle.tools.profiler.HeapMonitor.initializedLanguages:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 8
5: aload 0
aload 3
aload 2
invokevirtual com.oracle.truffle.tools.profiler.HeapMonitor$Listener.getMetaObjectString:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Object;)Ljava/lang/String;
astore 4
start local 4 6: aload 4
ifnull 8
7: aload 0
getfield com.oracle.truffle.tools.profiler.HeapMonitor$Listener.this$0:Lcom/oracle/truffle/tools/profiler/HeapMonitor;
getfield com.oracle.truffle.tools.profiler.HeapMonitor.newReferences:Ljava/util/concurrent/ConcurrentLinkedQueue;
new com.oracle.truffle.tools.profiler.HeapMonitor$ObjectWeakReference
dup
aload 2
aload 0
getfield com.oracle.truffle.tools.profiler.HeapMonitor$Listener.this$0:Lcom/oracle/truffle/tools/profiler/HeapMonitor;
getfield com.oracle.truffle.tools.profiler.HeapMonitor.referenceQueue:Ljava/lang/ref/ReferenceQueue;
aload 3
aload 4
invokevirtual java.lang.String.intern:()Ljava/lang/String;
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getOldSize:()J
aload 1
invokevirtual com.oracle.truffle.api.instrumentation.AllocationEvent.getNewSize:()J
invokespecial com.oracle.truffle.tools.profiler.HeapMonitor$ObjectWeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/String;JJ)V
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.add:(Ljava/lang/Object;)Z
pop
end local 4 8: StackMap locals: com.oracle.truffle.api.nodes.LanguageInfo
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/tools/profiler/HeapMonitor$Listener;
0 9 1 event Lcom/oracle/truffle/api/instrumentation/AllocationEvent;
1 9 2 object Ljava/lang/Object;
4 9 3 language Lcom/oracle/truffle/api/nodes/LanguageInfo;
6 8 4 metaInfo Ljava/lang/String;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
event
private java.lang.String getMetaObjectString(com.oracle.truffle.api.nodes.LanguageInfo, java.lang.Object);
descriptor: (Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Object;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.truffle.tools.profiler.HeapMonitor.RECURSIVE:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
if_acmpne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: istore 3
start local 3 3: iload 3
ifne 20
4: getstatic com.oracle.truffle.tools.profiler.HeapMonitor.RECURSIVE:Ljava/lang/ThreadLocal;
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
5: aload 0
getfield com.oracle.truffle.tools.profiler.HeapMonitor$Listener.this$0:Lcom/oracle/truffle/tools/profiler/HeapMonitor;
getfield com.oracle.truffle.tools.profiler.HeapMonitor.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
aload 1
aload 2
invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getLanguageView:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 6: invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
aload 4
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 5
start local 5 7: ldc "Unknown"
astore 6
start local 6 8: aload 5
aload 4
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasMetaObject:(Ljava/lang/Object;)Z
ifeq 14
9: getstatic com.oracle.truffle.tools.profiler.HeapMonitor.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
getstatic com.oracle.truffle.tools.profiler.HeapMonitor.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 5
aload 4
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 6
10: goto 14
StackMap locals: com.oracle.truffle.tools.profiler.HeapMonitor$Listener com.oracle.truffle.api.nodes.LanguageInfo java.lang.Object int java.lang.Object com.oracle.truffle.api.interop.InteropLibrary java.lang.String
StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
11: astore 7
start local 7 12: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
13: new java.lang.AssertionError
dup
aload 7
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 7 14: StackMap locals:
StackMap stack:
aload 6
astore 9
15: getstatic com.oracle.truffle.tools.profiler.HeapMonitor.RECURSIVE:Ljava/lang/ThreadLocal;
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
16: aload 9
areturn
end local 6 end local 5 end local 4 17: StackMap locals: com.oracle.truffle.tools.profiler.HeapMonitor$Listener com.oracle.truffle.api.nodes.LanguageInfo java.lang.Object int
StackMap stack: java.lang.Throwable
astore 8
18: getstatic com.oracle.truffle.tools.profiler.HeapMonitor.RECURSIVE:Ljava/lang/ThreadLocal;
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
19: aload 8
athrow
20: StackMap locals:
StackMap stack:
aconst_null
areturn
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/HeapMonitor$Listener;
0 21 1 language Lcom/oracle/truffle/api/nodes/LanguageInfo;
0 21 2 value Ljava/lang/Object;
3 21 3 recursive Z
6 17 4 view Ljava/lang/Object;
7 17 5 viewLib Lcom/oracle/truffle/api/interop/InteropLibrary;
8 17 6 metaObjectString Ljava/lang/String;
12 14 7 e Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
Exception table:
from to target type
9 10 11 Class com.oracle.truffle.api.interop.UnsupportedMessageException
5 15 17 any
MethodParameters:
Name Flags
language
value
}
SourceFile: "HeapMonitor.java"
NestHost: com.oracle.truffle.tools.profiler.HeapMonitor
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
private Listener = com.oracle.truffle.tools.profiler.HeapMonitor$Listener of com.oracle.truffle.tools.profiler.HeapMonitor
private final ObjectWeakReference = com.oracle.truffle.tools.profiler.HeapMonitor$ObjectWeakReference of com.oracle.truffle.tools.profiler.HeapMonitor