< prev index next >

src/hotspot/share/services/memTracker.hpp

Print this page
rev 50440 : [mq]: 8202772-NMT-erroneously-assumes-thread-stack-boundaries-to-be-page-aligned

@@ -112,11 +112,10 @@
   ThreadCritical    _tc;
 };
 
 class MemTracker : AllStatic {
   friend class VirtualMemoryTrackerTest;
-
  public:
   static inline NMT_TrackingLevel tracking_level() {
     if (_tracking_level == NMT_unknown) {
       // No fencing is needed here, since JVM is in single-threaded
       // mode.

@@ -239,29 +238,13 @@
       if (tracking_level() < NMT_summary) return;
       VirtualMemoryTracker::set_reserved_region_type((address)addr, flag);
     }
   }
 
-  static inline 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);
-    }
-  }
+  static void record_thread_stack(void* addr, size_t size);
 
-  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);
-    }
-  }
+  static void release_thread_stack(void* addr, size_t size);
 
   // 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
   // other tools.
   static inline Mutex* query_lock() { return _query_lock; }
< prev index next >