class com.sun.tools.example.trace.EventThread$ThreadTrace
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.sun.tools.example.trace.EventThread$ThreadTrace
super_class: java.lang.Object
{
final com.sun.jdi.ThreadReference thread;
descriptor: Lcom/sun/jdi/ThreadReference;
flags: (0x0010) ACC_FINAL
final java.lang.String baseIndent;
descriptor: Ljava/lang/String;
flags: (0x0010) ACC_FINAL
static final java.lang.String threadDelta;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: " "
java.lang.StringBuffer indent;
descriptor: Ljava/lang/StringBuffer;
flags: (0x0000)
final com.sun.tools.example.trace.EventThread this$0;
descriptor: Lcom/sun/tools/example/trace/EventThread;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.sun.tools.example.trace.EventThread, com.sun.jdi.ThreadReference);
descriptor: (Lcom/sun/tools/example/trace/EventThread;Lcom/sun/jdi/ThreadReference;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 2 0: aload 0
aload 1
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 2
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
2: aload 0
getstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
3: aload 0
new java.lang.StringBuffer
dup
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
4: getstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
new java.lang.StringBuilder
dup_x1
swap
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
5: aload 0
new java.lang.StringBuilder
dup
ldc "====== "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokeinterface com.sun.jdi.ThreadReference.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " ======"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
6: return
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 7 2 thread Lcom/sun/jdi/ThreadReference;
MethodParameters:
Name Flags
this$0 final
thread
private void println(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
invokevirtual java.io.PrintWriter.print:(Ljava/lang/Object;)V
1: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
aload 1
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 3 1 str Ljava/lang/String;
MethodParameters:
Name Flags
str
void methodEntryEvent(com.sun.jdi.event.MethodEntryEvent);
descriptor: (Lcom/sun/jdi/event/MethodEntryEvent;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
new java.lang.StringBuilder
dup
aload 1
invokeinterface com.sun.jdi.event.MethodEntryEvent.method:()Lcom/sun/jdi/Method;
invokeinterface com.sun.jdi.Method.name:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " -- "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
1: aload 1
invokeinterface com.sun.jdi.event.MethodEntryEvent.method:()Lcom/sun/jdi/Method;
invokeinterface com.sun.jdi.Method.declaringType:()Lcom/sun/jdi/ReferenceType;
invokeinterface com.sun.jdi.ReferenceType.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
2: invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
3: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
ldc "| "
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 5 1 event Lcom/sun/jdi/event/MethodEntryEvent;
MethodParameters:
Name Flags
event
void methodExitEvent(com.sun.jdi.event.MethodExitEvent);
descriptor: (Lcom/sun/jdi/event/MethodExitEvent;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
invokevirtual java.lang.StringBuffer.length:()I
iconst_2
isub
invokevirtual java.lang.StringBuffer.setLength:(I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 2 1 event Lcom/sun/jdi/event/MethodExitEvent;
MethodParameters:
Name Flags
event
void fieldWatchEvent(com.sun.jdi.event.ModificationWatchpointEvent);
descriptor: (Lcom/sun/jdi/event/ModificationWatchpointEvent;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface com.sun.jdi.event.ModificationWatchpointEvent.field:()Lcom/sun/jdi/Field;
astore 2
start local 2 1: aload 1
invokeinterface com.sun.jdi.event.ModificationWatchpointEvent.valueToBe:()Lcom/sun/jdi/Value;
astore 3
start local 3 2: aload 0
new java.lang.StringBuilder
dup
ldc " "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokeinterface com.sun.jdi.Field.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 4 1 event Lcom/sun/jdi/event/ModificationWatchpointEvent;
1 4 2 field Lcom/sun/jdi/Field;
2 4 3 value Lcom/sun/jdi/Value;
MethodParameters:
Name Flags
event
void exceptionEvent(com.sun.jdi.event.ExceptionEvent);
descriptor: (Lcom/sun/jdi/event/ExceptionEvent;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
new java.lang.StringBuilder
dup
ldc "Exception: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface com.sun.jdi.event.ExceptionEvent.exception:()Lcom/sun/jdi/ObjectReference;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1: ldc " catch: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokeinterface com.sun.jdi.event.ExceptionEvent.catchLocation:()Lcom/sun/jdi/Location;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
2: invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
3: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
invokeinterface com.sun.jdi.VirtualMachine.eventRequestManager:()Lcom/sun/jdi/request/EventRequestManager;
astore 2
start local 2 4: aload 2
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
5: iconst_m1
6: iconst_1
7: invokeinterface com.sun.jdi.request.EventRequestManager.createStepRequest:(Lcom/sun/jdi/ThreadReference;II)Lcom/sun/jdi/request/StepRequest;
astore 3
start local 3 8: aload 3
iconst_1
invokeinterface com.sun.jdi.request.StepRequest.addCountFilter:(I)V
9: aload 3
iconst_2
invokeinterface com.sun.jdi.request.StepRequest.setSuspendPolicy:(I)V
10: aload 3
invokeinterface com.sun.jdi.request.StepRequest.enable:()V
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 12 1 event Lcom/sun/jdi/event/ExceptionEvent;
4 12 2 mgr Lcom/sun/jdi/request/EventRequestManager;
8 12 3 req Lcom/sun/jdi/request/StepRequest;
MethodParameters:
Name Flags
event
void stepEvent(com.sun.jdi.event.StepEvent);
descriptor: (Lcom/sun/jdi/event/StepEvent;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
new java.lang.StringBuffer
dup
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
2: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
invokeinterface com.sun.jdi.ThreadReference.frameCount:()I
istore 2
3: goto 7
StackMap locals: com.sun.tools.example.trace.EventThread$ThreadTrace com.sun.jdi.event.StepEvent int
StackMap stack: com.sun.jdi.IncompatibleThreadStateException
4: pop
5: goto 7
6: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
ldc "| "
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
7: StackMap locals:
StackMap stack:
iload 2
iinc 2 -1
ifgt 6
8: aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.this$0:Lcom/sun/tools/example/trace/EventThread;
getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
invokeinterface com.sun.jdi.VirtualMachine.eventRequestManager:()Lcom/sun/jdi/request/EventRequestManager;
astore 3
start local 3 9: aload 3
aload 1
invokeinterface com.sun.jdi.event.StepEvent.request:()Lcom/sun/jdi/request/EventRequest;
invokeinterface com.sun.jdi.request.EventRequestManager.deleteEventRequest:(Lcom/sun/jdi/request/EventRequest;)V
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 11 1 event Lcom/sun/jdi/event/StepEvent;
1 11 2 cnt I
9 11 3 mgr Lcom/sun/jdi/request/EventRequestManager;
Exception table:
from to target type
2 3 4 Class com.sun.jdi.IncompatibleThreadStateException
MethodParameters:
Name Flags
event
void threadDeathEvent(com.sun.jdi.event.ThreadDeathEvent);
descriptor: (Lcom/sun/jdi/event/ThreadDeathEvent;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
new java.lang.StringBuffer
dup
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.baseIndent:Ljava/lang/String;
invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
putfield com.sun.tools.example.trace.EventThread$ThreadTrace.indent:Ljava/lang/StringBuffer;
1: aload 0
new java.lang.StringBuilder
dup
ldc "====== "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.tools.example.trace.EventThread$ThreadTrace.thread:Lcom/sun/jdi/ThreadReference;
invokeinterface com.sun.jdi.ThreadReference.name:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " end ======"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.println:(Ljava/lang/String;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
0 3 1 event Lcom/sun/jdi/event/ThreadDeathEvent;
MethodParameters:
Name Flags
event
}
SourceFile: "EventThread.java"
NestHost: com.sun.tools.example.trace.EventThread
InnerClasses:
ThreadTrace = com.sun.tools.example.trace.EventThread$ThreadTrace of com.sun.tools.example.trace.EventThread