public class sun.jvm.hotspot.ui.MonitorCacheDumpPanel extends javax.swing.JPanel
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.jvm.hotspot.ui.MonitorCacheDumpPanel
  super_class: javax.swing.JPanel
{
  private static sun.jvm.hotspot.runtime.Threads threads;
    descriptor: Lsun/jvm/hotspot/runtime/Threads;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static sun.jvm.hotspot.oops.ObjectHeap heap;
    descriptor: Lsun/jvm/hotspot/oops/ObjectHeap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 112
            invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
            invokevirtual sun.jvm.hotspot.runtime.VM.getThreads:()Lsun/jvm/hotspot/runtime/Threads;
            putstatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.threads:Lsun/jvm/hotspot/runtime/Threads;
         1: .line 113
            invokestatic sun.jvm.hotspot.runtime.VM.getVM:()Lsun/jvm/hotspot/runtime/VM;
            invokevirtual sun.jvm.hotspot.runtime.VM.getObjectHeap:()Lsun/jvm/hotspot/oops/ObjectHeap;
            putstatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.heap:Lsun/jvm/hotspot/oops/ObjectHeap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // sun.jvm.hotspot.ui.MonitorCacheDumpPanel this
         0: .line 41
            aload 0 /* this */
            invokespecial javax.swing.JPanel.<init>:()V
         1: .line 43
            aload 0 /* this */
            new java.awt.BorderLayout
            dup
            invokespecial java.awt.BorderLayout.<init>:()V
            invokevirtual sun.jvm.hotspot.ui.MonitorCacheDumpPanel.setLayout:(Ljava/awt/LayoutManager;)V
         2: .line 46
            new javax.swing.JScrollPane
            dup
            invokespecial javax.swing.JScrollPane.<init>:()V
            astore 1 /* scroller */
        start local 1 // javax.swing.JScrollPane scroller
         3: .line 47
            new javax.swing.JTextArea
            dup
            invokespecial javax.swing.JTextArea.<init>:()V
            astore 2 /* textArea */
        start local 2 // javax.swing.JTextArea textArea
         4: .line 48
            new javax.swing.JTextArea
            dup
            invokespecial javax.swing.JTextArea.<init>:()V
            astore 2 /* textArea */
         5: .line 49
            aload 2 /* textArea */
            iconst_0
            invokevirtual javax.swing.JTextArea.setEditable:(Z)V
         6: .line 50
            aload 2 /* textArea */
            iconst_1
            invokevirtual javax.swing.JTextArea.setLineWrap:(Z)V
         7: .line 51
            aload 2 /* textArea */
            iconst_1
            invokevirtual javax.swing.JTextArea.setWrapStyleWord:(Z)V
         8: .line 52
            aload 1 /* scroller */
            invokevirtual javax.swing.JScrollPane.getViewport:()Ljavax/swing/JViewport;
            aload 2 /* textArea */
            invokevirtual javax.swing.JViewport.add:(Ljava/awt/Component;)Ljava/awt/Component;
            pop
         9: .line 53
            aload 0 /* this */
            aload 1 /* scroller */
            ldc "Center"
            invokevirtual sun.jvm.hotspot.ui.MonitorCacheDumpPanel.add:(Ljava/awt/Component;Ljava/lang/Object;)V
        10: .line 55
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 3 /* bos */
        start local 3 // java.io.ByteArrayOutputStream bos
        11: .line 56
            new java.io.PrintStream
            dup
            aload 3 /* bos */
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 4 /* tty */
        start local 4 // java.io.PrintStream tty
        12: .line 57
            aload 4 /* tty */
            ldc "Monitor Cache Dump (not including JVMTI raw monitors):"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 58
            aload 4 /* tty */
            invokevirtual java.io.PrintStream.println:()V
        14: .line 59
            aload 0 /* this */
            aload 4 /* tty */
            invokevirtual sun.jvm.hotspot.ui.MonitorCacheDumpPanel.dumpOn:(Ljava/io/PrintStream;)V
        15: .line 61
            aload 2 /* textArea */
            aload 3 /* bos */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokevirtual javax.swing.JTextArea.setText:(Ljava/lang/String;)V
        16: .line 62
            return
        end local 4 // java.io.PrintStream tty
        end local 3 // java.io.ByteArrayOutputStream bos
        end local 2 // javax.swing.JTextArea textArea
        end local 1 // javax.swing.JScrollPane scroller
        end local 0 // sun.jvm.hotspot.ui.MonitorCacheDumpPanel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lsun/jvm/hotspot/ui/MonitorCacheDumpPanel;
            3   17     1  scroller  Ljavax/swing/JScrollPane;
            4   17     2  textArea  Ljavax/swing/JTextArea;
           11   17     3       bos  Ljava/io/ByteArrayOutputStream;
           12   17     4       tty  Ljava/io/PrintStream;

  private static void dumpMonitor(java.io.PrintStream, sun.jvm.hotspot.runtime.ObjectMonitor, boolean);
    descriptor: (Ljava/io/PrintStream;Lsun/jvm/hotspot/runtime/ObjectMonitor;Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // java.io.PrintStream tty
        start local 1 // sun.jvm.hotspot.runtime.ObjectMonitor mon
        start local 2 // boolean raw
         0: .line 65
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "ObjectMonitor@"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.getAddress:()Lsun/jvm/hotspot/debugger/Address;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         1: .line 66
            iload 2 /* raw */
            ifeq 2
            aload 0 /* tty */
            ldc "(Raw Monitor)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         2: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* tty */
            invokevirtual java.io.PrintStream.println:()V
         3: .line 68
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _header: 0x"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.header:()Lsun/jvm/hotspot/oops/Mark;
            invokevirtual sun.jvm.hotspot.oops.Mark.value:()J
            invokestatic java.lang.Long.toHexString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 69
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.object:()Lsun/jvm/hotspot/debugger/OopHandle;
            astore 3 /* obj */
        start local 3 // sun.jvm.hotspot.debugger.OopHandle obj
         5: .line 70
            getstatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.heap:Lsun/jvm/hotspot/oops/ObjectHeap;
            aload 3 /* obj */
            invokevirtual sun.jvm.hotspot.oops.ObjectHeap.newOop:(Lsun/jvm/hotspot/debugger/OopHandle;)Lsun/jvm/hotspot/oops/Oop;
            astore 4 /* oop */
        start local 4 // sun.jvm.hotspot.oops.Oop oop
         6: .line 71
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _object: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* obj */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", a "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* oop */
            invokevirtual sun.jvm.hotspot.oops.Oop.getKlass:()Lsun/jvm/hotspot/oops/Klass;
            invokevirtual sun.jvm.hotspot.oops.Klass.getName:()Lsun/jvm/hotspot/oops/Symbol;
            invokevirtual sun.jvm.hotspot.oops.Symbol.asString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 72
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.owner:()Lsun/jvm/hotspot/debugger/Address;
            astore 5 /* owner */
        start local 5 // sun.jvm.hotspot.debugger.Address owner
         8: .line 73
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _owner: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* owner */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 74
            iload 2 /* raw */
            ifne 18
            aload 5 /* owner */
            ifnull 18
        10: .line 75
            getstatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.threads:Lsun/jvm/hotspot/runtime/Threads;
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.Threads.owningThreadFromMonitor:(Lsun/jvm/hotspot/runtime/ObjectMonitor;)Lsun/jvm/hotspot/runtime/JavaThread;
            astore 6 /* thread */
        start local 6 // sun.jvm.hotspot.runtime.JavaThread thread
        11: .line 76
            aload 6 /* thread */
            ifnull 18
        12: .line 77
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "    owning thread: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.getThreadName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 78
            aload 6 /* thread */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.getAddress:()Lsun/jvm/hotspot/debugger/Address;
            aload 5 /* owner */
            invokeinterface sun.jvm.hotspot.debugger.Address.equals:(Ljava/lang/Object;)Z
            ifne 18
        14: .line 79
            aload 6 /* thread */
            aload 5 /* owner */
            invokevirtual sun.jvm.hotspot.runtime.JavaThread.isLockOwned:(Lsun/jvm/hotspot/debugger/Address;)Z
            ifne 18
        15: .line 80
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "    WARNING! _owner doesn't fall in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* thread */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        16: .line 81
            ldc "'s stack space"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 80
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // sun.jvm.hotspot.runtime.JavaThread thread
        18: .line 86
      StackMap locals: sun.jvm.hotspot.debugger.OopHandle sun.jvm.hotspot.oops.Oop sun.jvm.hotspot.debugger.Address
      StackMap stack:
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _contentions: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.contentions:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 87
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _waiters: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.waiters:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 88
            aload 0 /* tty */
            new java.lang.StringBuilder
            dup
            ldc "  _recursions: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.recursions:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 89
            return
        end local 5 // sun.jvm.hotspot.debugger.Address owner
        end local 4 // sun.jvm.hotspot.oops.Oop oop
        end local 3 // sun.jvm.hotspot.debugger.OopHandle obj
        end local 2 // boolean raw
        end local 1 // sun.jvm.hotspot.runtime.ObjectMonitor mon
        end local 0 // java.io.PrintStream tty
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0     tty  Ljava/io/PrintStream;
            0   22     1     mon  Lsun/jvm/hotspot/runtime/ObjectMonitor;
            0   22     2     raw  Z
            5   22     3     obj  Lsun/jvm/hotspot/debugger/OopHandle;
            6   22     4     oop  Lsun/jvm/hotspot/oops/Oop;
            8   22     5   owner  Lsun/jvm/hotspot/debugger/Address;
           11   18     6  thread  Lsun/jvm/hotspot/runtime/JavaThread;
    MethodParameters:
      Name  Flags
      tty   
      mon   
      raw   

  private void dumpOn(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // sun.jvm.hotspot.ui.MonitorCacheDumpPanel this
        start local 1 // java.io.PrintStream tty
         0: .line 92
            invokestatic sun.jvm.hotspot.runtime.ObjectSynchronizer.objectMonitorIterator:()Ljava/util/Iterator;
            astore 2 /* i */
        start local 2 // java.util.Iterator i
         1: .line 93
            aload 2 /* i */
            ifnonnull 12
         2: .line 94
            aload 1 /* tty */
            ldc "This version of HotSpot VM doesn't support monitor cache dump."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 95
            aload 1 /* tty */
            ldc "You need 1.4.0_04, 1.4.1_01 or later versions"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 96
            return
         5: .line 100
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 2 /* i */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.jvm.hotspot.runtime.ObjectMonitor
            astore 3 /* mon */
        start local 3 // sun.jvm.hotspot.runtime.ObjectMonitor mon
         6: .line 101
            aload 3 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.contentions:()I
            ifne 7
            aload 3 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.waiters:()I
            ifne 7
            aload 3 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.owner:()Lsun/jvm/hotspot/debugger/Address;
            ifnull 12
         7: .line 102
      StackMap locals: sun.jvm.hotspot.runtime.ObjectMonitor
      StackMap stack:
            aload 3 /* mon */
            invokevirtual sun.jvm.hotspot.runtime.ObjectMonitor.object:()Lsun/jvm/hotspot/debugger/OopHandle;
            astore 4 /* object */
        start local 4 // sun.jvm.hotspot.debugger.OopHandle object
         8: .line 103
            aload 4 /* object */
            ifnonnull 11
         9: .line 104
            aload 1 /* tty */
            aload 3 /* mon */
            iconst_1
            invokestatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.dumpMonitor:(Ljava/io/PrintStream;Lsun/jvm/hotspot/runtime/ObjectMonitor;Z)V
        10: .line 105
            goto 12
        11: .line 106
      StackMap locals: sun.jvm.hotspot.debugger.OopHandle
      StackMap stack:
            aload 1 /* tty */
            aload 3 /* mon */
            iconst_0
            invokestatic sun.jvm.hotspot.ui.MonitorCacheDumpPanel.dumpMonitor:(Ljava/io/PrintStream;Lsun/jvm/hotspot/runtime/ObjectMonitor;Z)V
        end local 4 // sun.jvm.hotspot.debugger.OopHandle object
        end local 3 // sun.jvm.hotspot.runtime.ObjectMonitor mon
        12: .line 99
      StackMap locals:
      StackMap stack:
            aload 2 /* i */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        13: .line 110
            return
        end local 2 // java.util.Iterator i
        end local 1 // java.io.PrintStream tty
        end local 0 // sun.jvm.hotspot.ui.MonitorCacheDumpPanel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lsun/jvm/hotspot/ui/MonitorCacheDumpPanel;
            0   14     1     tty  Ljava/io/PrintStream;
            1   14     2       i  Ljava/util/Iterator;
            6   12     3     mon  Lsun/jvm/hotspot/runtime/ObjectMonitor;
            8   12     4  object  Lsun/jvm/hotspot/debugger/OopHandle;
    MethodParameters:
      Name  Flags
      tty   
}
SourceFile: "MonitorCacheDumpPanel.java"