comparison agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java @ 8756:686916dc0439

8009457: SA: A small fix on "scanoops" command in CLHSDB Reviewed-by: sla, coleenp, kmo Contributed-by: yunda.mly@taobao.com
author sla
date Tue, 19 Mar 2013 13:44:26 +0100
parents 39432a1cefdd
children 38ea2efa32a7
comparison
equal deleted inserted replaced
8755:117bb0519114 8756:686916dc0439
22 * 22 *
23 */ 23 */
24 24
25 package sun.jvm.hotspot; 25 package sun.jvm.hotspot;
26 26
27 import java.io.*; 27 import java.io.BufferedOutputStream;
28 import java.math.*; 28 import java.io.BufferedReader;
29 import java.util.*; 29 import java.io.ByteArrayOutputStream;
30 import java.util.regex.*; 30 import java.io.FileInputStream;
31 31 import java.io.FileOutputStream;
32 import sun.jvm.hotspot.types.Type; 32 import java.io.IOException;
33 import sun.jvm.hotspot.types.Field; 33 import java.io.InputStreamReader;
34 import sun.jvm.hotspot.HotSpotTypeDataBase; 34 import java.io.PrintStream;
35 import sun.jvm.hotspot.types.basic.BasicType; 35 import java.util.ArrayList;
36 import sun.jvm.hotspot.types.basic.BasicTypeDataBase; 36 import java.util.Arrays;
37 import sun.jvm.hotspot.types.CIntegerType; 37 import java.util.Comparator;
38 import sun.jvm.hotspot.code.*; 38 import java.util.HashMap;
39 import sun.jvm.hotspot.compiler.*; 39 import java.util.HashSet;
40 import sun.jvm.hotspot.debugger.*; 40 import java.util.Iterator;
41 import sun.jvm.hotspot.interpreter.*; 41 import java.util.Stack;
42 import sun.jvm.hotspot.memory.*; 42 import java.util.regex.Matcher;
43 import sun.jvm.hotspot.oops.*; 43 import java.util.regex.Pattern;
44 import sun.jvm.hotspot.opto.*; 44
45 import sun.jvm.hotspot.ci.*; 45 import sun.jvm.hotspot.ci.ciEnv;
46 import sun.jvm.hotspot.asm.*; 46 import sun.jvm.hotspot.code.CodeBlob;
47 import sun.jvm.hotspot.runtime.*; 47 import sun.jvm.hotspot.code.CodeCacheVisitor;
48 import sun.jvm.hotspot.utilities.*; 48 import sun.jvm.hotspot.code.NMethod;
49 import sun.jvm.hotspot.utilities.soql.*; 49 import sun.jvm.hotspot.debugger.Address;
50 import sun.jvm.hotspot.ui.classbrowser.*; 50 import sun.jvm.hotspot.debugger.OopHandle;
51 import sun.jvm.hotspot.ui.tree.*; 51 import sun.jvm.hotspot.memory.SymbolTable;
52 import sun.jvm.hotspot.tools.*; 52 import sun.jvm.hotspot.memory.SystemDictionary;
53 import sun.jvm.hotspot.memory.Universe;
54 import sun.jvm.hotspot.oops.DefaultHeapVisitor;
55 import sun.jvm.hotspot.oops.HeapVisitor;
56 import sun.jvm.hotspot.oops.InstanceKlass;
57 import sun.jvm.hotspot.oops.Klass;
58 import sun.jvm.hotspot.oops.Metadata;
59 import sun.jvm.hotspot.oops.Method;
60 import sun.jvm.hotspot.oops.MethodData;
61 import sun.jvm.hotspot.oops.Oop;
62 import sun.jvm.hotspot.oops.RawHeapVisitor;
63 import sun.jvm.hotspot.oops.Symbol;
64 import sun.jvm.hotspot.oops.UnknownOopException;
65 import sun.jvm.hotspot.opto.Compile;
66 import sun.jvm.hotspot.opto.InlineTree;
67 import sun.jvm.hotspot.runtime.CompiledVFrame;
68 import sun.jvm.hotspot.runtime.CompilerThread;
69 import sun.jvm.hotspot.runtime.JavaThread;
70 import sun.jvm.hotspot.runtime.JavaVFrame;
71 import sun.jvm.hotspot.runtime.Threads;
72 import sun.jvm.hotspot.runtime.VM;
53 import sun.jvm.hotspot.tools.ObjectHistogram; 73 import sun.jvm.hotspot.tools.ObjectHistogram;
74 import sun.jvm.hotspot.tools.PMap;
75 import sun.jvm.hotspot.tools.PStack;
54 import sun.jvm.hotspot.tools.StackTrace; 76 import sun.jvm.hotspot.tools.StackTrace;
55 import sun.jvm.hotspot.tools.jcore.ClassDump; 77 import sun.jvm.hotspot.tools.jcore.ClassDump;
56 import sun.jvm.hotspot.tools.jcore.ClassFilter; 78 import sun.jvm.hotspot.tools.jcore.ClassFilter;
79 import sun.jvm.hotspot.types.CIntegerType;
80 import sun.jvm.hotspot.types.Field;
81 import sun.jvm.hotspot.types.Type;
82 import sun.jvm.hotspot.types.basic.BasicType;
83 import sun.jvm.hotspot.ui.classbrowser.HTMLGenerator;
84 import sun.jvm.hotspot.ui.tree.CTypeTreeNodeAdapter;
85 import sun.jvm.hotspot.ui.tree.OopTreeNodeAdapter;
86 import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
87 import sun.jvm.hotspot.utilities.AddressOps;
88 import sun.jvm.hotspot.utilities.Assert;
89 import sun.jvm.hotspot.utilities.HeapProgressThunk;
90 import sun.jvm.hotspot.utilities.LivenessPathElement;
91 import sun.jvm.hotspot.utilities.MethodArray;
92 import sun.jvm.hotspot.utilities.ObjectReader;
93 import sun.jvm.hotspot.utilities.PointerFinder;
94 import sun.jvm.hotspot.utilities.PointerLocation;
95 import sun.jvm.hotspot.utilities.ReversePtrs;
96 import sun.jvm.hotspot.utilities.ReversePtrsAnalysis;
97 import sun.jvm.hotspot.utilities.RobustOopDeterminator;
98 import sun.jvm.hotspot.utilities.SystemDictionaryHelper;
99 import sun.jvm.hotspot.utilities.soql.JSJavaFactory;
100 import sun.jvm.hotspot.utilities.soql.JSJavaFactoryImpl;
101 import sun.jvm.hotspot.utilities.soql.JSJavaScriptEngine;
57 102
58 public class CommandProcessor { 103 public class CommandProcessor {
59 public abstract static class DebuggerInterface { 104 public abstract static class DebuggerInterface {
60 public abstract HotSpotAgent getAgent(); 105 public abstract HotSpotAgent getAgent();
61 public abstract boolean isAttached(); 106 public abstract boolean isAttached();
1130 Address base = VM.getVM().getDebugger().parseAddress(t.nextToken()); 1175 Address base = VM.getVM().getDebugger().parseAddress(t.nextToken());
1131 Address end = VM.getVM().getDebugger().parseAddress(t.nextToken()); 1176 Address end = VM.getVM().getDebugger().parseAddress(t.nextToken());
1132 Klass klass = null; 1177 Klass klass = null;
1133 if (t.countTokens() == 1) { 1178 if (t.countTokens() == 1) {
1134 klass = SystemDictionaryHelper.findInstanceKlass(t.nextToken()); 1179 klass = SystemDictionaryHelper.findInstanceKlass(t.nextToken());
1180 if (klass == null) {
1181 out.println("No such type.");
1182 return;
1183 }
1135 } 1184 }
1136 while (base != null && base.lessThan(end)) { 1185 while (base != null && base.lessThan(end)) {
1137 long step = stride; 1186 long step = stride;
1138 OopHandle handle = base.addOffsetToAsOopHandle(0); 1187 OopHandle handle = base.addOffsetToAsOopHandle(0);
1139 if (RobustOopDeterminator.oopLooksValid(handle)) { 1188 if (RobustOopDeterminator.oopLooksValid(handle)) {