< prev index next >
src/share/vm/gc/g1/g1ConcurrentMark.hpp
Print this page
rev 10384 : [mq]: step.00
rev 10385 : [mq]: step.01
*** 32,41 ****
--- 32,43 ----
class G1CollectedHeap;
class G1CMBitMap;
class G1CMTask;
class G1ConcurrentMark;
+ class ConcurrentGCTimer;
+ class G1OldTracer;
typedef GenericTaskQueue<oop, mtGC> G1CMTaskQueue;
typedef GenericTaskQueueSet<G1CMTaskQueue, mtGC> G1CMTaskQueueSet;
// Closure used by CM during concurrent reference discovery
// and reference processing (during remarking) to determine
*** 350,370 ****
// point when all the tasks complete their work. It is really used
// to determine the points between the end of concurrent marking and
// time of remark.
volatile bool _concurrent_marking_in_progress;
! // There would be a race between ConcurrentMarkThread and VMThread(ConcurrentMark::abort())
! // to call ConcurrentGCTimer::register_gc_concurrent_end().
! // And this variable is used to keep track of concurrent phase.
! volatile uint _concurrent_phase_status;
! // Concurrent phase is not yet started.
! static const uint ConcPhaseNotStarted = 0;
! // Concurrent phase is started.
! static const uint ConcPhaseStarted = 1;
! // Caller thread of ConcurrentGCTimer::register_gc_concurrent_end() is ending concurrent phase.
! // So other thread should wait until the status to be changed to ConcPhaseNotStarted.
! static const uint ConcPhaseStopping = 2;
// All of these times are in ms
NumberSeq _init_times;
NumberSeq _remark_times;
NumberSeq _remark_mark_times;
--- 352,364 ----
// point when all the tasks complete their work. It is really used
// to determine the points between the end of concurrent marking and
// time of remark.
volatile bool _concurrent_marking_in_progress;
! ConcurrentGCTimer* _gc_timer_cm;
!
! G1OldTracer* _gc_tracer_cm;
// All of these times are in ms
NumberSeq _init_times;
NumberSeq _remark_times;
NumberSeq _remark_mark_times;
*** 528,541 ****
}
void clear_concurrent_marking_in_progress() {
_concurrent_marking_in_progress = false;
}
! void register_concurrent_phase_start(const char* title);
! void register_concurrent_phase_end();
! // Ends both concurrent phase and timer.
! void register_concurrent_gc_end_and_stop_timer();
void update_accum_task_vtime(int i, double vtime) {
_accum_task_vtime[i] += vtime;
}
--- 522,533 ----
}
void clear_concurrent_marking_in_progress() {
_concurrent_marking_in_progress = false;
}
! void concurrent_cycle_start();
! void concurrent_cycle_end();
void update_accum_task_vtime(int i, double vtime) {
_accum_task_vtime[i] += vtime;
}
*** 728,737 ****
--- 720,732 ----
// Returns true if initialization was successfully completed.
bool completed_initialization() const {
return _completed_initialization;
}
+ ConcurrentGCTimer* gc_timer_cm() const { return _gc_timer_cm; }
+ G1OldTracer* gc_tracer_cm() const { return _gc_tracer_cm; }
+
protected:
// Clear all the per-task bitmaps and arrays used to store the
// counting data.
void clear_all_count_data();
< prev index next >