From e012a77fba834b6b9f4da96ba336fe5bec75941e Mon Sep 17 00:00:00 2001 From: Severin Gehwolf Date: Mon, 7 Aug 2017 12:19:17 +0200 Subject: [PATCH 1/2] 8185900: hotspot build failed with gcc version Red Hat 4.4.7-3 Cast to void* within DTRACE_CLASS* macros. Reviewed-by: coleenp, shade --- hotspot/src/share/vm/oops/instanceKlass.cpp | 4 ++-- hotspot/src/share/vm/services/classLoadingService.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hotspot/src/share/vm/oops/instanceKlass.cpp b/hotspot/src/share/vm/oops/instanceKlass.cpp index 19070cc6ff6..a473dd89de6 100644 --- a/hotspot/src/share/vm/oops/instanceKlass.cpp +++ b/hotspot/src/share/vm/oops/instanceKlass.cpp @@ -101,7 +101,7 @@ len = clss_name->utf8_length(); \ } \ HOTSPOT_CLASS_INITIALIZATION_##type( \ - data, len, class_loader(), thread_type); \ + data, len, (void*)class_loader(), thread_type); \ } #define DTRACE_CLASSINIT_PROBE_WAIT(type, thread_type, wait) \ @@ -114,7 +114,7 @@ len = clss_name->utf8_length(); \ } \ HOTSPOT_CLASS_INITIALIZATION_##type( \ - data, len, class_loader(), thread_type, wait); \ + data, len, (void*)class_loader(), thread_type, wait); \ } #else // ndef DTRACE_ENABLED diff --git a/hotspot/src/share/vm/services/classLoadingService.cpp b/hotspot/src/share/vm/services/classLoadingService.cpp index dd9e9c72217..276afe81c99 100644 --- a/hotspot/src/share/vm/services/classLoadingService.cpp +++ b/hotspot/src/share/vm/services/classLoadingService.cpp @@ -53,7 +53,7 @@ len = name->utf8_length(); \ } \ HOTSPOT_CLASS_##type( /* type = unloaded, loaded */ \ - data, len, (clss)->class_loader(), (shared)); \ + data, len, (void*)(clss)->class_loader(), (shared)); \ } #else // ndef DTRACE_ENABLED From a41ebc645aa8ce76aabaede68d5ab1eb70abf096 Mon Sep 17 00:00:00 2001 From: Kim Barrett Date: Mon, 7 Aug 2017 18:50:14 -0400 Subject: [PATCH 2/2] 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; }