# HG changeset patch # Parent d7f59f89b091b071afaa3973ebfe5b8686f3d5c8 diff --git a/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java b/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java --- a/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java +++ b/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java @@ -219,7 +219,7 @@ if (threadNameField == null) { SystemDictionary sysDict = VM.getVM().getSystemDictionary(); InstanceKlass k = sysDict.getThreadKlass(); - threadNameField = (OopField) k.findField("name", "[C"); + threadNameField = (OopField) k.findField("name", "Ljava/lang/String;"); threadGroupField = (OopField) k.findField("group", "Ljava/lang/ThreadGroup;"); threadEETopField = (LongField) k.findField("eetop", "J"); threadTIDField = (LongField) k.findField("tid", "J"); @@ -258,7 +258,7 @@ public static String threadOopGetName(Oop threadOop) { initThreadFields(); - return charArrayToString((TypeArray) threadNameField.getValue(threadOop)); + return stringOopToString(threadNameField.getValue(threadOop)); } /** May return null if, e.g., thread was not started */ diff --git a/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java b/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java --- a/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java +++ b/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java @@ -71,17 +71,17 @@ concLocksPrinter = new ConcurrentLocksPrinter(); } Threads threads = VM.getVM().getThreads(); - int i = 1; - for (JavaThread cur = threads.first(); cur != null; cur = cur.next(), i++) { + for (JavaThread cur = threads.first(); cur != null; cur = cur.next()) { + tty.print("Thread "); + tty.print("\"" + cur.getThreadName() + "\" "); + cur.printThreadIDOn(tty); + tty.print(": (state = " + cur.getThreadState()); + Address sp = cur.getLastJavaSP(); + if (verbose) { + tty.println(", current Java SP = " + sp); + } + tty.println(')'); if (cur.isJavaThread()) { - Address sp = cur.getLastJavaSP(); - tty.print("Thread "); - cur.printThreadIDOn(tty); - tty.print(": (state = " + cur.getThreadState()); - if (verbose) { - tty.println(", current Java SP = " + sp); - } - tty.println(')'); try { for (JavaVFrame vf = cur.getLastJavaVFrameDbg(); vf != null; vf = vf.javaSender()) { Method method = vf.getMethod(); @@ -121,12 +121,12 @@ tty.println("Error occurred during stack walking:"); e.printStackTrace(); } - tty.println(); if (concurrentLocks) { + tty.println(); concLocksPrinter.print(cur, tty); } - tty.println(); } + tty.println(); } } catch (AddressException e) {