< prev index next >

src/share/vm/gc/g1/concurrentMark.hpp

Print this page

        

*** 351,360 **** --- 351,365 ---- // 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; + // True only inside of markFromRoots(). + // Similar to _concurrent_marking_in_progress but this is set to false + // when CMConcurrentMarkingTask is finished. + volatile bool _concurrent_marking_from_roots; + // All of these times are in ms NumberSeq _init_times; NumberSeq _remark_times; NumberSeq _remark_mark_times; NumberSeq _remark_weak_ref_times;
*** 457,466 **** --- 462,477 ---- // Methods to enter the two overflow sync barriers void enter_first_sync_barrier(uint worker_id); void enter_second_sync_barrier(uint worker_id); + // Start measuring concurrent mark from ConcurrentMark::markFromRoots(). + void register_mark_from_roots_phase_start(); + + // End measuring concurrent mark from ConcurrentMark::markFromRoots(). + void register_mark_from_roots_phase_end(); + // Live Data Counting data structures... // These data structures are initialized at the start of // marking. They are written to while marking is active. // They are aggregated during remark; the aggregated values // are then used to populate the _region_bm, _card_bm, and
*** 514,523 **** --- 525,538 ---- } void clear_concurrent_marking_in_progress() { _concurrent_marking_in_progress = false; } + bool concurrent_marking_from_roots() const { + return _concurrent_marking_from_roots; + } + void update_accum_task_vtime(int i, double vtime) { _accum_task_vtime[i] += vtime; } double all_task_accum_vtime() {
< prev index next >