--- a/src/hotspot/share/services/memTracker.hpp Tue Mar 26 15:27:41 2019 -0400
+++ b/src/hotspot/share/services/memTracker.hpp Tue Mar 26 15:50:34 2019 -0400
@@ -82,6 +82,7 @@
#include "runtime/mutexLocker.hpp"
#include "runtime/threadCritical.hpp"
#include "services/mallocTracker.hpp"
+#include "services/threadStackTracker.hpp"
#include "services/virtualMemoryTracker.hpp"
extern volatile bool NMT_stack_walkable;
@@ -241,31 +242,19 @@
}
}
-#ifdef _AIX
- // See JDK-8202772 - temporarily disable thread stack tracking on AIX.
- static inline void record_thread_stack(void* addr, size_t size) {}
- static inline void release_thread_stack(void* addr, size_t size) {}
-#else
- static inline void record_thread_stack(void* addr, size_t size) {
+ static void record_thread_stack(void* addr, size_t size) {
if (tracking_level() < NMT_summary) return;
if (addr != NULL) {
- // uses thread stack malloc slot for book keeping number of threads
- MallocMemorySummary::record_malloc(0, mtThreadStack);
- record_virtual_memory_reserve(addr, size, CALLER_PC, mtThreadStack);
+ ThreadStackTracker::new_thread_stack((address)addr, size, CALLER_PC);
}
}
static inline void release_thread_stack(void* addr, size_t size) {
if (tracking_level() < NMT_summary) return;
if (addr != NULL) {
- // uses thread stack malloc slot for book keeping number of threads
- MallocMemorySummary::record_free(0, mtThreadStack);
- ThreadCritical tc;
- if (tracking_level() < NMT_summary) return;
- VirtualMemoryTracker::remove_released_region((address)addr, size);
+ ThreadStackTracker::delete_thread_stack((address)addr, size);
}
}
-#endif
// Query lock is used to synchronize the access to tracking data.
// So far, it is only used by JCmd query, but it may be used by