agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Fri Sep  9 14:15:57 2011
--- new/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Fri Sep  9 14:15:57 2011

*** 110,119 **** --- 110,145 ---- buf.append(charArray.getCharAt(i)); } return buf.toString(); } + public static String escapeString(String s) { + StringBuilder sb = null; + for (int index = 0; index < s.length(); index++) { + char value = s.charAt(index); + if (value >= 32 && value < 127 || value == '\'' || value == '\\') { + if (sb != null) { + sb.append(value); + } + } else { + if (sb == null) { + sb = new StringBuilder(s.length() * 2); + sb.append(s, 0, index); + } + sb.append("\\u"); + if (value < 0x10) sb.append("000"); + else if (value < 0x100) sb.append("00"); + else if (value < 0x1000) sb.append("0"); + sb.append(Integer.toHexString(value)); + } + } + if (sb != null) { + return sb.toString(); + } + return s; + } + public static String stringOopToString(Oop stringOop) { if (offsetField == null) { InstanceKlass k = (InstanceKlass) stringOop.getKlass(); offsetField = (IntField) k.findField("offset", "I"); countField = (IntField) k.findField("count", "I");
*** 127,136 **** --- 153,166 ---- return charArrayToString((TypeArray) valueField.getValue(stringOop), offsetField.getValue(stringOop), countField.getValue(stringOop)); } + public static String stringOopToEscapedString(Oop stringOop) { + return escapeString(stringOopToString(stringOop)); + } + private static void initThreadGroupFields() { if (threadGroupParentField == null) { SystemDictionary sysDict = VM.getVM().getSystemDictionary(); InstanceKlass k = sysDict.getThreadGroupKlass(); threadGroupParentField = (OopField) k.findField("parent", "Ljava/lang/ThreadGroup;");

agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File