From a41ebc645aa8ce76aabaede68d5ab1eb70abf096 Mon Sep 17 00:00:00 2001 From: Kim Barrett Date: Mon, 7 Aug 2017 18:50:14 -0400 Subject: [PATCH] 8185746: Remove Mutex destructor assertion Remove unneeded ~Mutex(), improve assertion msg in ~Monitor. Reviewed-by: dholmes, coleenp, tschatzl --- hotspot/src/share/vm/runtime/mutex.cpp | 11 +++++------ hotspot/src/share/vm/runtime/mutex.hpp | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/hotspot/src/share/vm/runtime/mutex.cpp b/hotspot/src/share/vm/runtime/mutex.cpp index 629325d25e8..b04d185bd8e 100644 --- a/hotspot/src/share/vm/runtime/mutex.cpp +++ b/hotspot/src/share/vm/runtime/mutex.cpp @@ -1159,9 +1159,12 @@ Monitor::~Monitor() { uintptr_t entrylist = UNS(_EntryList); uintptr_t waitset = UNS(_WaitSet); uintptr_t ondeck = UNS(_OnDeck); + // Print _name with precision limit, in case failure is due to memory + // corruption that also trashed _name. assert((owner|lockword|entrylist|waitset|ondeck) == 0, - "_owner(" INTPTR_FORMAT ")|_LockWord(" INTPTR_FORMAT ")|_EntryList(" INTPTR_FORMAT ")|_WaitSet(" - INTPTR_FORMAT ")|_OnDeck(" INTPTR_FORMAT ") != 0", owner, lockword, entrylist, waitset, ondeck); + "%.*s: _owner(" INTPTR_FORMAT ")|_LockWord(" INTPTR_FORMAT ")|_EntryList(" INTPTR_FORMAT ")|_WaitSet(" + INTPTR_FORMAT ")|_OnDeck(" INTPTR_FORMAT ") != 0", + MONITOR_NAME_LEN, _name, owner, lockword, entrylist, waitset, ondeck); #endif } @@ -1193,10 +1196,6 @@ Monitor::Monitor(int Rank, const char * name, bool allow_vm_block, #endif } -Mutex::~Mutex() { - assert((UNS(_owner)|UNS(_LockWord.FullWord)|UNS(_EntryList)|UNS(_WaitSet)|UNS(_OnDeck)) == 0, ""); -} - Mutex::Mutex(int Rank, const char * name, bool allow_vm_block, SafepointCheckRequired safepoint_check_required) { ClearMonitor((Monitor *) this, name); diff --git a/hotspot/src/share/vm/runtime/mutex.hpp b/hotspot/src/share/vm/runtime/mutex.hpp index 136d37d7528..2e46948e99d 100644 --- a/hotspot/src/share/vm/runtime/mutex.hpp +++ b/hotspot/src/share/vm/runtime/mutex.hpp @@ -303,7 +303,7 @@ class Mutex : public Monitor { // degenerate Monitor public: Mutex(int rank, const char *name, bool allow_vm_block = false, SafepointCheckRequired safepoint_check_required = _safepoint_check_always); - ~Mutex () ; + // default destructor private: bool notify () { ShouldNotReachHere(); return false; } bool notify_all() { ShouldNotReachHere(); return false; }