final class com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace extends com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceNode
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace
  super_class: com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceNode
{
  private final java.lang.String enterPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String exitPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String exceptionPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext, java.io.PrintStream, java.lang.String, java.lang.String);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;Ljava/io/PrintStream;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
        start local 1 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext context
        start local 2 // java.io.PrintStream out
        start local 3 // java.lang.String functionName
        start local 4 // java.lang.String sourceSection
         0: .line 169
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* out */
            invokespecial com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceNode.<init>:(Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;Ljava/io/PrintStream;)V
         1: .line 170
            aload 0 /* this */
            ldc "Entering function %s at %s with arguments:"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* functionName */
            aastore
            dup
            iconst_1
            aload 4 /* sourceSection */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            putfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.enterPrefix:Ljava/lang/String;
         2: .line 171
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Leaving "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* functionName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.exitPrefix:Ljava/lang/String;
         3: .line 172
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Exceptionally leaving "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* functionName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.exceptionPrefix:Ljava/lang/String;
         4: .line 173
            return
        end local 4 // java.lang.String sourceSection
        end local 3 // java.lang.String functionName
        end local 2 // java.io.PrintStream out
        end local 1 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext context
        end local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$RootTrace;
            0    5     1        context  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;
            0    5     2            out  Ljava/io/PrintStream;
            0    5     3   functionName  Ljava/lang/String;
            0    5     4  sourceSection  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      context        
      out            
      functionName   
      sourceSection  

  private void traceFunctionArgs(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
        start local 1 // java.lang.Object[] arguments
         0: .line 177
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.enterPrefix:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* arguments */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.trace:(Ljava/lang/String;)V
         1: .line 178
            return
        end local 1 // java.lang.Object[] arguments
        end local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$RootTrace;
            0    2     1  arguments  [Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      arguments  

  protected void onEnter(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 182
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.getTraceContext:()Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext.enterFunction:()V
         1: .line 183
            aload 0 /* this */
            aload 1 /* frame */
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getArguments:()[Ljava/lang/Object;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.traceFunctionArgs:([Ljava/lang/Object;)V
         2: .line 184
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.flushTraceBuffer:()V
         3: .line 185
            return
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$RootTrace;
            0    4     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

  protected void onReturnValue(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Object result
         0: .line 189
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.exitPrefix:Ljava/lang/String;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.trace:(Ljava/lang/String;)V
         1: .line 190
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.getTraceContext:()Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext.exitFunction:()V
         2: .line 191
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.flushTraceBuffer:()V
         3: .line 192
            return
        end local 2 // java.lang.Object result
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$RootTrace;
            0    4     1   frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    4     2  result  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      frame   
      result  

  protected void onReturnExceptional(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Throwable exception
         0: .line 196
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.exceptionPrefix:Ljava/lang/String;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.trace:(Ljava/lang/String;)V
         1: .line 197
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.getTraceContext:()Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$TraceContext;
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext.exitFunction:()V
         2: .line 198
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace.flushTraceBuffer:()V
         3: .line 199
            return
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/oracle/truffle/llvm/runtime/instruments/trace/LLVMTraceNodeFactory$RootTrace;
            0    4     1      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    4     2  exception  Ljava/lang/Throwable;
    MethodParameters:
           Name  Flags
      frame      
      exception  
}
SourceFile: "LLVMTraceNodeFactory.java"
NestHost: com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  private final RootTrace = com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$RootTrace of com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory
  private final TraceContext = com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceContext of com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory
  private abstract TraceNode = com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory$TraceNode of com.oracle.truffle.llvm.runtime.instruments.trace.LLVMTraceNodeFactory