16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
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 }
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";
|
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
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.epsilon.*;
37 import sun.jvm.hotspot.gc.parallel.*;
38 import sun.jvm.hotspot.gc.shared.*;
39 import sun.jvm.hotspot.gc.g1.*;
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 }
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 EpsilonHeap) {
1113 anno = "Epsilon ";
1114 bad = false;
1115 } else {
1116 // Optimistically assume the oop isn't bad
1117 anno = "[Unknown generation] ";
1118 bad = false;
1119 }
1120
1121 if (!bad) {
1122 try {
1123 Oop oop = VM.getVM().getObjectHeap().newOop(handle);
1124 if (oop instanceof Instance) {
1125 // Java-level objects always have workable names
1126 anno = anno + oop.getKlass().getName().asString();
1127 } else {
1128 ByteArrayOutputStream bos = new ByteArrayOutputStream();
1129 Oop.printOopValueOn(oop, new PrintStream(bos));
1130 anno = anno + bos.toString();
1131 }
1132 }
1133 catch (AddressException e) {
1134 anno += "CORRUPT OOP";
|