< prev index next >
src/share/vm/runtime/safepoint.hpp
Print this page
rev 13047 : [mq]: 8180932.patch
*** 49,58 ****
--- 49,60 ----
class ThreadSafepointState;
class SnippetCache;
class nmethod;
+ class WorkGang;
+ class SubTasksDone;
//
// Implements roll-forward to safepoint (safepoint synchronization)
//
class SafepointSynchronize : AllStatic {
*** 73,82 ****
--- 75,95 ----
enum SafepointTimeoutReason {
_spinning_timeout = 0,
_blocking_timeout = 1
};
+ enum SafepointCleanupTasks {
+ SAFEPOINT_CLEANUP_DEFLATE_MONITORS,
+ SAFEPOINT_CLEANUP_UPDATE_INLINE_CACHES,
+ SAFEPOINT_CLEANUP_COMPILATION_POLICY,
+ SAFEPOINT_CLEANUP_SYMBOL_TABLE_REHASH,
+ SAFEPOINT_CLEANUP_STRING_TABLE_REHASH,
+ SAFEPOINT_CLEANUP_CLD_PURGE,
+ // Leave this one last.
+ SAFEPOINT_CLEANUP_NUM_TASKS
+ };
+
typedef struct {
float _time_stamp; // record when the current safepoint occurs in seconds
int _vmop_type; // type of VM operation triggers the safepoint
int _nof_total_threads; // total number of Java threads
int _nof_initial_running_threads; // total number of initially seen running threads
*** 101,110 ****
--- 114,124 ----
// safepoint. The fact that Threads_lock is held throughout each pair of
// increments (at the beginning and end of each safepoint) guarantees
// race freedom.
public:
static volatile int _safepoint_counter;
+ static uint _num_cleanup_workers;
private:
static long _end_of_last_safepoint; // Time of last safepoint in milliseconds
// Statistics
static jlong _safepoint_begin_time; // time when safepoint begins
*** 127,136 ****
--- 141,154 ----
}
// For debug long safepoint
static void print_safepoint_timeout(SafepointTimeoutReason timeout_reason);
+ // Parallel cleanup
+ static WorkGang* _cleanup_workers;
+ static SubTasksDone* _cleanup_subtasks;
+
public:
// Main entry points
// Roll all threads forward to safepoint. Must be called by the
< prev index next >