< 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 >