public class com.sun.tools.example.trace.EventThread extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.sun.tools.example.trace.EventThread
super_class: java.lang.Thread
{
private final com.sun.jdi.VirtualMachine vm;
descriptor: Lcom/sun/jdi/VirtualMachine;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String[] excludes;
descriptor: [Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.PrintWriter writer;
descriptor: Ljava/io/PrintWriter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static java.lang.String nextBaseIndent;
descriptor: Ljava/lang/String;
flags: (0x0008) ACC_STATIC
private boolean connected;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean vmDied;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.Map traceMap;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc ""
putstatic com.sun.tools.example.trace.EventThread.nextBaseIndent:Ljava/lang/String;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(com.sun.jdi.VirtualMachine, java.lang.String[], java.io.PrintWriter);
descriptor: (Lcom/sun/jdi/VirtualMachine;[Ljava/lang/String;Ljava/io/PrintWriter;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
ldc "event-handler"
invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
1: aload 0
iconst_1
putfield com.sun.tools.example.trace.EventThread.connected:Z
2: aload 0
iconst_1
putfield com.sun.tools.example.trace.EventThread.vmDied:Z
3: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.sun.tools.example.trace.EventThread.traceMap:Ljava/util/Map;
4: aload 0
aload 1
putfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
5: aload 0
aload 2
putfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
6: aload 0
aload 3
putfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/tools/example/trace/EventThread;
0 8 1 vm Lcom/sun/jdi/VirtualMachine;
0 8 2 excludes [Ljava/lang/String;
0 8 3 writer Ljava/io/PrintWriter;
MethodParameters:
Name Flags
vm
excludes
writer
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
invokeinterface com.sun.jdi.VirtualMachine.eventQueue:()Lcom/sun/jdi/event/EventQueue;
astore 1
start local 1 1: goto 13
2: StackMap locals: com.sun.jdi.event.EventQueue
StackMap stack:
aload 1
invokeinterface com.sun.jdi.event.EventQueue.remove:()Lcom/sun/jdi/event/EventSet;
astore 2
start local 2 3: aload 2
invokeinterface com.sun.jdi.event.EventSet.eventIterator:()Lcom/sun/jdi/event/EventIterator;
astore 3
start local 3 4: goto 6
5: StackMap locals: com.sun.jdi.event.EventSet com.sun.jdi.event.EventIterator
StackMap stack:
aload 0
aload 3
invokeinterface com.sun.jdi.event.EventIterator.nextEvent:()Lcom/sun/jdi/event/Event;
invokevirtual com.sun.tools.example.trace.EventThread.handleEvent:(Lcom/sun/jdi/event/Event;)V
6: StackMap locals:
StackMap stack:
aload 3
invokeinterface com.sun.jdi.event.EventIterator.hasNext:()Z
ifne 5
7: aload 2
invokeinterface com.sun.jdi.event.EventSet.resume:()V
end local 3 end local 2 8: goto 13
StackMap locals: com.sun.tools.example.trace.EventThread com.sun.jdi.event.EventQueue
StackMap stack: java.lang.InterruptedException
9: pop
goto 13
10: StackMap locals:
StackMap stack: com.sun.jdi.VMDisconnectedException
pop
11: aload 0
invokevirtual com.sun.tools.example.trace.EventThread.handleDisconnectedException:()V
12: goto 14
13: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.example.trace.EventThread.connected:Z
ifne 2
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/sun/tools/example/trace/EventThread;
1 15 1 queue Lcom/sun/jdi/event/EventQueue;
3 8 2 eventSet Lcom/sun/jdi/event/EventSet;
4 8 3 it Lcom/sun/jdi/event/EventIterator;
Exception table:
from to target type
2 8 9 Class java.lang.InterruptedException
2 8 10 Class com.sun.jdi.VMDisconnectedException
void setEventRequests(boolean);
descriptor: (Z)V
flags: (0x0000)
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: aload 0
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 1: aload 2
aconst_null
2: iconst_1
iconst_1
3: invokeinterface com.sun.jdi.request.EventRequestManager.createExceptionRequest:(Lcom/sun/jdi/ReferenceType;ZZ)Lcom/sun/jdi/request/ExceptionRequest;
astore 3
start local 3 4: aload 3
iconst_2
invokeinterface com.sun.jdi.request.ExceptionRequest.setSuspendPolicy:(I)V
5: aload 3
invokeinterface com.sun.jdi.request.ExceptionRequest.enable:()V
6: aload 2
invokeinterface com.sun.jdi.request.EventRequestManager.createMethodEntryRequest:()Lcom/sun/jdi/request/MethodEntryRequest;
astore 4
start local 4 7: iconst_0
istore 5
start local 5 8: goto 11
9: StackMap locals: com.sun.tools.example.trace.EventThread int com.sun.jdi.request.EventRequestManager com.sun.jdi.request.ExceptionRequest com.sun.jdi.request.MethodEntryRequest int
StackMap stack:
aload 4
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
iload 5
aaload
invokeinterface com.sun.jdi.request.MethodEntryRequest.addClassExclusionFilter:(Ljava/lang/String;)V
10: iinc 5 1
StackMap locals:
StackMap stack:
11: iload 5
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
arraylength
if_icmplt 9
end local 5 12: aload 4
iconst_0
invokeinterface com.sun.jdi.request.MethodEntryRequest.setSuspendPolicy:(I)V
13: aload 4
invokeinterface com.sun.jdi.request.MethodEntryRequest.enable:()V
14: aload 2
invokeinterface com.sun.jdi.request.EventRequestManager.createMethodExitRequest:()Lcom/sun/jdi/request/MethodExitRequest;
astore 5
start local 5 15: iconst_0
istore 6
start local 6 16: goto 19
17: StackMap locals: com.sun.tools.example.trace.EventThread int com.sun.jdi.request.EventRequestManager com.sun.jdi.request.ExceptionRequest com.sun.jdi.request.MethodEntryRequest com.sun.jdi.request.MethodExitRequest int
StackMap stack:
aload 5
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
iload 6
aaload
invokeinterface com.sun.jdi.request.MethodExitRequest.addClassExclusionFilter:(Ljava/lang/String;)V
18: iinc 6 1
StackMap locals:
StackMap stack:
19: iload 6
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
arraylength
if_icmplt 17
end local 6 20: aload 5
iconst_0
invokeinterface com.sun.jdi.request.MethodExitRequest.setSuspendPolicy:(I)V
21: aload 5
invokeinterface com.sun.jdi.request.MethodExitRequest.enable:()V
22: aload 2
invokeinterface com.sun.jdi.request.EventRequestManager.createThreadDeathRequest:()Lcom/sun/jdi/request/ThreadDeathRequest;
astore 6
start local 6 23: aload 6
iconst_2
invokeinterface com.sun.jdi.request.ThreadDeathRequest.setSuspendPolicy:(I)V
24: aload 6
invokeinterface com.sun.jdi.request.ThreadDeathRequest.enable:()V
25: iload 1
ifeq 34
26: aload 2
invokeinterface com.sun.jdi.request.EventRequestManager.createClassPrepareRequest:()Lcom/sun/jdi/request/ClassPrepareRequest;
astore 7
start local 7 27: iconst_0
istore 8
start local 8 28: goto 31
29: StackMap locals: com.sun.tools.example.trace.EventThread int com.sun.jdi.request.EventRequestManager com.sun.jdi.request.ExceptionRequest com.sun.jdi.request.MethodEntryRequest com.sun.jdi.request.MethodExitRequest com.sun.jdi.request.ThreadDeathRequest com.sun.jdi.request.ClassPrepareRequest int
StackMap stack:
aload 7
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
iload 8
aaload
invokeinterface com.sun.jdi.request.ClassPrepareRequest.addClassExclusionFilter:(Ljava/lang/String;)V
30: iinc 8 1
StackMap locals:
StackMap stack:
31: iload 8
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
arraylength
if_icmplt 29
end local 8 32: aload 7
iconst_2
invokeinterface com.sun.jdi.request.ClassPrepareRequest.setSuspendPolicy:(I)V
33: aload 7
invokeinterface com.sun.jdi.request.ClassPrepareRequest.enable:()V
end local 7 34: StackMap locals:
StackMap stack:
return
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 35 0 this Lcom/sun/tools/example/trace/EventThread;
0 35 1 watchFields Z
1 35 2 mgr Lcom/sun/jdi/request/EventRequestManager;
4 35 3 excReq Lcom/sun/jdi/request/ExceptionRequest;
7 35 4 menr Lcom/sun/jdi/request/MethodEntryRequest;
8 12 5 i I
15 35 5 mexr Lcom/sun/jdi/request/MethodExitRequest;
16 20 6 i I
23 35 6 tdr Lcom/sun/jdi/request/ThreadDeathRequest;
27 34 7 cpr Lcom/sun/jdi/request/ClassPrepareRequest;
28 32 8 i I
MethodParameters:
Name Flags
watchFields
com.sun.tools.example.trace.EventThread$ThreadTrace threadTrace(com.sun.jdi.ThreadReference);
descriptor: (Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.example.trace.EventThread.traceMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.example.trace.EventThread$ThreadTrace
astore 2
start local 2 1: aload 2
ifnonnull 4
2: new com.sun.tools.example.trace.EventThread$ThreadTrace
dup
aload 0
aload 1
invokespecial com.sun.tools.example.trace.EventThread$ThreadTrace.<init>:(Lcom/sun/tools/example/trace/EventThread;Lcom/sun/jdi/ThreadReference;)V
astore 2
3: aload 0
getfield com.sun.tools.example.trace.EventThread.traceMap:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals: com.sun.tools.example.trace.EventThread$ThreadTrace
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/tools/example/trace/EventThread;
0 5 1 thread Lcom/sun/jdi/ThreadReference;
1 5 2 trace Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
MethodParameters:
Name Flags
thread
private void handleEvent(com.sun.jdi.event.Event);
descriptor: (Lcom/sun/jdi/event/Event;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof com.sun.jdi.event.ExceptionEvent
ifeq 3
1: aload 0
aload 1
checkcast com.sun.jdi.event.ExceptionEvent
invokevirtual com.sun.tools.example.trace.EventThread.exceptionEvent:(Lcom/sun/jdi/event/ExceptionEvent;)V
2: goto 31
StackMap locals:
StackMap stack:
3: aload 1
instanceof com.sun.jdi.event.ModificationWatchpointEvent
ifeq 6
4: aload 0
aload 1
checkcast com.sun.jdi.event.ModificationWatchpointEvent
invokevirtual com.sun.tools.example.trace.EventThread.fieldWatchEvent:(Lcom/sun/jdi/event/ModificationWatchpointEvent;)V
5: goto 31
StackMap locals:
StackMap stack:
6: aload 1
instanceof com.sun.jdi.event.MethodEntryEvent
ifeq 9
7: aload 0
aload 1
checkcast com.sun.jdi.event.MethodEntryEvent
invokevirtual com.sun.tools.example.trace.EventThread.methodEntryEvent:(Lcom/sun/jdi/event/MethodEntryEvent;)V
8: goto 31
StackMap locals:
StackMap stack:
9: aload 1
instanceof com.sun.jdi.event.MethodExitEvent
ifeq 12
10: aload 0
aload 1
checkcast com.sun.jdi.event.MethodExitEvent
invokevirtual com.sun.tools.example.trace.EventThread.methodExitEvent:(Lcom/sun/jdi/event/MethodExitEvent;)V
11: goto 31
StackMap locals:
StackMap stack:
12: aload 1
instanceof com.sun.jdi.event.StepEvent
ifeq 15
13: aload 0
aload 1
checkcast com.sun.jdi.event.StepEvent
invokevirtual com.sun.tools.example.trace.EventThread.stepEvent:(Lcom/sun/jdi/event/StepEvent;)V
14: goto 31
StackMap locals:
StackMap stack:
15: aload 1
instanceof com.sun.jdi.event.ThreadDeathEvent
ifeq 18
16: aload 0
aload 1
checkcast com.sun.jdi.event.ThreadDeathEvent
invokevirtual com.sun.tools.example.trace.EventThread.threadDeathEvent:(Lcom/sun/jdi/event/ThreadDeathEvent;)V
17: goto 31
StackMap locals:
StackMap stack:
18: aload 1
instanceof com.sun.jdi.event.ClassPrepareEvent
ifeq 21
19: aload 0
aload 1
checkcast com.sun.jdi.event.ClassPrepareEvent
invokevirtual com.sun.tools.example.trace.EventThread.classPrepareEvent:(Lcom/sun/jdi/event/ClassPrepareEvent;)V
20: goto 31
StackMap locals:
StackMap stack:
21: aload 1
instanceof com.sun.jdi.event.VMStartEvent
ifeq 24
22: aload 0
aload 1
checkcast com.sun.jdi.event.VMStartEvent
invokevirtual com.sun.tools.example.trace.EventThread.vmStartEvent:(Lcom/sun/jdi/event/VMStartEvent;)V
23: goto 31
StackMap locals:
StackMap stack:
24: aload 1
instanceof com.sun.jdi.event.VMDeathEvent
ifeq 27
25: aload 0
aload 1
checkcast com.sun.jdi.event.VMDeathEvent
invokevirtual com.sun.tools.example.trace.EventThread.vmDeathEvent:(Lcom/sun/jdi/event/VMDeathEvent;)V
26: goto 31
StackMap locals:
StackMap stack:
27: aload 1
instanceof com.sun.jdi.event.VMDisconnectEvent
ifeq 30
28: aload 0
aload 1
checkcast com.sun.jdi.event.VMDisconnectEvent
invokevirtual com.sun.tools.example.trace.EventThread.vmDisconnectEvent:(Lcom/sun/jdi/event/VMDisconnectEvent;)V
29: goto 31
30: StackMap locals:
StackMap stack:
new java.lang.Error
dup
ldc "Unexpected event type"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
31: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lcom/sun/tools/example/trace/EventThread;
0 32 1 event Lcom/sun/jdi/event/Event;
MethodParameters:
Name Flags
event
synchronized void handleDisconnectedException();
descriptor: ()V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=5, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.example.trace.EventThread.vm:Lcom/sun/jdi/VirtualMachine;
invokeinterface com.sun.jdi.VirtualMachine.eventQueue:()Lcom/sun/jdi/event/EventQueue;
astore 1
start local 1 1: goto 15
2: StackMap locals: com.sun.jdi.event.EventQueue
StackMap stack:
aload 1
invokeinterface com.sun.jdi.event.EventQueue.remove:()Lcom/sun/jdi/event/EventSet;
astore 2
start local 2 3: aload 2
invokeinterface com.sun.jdi.event.EventSet.eventIterator:()Lcom/sun/jdi/event/EventIterator;
astore 3
start local 3 4: goto 11
5: StackMap locals: com.sun.jdi.event.EventSet com.sun.jdi.event.EventIterator
StackMap stack:
aload 3
invokeinterface com.sun.jdi.event.EventIterator.nextEvent:()Lcom/sun/jdi/event/Event;
astore 4
start local 4 6: aload 4
instanceof com.sun.jdi.event.VMDeathEvent
ifeq 9
7: aload 0
aload 4
checkcast com.sun.jdi.event.VMDeathEvent
invokevirtual com.sun.tools.example.trace.EventThread.vmDeathEvent:(Lcom/sun/jdi/event/VMDeathEvent;)V
8: goto 11
StackMap locals: com.sun.jdi.event.Event
StackMap stack:
9: aload 4
instanceof com.sun.jdi.event.VMDisconnectEvent
ifeq 11
10: aload 0
aload 4
checkcast com.sun.jdi.event.VMDisconnectEvent
invokevirtual com.sun.tools.example.trace.EventThread.vmDisconnectEvent:(Lcom/sun/jdi/event/VMDisconnectEvent;)V
end local 4 11: StackMap locals:
StackMap stack:
aload 3
invokeinterface com.sun.jdi.event.EventIterator.hasNext:()Z
ifne 5
12: aload 2
invokeinterface com.sun.jdi.event.EventSet.resume:()V
end local 3 end local 2 13: goto 15
StackMap locals: com.sun.tools.example.trace.EventThread com.sun.jdi.event.EventQueue
StackMap stack: java.lang.InterruptedException
14: pop
15: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.example.trace.EventThread.connected:Z
ifne 2
16: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/sun/tools/example/trace/EventThread;
1 17 1 queue Lcom/sun/jdi/event/EventQueue;
3 13 2 eventSet Lcom/sun/jdi/event/EventSet;
4 13 3 iter Lcom/sun/jdi/event/EventIterator;
6 11 4 event Lcom/sun/jdi/event/Event;
Exception table:
from to target type
2 13 14 Class java.lang.InterruptedException
private void vmStartEvent(com.sun.jdi.event.VMStartEvent);
descriptor: (Lcom/sun/jdi/event/VMStartEvent;)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.writer:Ljava/io/PrintWriter;
ldc "-- VM Started --"
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)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;
0 2 1 event Lcom/sun/jdi/event/VMStartEvent;
MethodParameters:
Name Flags
event
private void methodEntryEvent(com.sun.jdi.event.MethodEntryEvent);
descriptor: (Lcom/sun/jdi/event/MethodEntryEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.sun.jdi.event.MethodEntryEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokevirtual com.sun.tools.example.trace.EventThread.threadTrace:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.methodEntryEvent:(Lcom/sun/jdi/event/MethodEntryEvent;)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;
0 2 1 event Lcom/sun/jdi/event/MethodEntryEvent;
MethodParameters:
Name Flags
event
private void methodExitEvent(com.sun.jdi.event.MethodExitEvent);
descriptor: (Lcom/sun/jdi/event/MethodExitEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.sun.jdi.event.MethodExitEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokevirtual com.sun.tools.example.trace.EventThread.threadTrace:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.methodExitEvent:(Lcom/sun/jdi/event/MethodExitEvent;)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;
0 2 1 event Lcom/sun/jdi/event/MethodExitEvent;
MethodParameters:
Name Flags
event
private void stepEvent(com.sun.jdi.event.StepEvent);
descriptor: (Lcom/sun/jdi/event/StepEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.sun.jdi.event.StepEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokevirtual com.sun.tools.example.trace.EventThread.threadTrace:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.stepEvent:(Lcom/sun/jdi/event/StepEvent;)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;
0 2 1 event Lcom/sun/jdi/event/StepEvent;
MethodParameters:
Name Flags
event
private void fieldWatchEvent(com.sun.jdi.event.ModificationWatchpointEvent);
descriptor: (Lcom/sun/jdi/event/ModificationWatchpointEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.sun.jdi.event.ModificationWatchpointEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokevirtual com.sun.tools.example.trace.EventThread.threadTrace:(Lcom/sun/jdi/ThreadReference;)Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.fieldWatchEvent:(Lcom/sun/jdi/event/ModificationWatchpointEvent;)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;
0 2 1 event Lcom/sun/jdi/event/ModificationWatchpointEvent;
MethodParameters:
Name Flags
event
void threadDeathEvent(com.sun.jdi.event.ThreadDeathEvent);
descriptor: (Lcom/sun/jdi/event/ThreadDeathEvent;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.example.trace.EventThread.traceMap:Ljava/util/Map;
aload 1
invokeinterface com.sun.jdi.event.ThreadDeathEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.example.trace.EventThread$ThreadTrace
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.threadDeathEvent:(Lcom/sun/jdi/event/ThreadDeathEvent;)V
3: StackMap locals: com.sun.tools.example.trace.EventThread$ThreadTrace
StackMap stack:
return
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;
0 4 1 event Lcom/sun/jdi/event/ThreadDeathEvent;
1 4 2 trace Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
MethodParameters:
Name Flags
event
private void classPrepareEvent(com.sun.jdi.event.ClassPrepareEvent);
descriptor: (Lcom/sun/jdi/event/ClassPrepareEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: aload 0
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 1: aload 1
invokeinterface com.sun.jdi.event.ClassPrepareEvent.referenceType:()Lcom/sun/jdi/ReferenceType;
invokeinterface com.sun.jdi.ReferenceType.visibleFields:()Ljava/util/List;
astore 3
start local 3 2: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
start local 4 3: goto 14
4: StackMap locals: com.sun.jdi.request.EventRequestManager java.util.List java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.sun.jdi.Field
astore 5
start local 5 5: aload 2
aload 5
invokeinterface com.sun.jdi.request.EventRequestManager.createModificationWatchpointRequest:(Lcom/sun/jdi/Field;)Lcom/sun/jdi/request/ModificationWatchpointRequest;
6: astore 6
start local 6 7: iconst_0
istore 7
start local 7 8: goto 11
9: StackMap locals: com.sun.jdi.Field com.sun.jdi.request.ModificationWatchpointRequest int
StackMap stack:
aload 6
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
iload 7
aaload
invokeinterface com.sun.jdi.request.ModificationWatchpointRequest.addClassExclusionFilter:(Ljava/lang/String;)V
10: iinc 7 1
StackMap locals:
StackMap stack:
11: iload 7
aload 0
getfield com.sun.tools.example.trace.EventThread.excludes:[Ljava/lang/String;
arraylength
if_icmplt 9
end local 7 12: aload 6
iconst_0
invokeinterface com.sun.jdi.request.ModificationWatchpointRequest.setSuspendPolicy:(I)V
13: aload 6
invokeinterface com.sun.jdi.request.ModificationWatchpointRequest.enable:()V
end local 6 end local 5 14: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 4 15: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/sun/tools/example/trace/EventThread;
0 16 1 event Lcom/sun/jdi/event/ClassPrepareEvent;
1 16 2 mgr Lcom/sun/jdi/request/EventRequestManager;
2 16 3 fields Ljava/util/List;
3 15 4 it Ljava/util/Iterator;
5 14 5 field Lcom/sun/jdi/Field;
7 14 6 req Lcom/sun/jdi/request/ModificationWatchpointRequest;
8 12 7 i I
MethodParameters:
Name Flags
event
private void exceptionEvent(com.sun.jdi.event.ExceptionEvent);
descriptor: (Lcom/sun/jdi/event/ExceptionEvent;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.example.trace.EventThread.traceMap:Ljava/util/Map;
aload 1
invokeinterface com.sun.jdi.event.ExceptionEvent.thread:()Lcom/sun/jdi/ThreadReference;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.example.trace.EventThread$ThreadTrace
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
aload 1
invokevirtual com.sun.tools.example.trace.EventThread$ThreadTrace.exceptionEvent:(Lcom/sun/jdi/event/ExceptionEvent;)V
3: StackMap locals: com.sun.tools.example.trace.EventThread$ThreadTrace
StackMap stack:
return
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;
0 4 1 event Lcom/sun/jdi/event/ExceptionEvent;
1 4 2 trace Lcom/sun/tools/example/trace/EventThread$ThreadTrace;
MethodParameters:
Name Flags
event
public void vmDeathEvent(com.sun.jdi.event.VMDeathEvent);
descriptor: (Lcom/sun/jdi/event/VMDeathEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
putfield com.sun.tools.example.trace.EventThread.vmDied:Z
1: aload 0
getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
ldc "-- The application exited --"
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;
0 3 1 event Lcom/sun/jdi/event/VMDeathEvent;
MethodParameters:
Name Flags
event
public void vmDisconnectEvent(com.sun.jdi.event.VMDisconnectEvent);
descriptor: (Lcom/sun/jdi/event/VMDisconnectEvent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iconst_0
putfield com.sun.tools.example.trace.EventThread.connected:Z
1: aload 0
getfield com.sun.tools.example.trace.EventThread.vmDied:Z
ifne 3
2: aload 0
getfield com.sun.tools.example.trace.EventThread.writer:Ljava/io/PrintWriter;
ldc "-- The application has been disconnected --"
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/tools/example/trace/EventThread;
0 4 1 event Lcom/sun/jdi/event/VMDisconnectEvent;
MethodParameters:
Name Flags
event
}
SourceFile: "EventThread.java"
NestMembers:
com.sun.tools.example.trace.EventThread$ThreadTrace
InnerClasses:
ThreadTrace = com.sun.tools.example.trace.EventThread$ThreadTrace of com.sun.tools.example.trace.EventThread