src/share/vm/services/memTracker.hpp
Print this page
rev 3953 : JDK-8005012: Add WB APIs to better support NMT testing
Summary:
*** 89,101 ****
static bool print_memory_usage(BaselineOutputer& out, size_t unit,
bool summary_only = true) { }
static bool compare_memory_usage(BaselineOutputer& out, size_t unit,
bool summary_only = true) { }
static inline void sync() { }
static inline void thread_exiting(JavaThread* thread) { }
-
};
#else // !INCLUDE_NMT
--- 89,102 ----
static bool print_memory_usage(BaselineOutputer& out, size_t unit,
bool summary_only = true) { }
static bool compare_memory_usage(BaselineOutputer& out, size_t unit,
bool summary_only = true) { }
+ static bool wbtest_wait_for_data_merge() { }
+
static inline void sync() { }
static inline void thread_exiting(JavaThread* thread) { }
};
#else // !INCLUDE_NMT
*** 109,118 ****
--- 110,123 ----
#include "services/memSnapshot.hpp"
#include "services/memTrackWorker.hpp"
extern bool NMT_track_callsite;
+ #ifndef MAX_UNSIGNED_LONG
+ #define MAX_UNSIGNED_LONG (unsigned long)(-1)
+ #endif
+
#ifdef ASSERT
#define DEBUG_CALLER_PC (NMT_track_callsite ? os::get_caller_pc(2) : 0)
#else
#define DEBUG_CALLER_PC 0
#endif
*** 378,387 ****
--- 383,397 ----
bool summary_only = true);
// compare memory usage between current snapshot and baseline
static bool compare_memory_usage(BaselineOutputer& out, size_t unit,
bool summary_only = true);
+ // the version for whitebox testing support, it ensures that all memory
+ // activities before this method call, are reflected in the snapshot
+ // database.
+ static bool wbtest_wait_for_data_merge();
+
// sync is called within global safepoint to synchronize nmt data
static void sync();
// called when a thread is about to exit
static void thread_exiting(JavaThread* thread);
*** 430,439 ****
--- 440,458 ----
static void create_memory_record(address addr, MEMFLAGS type,
size_t size, address pc, Thread* thread);
static void create_record_in_recorder(address addr, MEMFLAGS type,
size_t size, address pc, JavaThread* thread);
+ static void set_current_processing_generation(unsigned long generation) {
+ _worker_thread_idle = false;
+ _processing_generation = generation;
+ }
+
+ static void report_worker_idle() {
+ _worker_thread_idle = true;
+ }
+
private:
// global memory snapshot
static MemSnapshot* _snapshot;
// a memory baseline of snapshot
*** 481,490 ****
--- 500,514 ----
// current nmt state
static volatile enum NMTStates _state;
// the reason for shutting down nmt
static enum ShutdownReason _reason;
+ // the generation that NMT is processing
+ static volatile unsigned long _processing_generation;
+ // although NMT is still procesing current generation, but
+ // there is not more recorder to process, set idle state
+ static volatile bool _worker_thread_idle;
};
#endif // !INCLUDE_NMT
#endif // SHARE_VM_SERVICES_MEM_TRACKER_HPP