src/share/vm/gc_implementation/g1/concurrentMark.hpp
Print this page
*** 352,363 ****
friend class CMConcurrentMarkingTask;
friend class G1ParNoteEndTask;
friend class CalcLiveObjectsClosure;
friend class G1CMRefProcTaskProxy;
friend class G1CMRefProcTaskExecutor;
! friend class G1CMParKeepAliveAndDrainClosure;
! friend class G1CMParDrainMarkingStackClosure;
protected:
ConcurrentMarkThread* _cmThread; // the thread doing the work
G1CollectedHeap* _g1h; // the heap.
uint _parallel_marking_threads; // the number of marking
--- 352,363 ----
friend class CMConcurrentMarkingTask;
friend class G1ParNoteEndTask;
friend class CalcLiveObjectsClosure;
friend class G1CMRefProcTaskProxy;
friend class G1CMRefProcTaskExecutor;
! friend class G1CMKeepAliveAndDrainClosure;
! friend class G1CMDrainMarkingStackClosure;
protected:
ConcurrentMarkThread* _cmThread; // the thread doing the work
G1CollectedHeap* _g1h; // the heap.
uint _parallel_marking_threads; // the number of marking
*** 468,480 ****
// We do this after we're done with marking so that the marking data
// structures are initialised to a sensible and predictable state.
void set_non_marking_state();
// It should be called to indicate which phase we're in (concurrent
// mark or remark) and how many threads are currently active.
! void set_phase(uint active_tasks, bool concurrent);
// prints all gathered CM-related statistics
void print_stats();
bool cleanup_list_is_empty() {
--- 468,483 ----
// We do this after we're done with marking so that the marking data
// structures are initialised to a sensible and predictable state.
void set_non_marking_state();
+ // Called to indicate how many threads are currently active.
+ void set_concurrency(uint active_tasks);
+
// It should be called to indicate which phase we're in (concurrent
// mark or remark) and how many threads are currently active.
! void set_concurrency_and_phase(uint active_tasks, bool concurrent);
// prints all gathered CM-related statistics
void print_stats();
bool cleanup_list_is_empty() {
*** 1115,1125 ****
// The main method of this class which performs a marking step
// trying not to exceed the given duration. However, it might exit
// prematurely, according to some conditions (i.e. SATB buffers are
// available for processing).
! void do_marking_step(double target_ms, bool do_stealing, bool do_termination);
// These two calls start and stop the timer
void record_start_time() {
_elapsed_time_ms = os::elapsedTime() * 1000.0;
}
--- 1118,1130 ----
// The main method of this class which performs a marking step
// trying not to exceed the given duration. However, it might exit
// prematurely, according to some conditions (i.e. SATB buffers are
// available for processing).
! void do_marking_step(double target_ms,
! bool do_termination,
! bool is_serial);
// These two calls start and stop the timer
void record_start_time() {
_elapsed_time_ms = os::elapsedTime() * 1000.0;
}