extra check for JRE-937

This commit is contained in:
Egor Ushakov
2018-09-05 12:01:46 +03:00
parent 35686d3bd6
commit 6d3faa7b9d
@@ -157,14 +157,17 @@ public class ThreadDumpAction extends AnAction implements AnAction.TransparentUp
hasEmptyStack = frames.size() == 0;
final TIntObjectHashMap<List<ObjectReference>> lockedAt = new TIntObjectHashMap<>();
if (vmProxy.canGetMonitorFrameInfo() && vmProxy.canBeModified()) {
for (MonitorInfo info : threadReference.ownedMonitorsAndFrames()) {
final int stackDepth = info.stackDepth();
List<ObjectReference> monitors;
if ((monitors = lockedAt.get(stackDepth)) == null) {
lockedAt.put(stackDepth, monitors = new SmartList<>());
if (vmProxy.canGetMonitorFrameInfo()) {
for (Object m : threadReference.ownedMonitorsAndFrames()) {
if (m instanceof MonitorInfo) { // see JRE-937
MonitorInfo info = (MonitorInfo)m;
final int stackDepth = info.stackDepth();
List<ObjectReference> monitors;
if ((monitors = lockedAt.get(stackDepth)) == null) {
lockedAt.put(stackDepth, monitors = new SmartList<>());
}
monitors.add(info.monitor());
}
monitors.add(info.monitor());
}
}