< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/StackTrace.java

Print this page

        

*** 29,38 **** --- 29,43 ---- import sun.jvm.hotspot.oops.*; /** Traverses and prints the stack traces for all Java threads in the * remote VM */ public class StackTrace extends Tool { + + private static final String ADDRESS_FORMAT = VM.getVM().isLP64() ? "0x%016x" : "0x%08x"; + + private static final String LOCK_OUTPUT = " - locked <" + ADDRESS_FORMAT + "> (a %s)"; + // in non-verbose mode pc, sp and Method* are not printed public StackTrace(boolean v, boolean concurrentLocks) { this.verbose = v; this.concurrentLocks = concurrentLocks; }
*** 107,116 **** --- 112,127 ---- if (vf.mayBeImpreciseDbg()) { tty.print("; information may be imprecise"); } tty.println(")"); + + vf.getMonitors() + .stream() + .map(m -> m.ownerIsScalarReplaced() ? m.ownerKlass() : m.owner()) + .map(m -> String.format(LOCK_OUTPUT, m.asLongValue(), Oop.getKlassForOopHandle(m).getName().asString().replace('/', '.'))) + .forEach(tty::println); } } catch (Exception e) { tty.println("Error occurred during stack walking:"); e.printStackTrace(); }
< prev index next >