19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot;
26
27 import java.io.*;
28 import java.awt.*;
29 import java.awt.event.*;
30 import javax.swing.*;
31 import java.util.*;
32
33 import sun.jvm.hotspot.code.*;
34 import sun.jvm.hotspot.compiler.*;
35 import sun.jvm.hotspot.debugger.*;
36 import sun.jvm.hotspot.gc.parallel.*;
37 import sun.jvm.hotspot.gc.shared.*;
38 import sun.jvm.hotspot.gc.g1.*;
39 import sun.jvm.hotspot.interpreter.*;
40 import sun.jvm.hotspot.memory.*;
41 import sun.jvm.hotspot.oops.*;
42 import sun.jvm.hotspot.runtime.*;
43 import sun.jvm.hotspot.ui.*;
44 import sun.jvm.hotspot.ui.tree.*;
45 import sun.jvm.hotspot.ui.classbrowser.*;
46 import sun.jvm.hotspot.utilities.*;
47
48 /** The top-level HotSpot Debugger. FIXME: make this an embeddable
49 component! (Among other things, figure out what to do with the
50 menu bar...) */
51
52 public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
53 public static void main(String[] args) {
54 new HSDB(args).run();
55 }
56
57 //--------------------------------------------------------------------------------
58 // Internals only below this point
1091 bad = false;
1092 } else if (region.isHumongous()) {
1093 anno = "Humongous ";
1094 bad = false;
1095 } else if (region.isPinned()) {
1096 anno = "Pinned ";
1097 bad = false;
1098 } else if (region.isOld()) {
1099 anno = "Old ";
1100 bad = false;
1101 }
1102 } else if (collHeap instanceof ParallelScavengeHeap) {
1103 ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
1104 if (heap.youngGen().isIn(handle)) {
1105 anno = "PSYoungGen ";
1106 bad = false;
1107 } else if (heap.oldGen().isIn(handle)) {
1108 anno = "PSOldGen ";
1109 bad = false;
1110 }
1111 } else {
1112 // Optimistically assume the oop isn't bad
1113 anno = "[Unknown generation] ";
1114 bad = false;
1115 }
1116
1117 if (!bad) {
1118 try {
1119 Oop oop = VM.getVM().getObjectHeap().newOop(handle);
1120 if (oop instanceof Instance) {
1121 // Java-level objects always have workable names
1122 anno = anno + oop.getKlass().getName().asString();
1123 } else {
1124 ByteArrayOutputStream bos = new ByteArrayOutputStream();
1125 Oop.printOopValueOn(oop, new PrintStream(bos));
1126 anno = anno + bos.toString();
1127 }
1128 }
1129 catch (AddressException e) {
1130 anno += "CORRUPT OOP";
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot;
26
27 import java.io.*;
28 import java.awt.*;
29 import java.awt.event.*;
30 import javax.swing.*;
31 import java.util.*;
32
33 import sun.jvm.hotspot.code.*;
34 import sun.jvm.hotspot.compiler.*;
35 import sun.jvm.hotspot.debugger.*;
36 import sun.jvm.hotspot.gc.parallel.*;
37 import sun.jvm.hotspot.gc.shared.*;
38 import sun.jvm.hotspot.gc.g1.*;
39 import sun.jvm.hotspot.gc.z.*;
40 import sun.jvm.hotspot.interpreter.*;
41 import sun.jvm.hotspot.memory.*;
42 import sun.jvm.hotspot.oops.*;
43 import sun.jvm.hotspot.runtime.*;
44 import sun.jvm.hotspot.ui.*;
45 import sun.jvm.hotspot.ui.tree.*;
46 import sun.jvm.hotspot.ui.classbrowser.*;
47 import sun.jvm.hotspot.utilities.*;
48
49 /** The top-level HotSpot Debugger. FIXME: make this an embeddable
50 component! (Among other things, figure out what to do with the
51 menu bar...) */
52
53 public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
54 public static void main(String[] args) {
55 new HSDB(args).run();
56 }
57
58 //--------------------------------------------------------------------------------
59 // Internals only below this point
1092 bad = false;
1093 } else if (region.isHumongous()) {
1094 anno = "Humongous ";
1095 bad = false;
1096 } else if (region.isPinned()) {
1097 anno = "Pinned ";
1098 bad = false;
1099 } else if (region.isOld()) {
1100 anno = "Old ";
1101 bad = false;
1102 }
1103 } else if (collHeap instanceof ParallelScavengeHeap) {
1104 ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
1105 if (heap.youngGen().isIn(handle)) {
1106 anno = "PSYoungGen ";
1107 bad = false;
1108 } else if (heap.oldGen().isIn(handle)) {
1109 anno = "PSOldGen ";
1110 bad = false;
1111 }
1112 } else if (collHeap instanceof ZCollectedHeap) {
1113 ZCollectedHeap heap = (ZCollectedHeap) collHeap;
1114 anno ="ZHeap";
1115 bad = false;
1116 } else {
1117 // Optimistically assume the oop isn't bad
1118 anno = "[Unknown generation] ";
1119 bad = false;
1120 }
1121
1122 if (!bad) {
1123 try {
1124 Oop oop = VM.getVM().getObjectHeap().newOop(handle);
1125 if (oop instanceof Instance) {
1126 // Java-level objects always have workable names
1127 anno = anno + oop.getKlass().getName().asString();
1128 } else {
1129 ByteArrayOutputStream bos = new ByteArrayOutputStream();
1130 Oop.printOopValueOn(oop, new PrintStream(bos));
1131 anno = anno + bos.toString();
1132 }
1133 }
1134 catch (AddressException e) {
1135 anno += "CORRUPT OOP";
|