/** Reports the state of a heavy-weight lock, via {@link VM#sysWrite}. */ private void dump() { if (!active) { return; } VM.sysWrite("Lock "); VM.sysWriteInt(index); VM.sysWrite(":\n"); VM.sysWrite(" lockedObject: "); VM.sysWriteHex(Magic.objectAsAddress(lockedObject)); VM.sysWrite(" thin lock = "); VM.sysWriteHex( Magic.objectAsAddress(lockedObject).loadAddress(ObjectModel.defaultThinLockOffset())); VM.sysWrite(" object type = "); VM.sysWrite(Magic.getObjectType(lockedObject).getDescriptor()); VM.sysWriteln(); VM.sysWrite(" ownerId: "); VM.sysWriteInt(ownerId); VM.sysWrite(" ("); VM.sysWriteInt(ownerId >>> ThinLockConstants.TL_THREAD_ID_SHIFT); VM.sysWrite(") recursionCount: "); VM.sysWriteInt(recursionCount); VM.sysWriteln(); dumpBlockedThreads(); dumpWaitingThreads(); VM.sysWrite(" mutexLatestContender: "); if (mutex.latestContender == null) { VM.sysWrite("<null>"); } else { VM.sysWriteInt(mutex.latestContender.getThreadSlot()); } VM.sysWrite("\n"); }