< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp
Print this page
rev 60794 : imported patch 8247928-sjohanss-review
*** 35,60 ****
class G1ConcurrentMarkThread: public ConcurrentGCThread {
friend class VMStructs;
double _vtime_start; // Initial virtual time.
double _vtime_accum; // Accumulated virtual time.
- double _vtime_mark_accum;
G1ConcurrentMark* _cm;
! enum State {
Idle,
Started,
InProgress
};
! volatile State _state;
! void sleep_before_next_cycle();
! // Delay marking to meet MMU.
! void delay_to_keep_mmu(G1Policy* g1_policy, bool remark);
! double mmu_delay_end(G1Policy* g1_policy, bool remark);
void run_service();
void stop_service();
public:
--- 35,92 ----
class G1ConcurrentMarkThread: public ConcurrentGCThread {
friend class VMStructs;
double _vtime_start; // Initial virtual time.
double _vtime_accum; // Accumulated virtual time.
G1ConcurrentMark* _cm;
! enum ServiceState {
Idle,
Started,
InProgress
};
! volatile ServiceState _state;
! // Wait for next cycle. Returns true if we should stop the service.
! bool wait_for_next_cycle();
!
! // Phases for the full concurrent marking cycle in order.
! //
! // We have to ensure that we finish scanning the root regions
! // before the next GC takes place. To ensure this we have to
! // make sure that we do not join the STS until the root regions
! // have been scanned. If we did then it's possible that a
! // subsequent GC could block us from joining the STS and proceed
! // without the root regions have been scanned which would be a
! // correctness issue.
! // ConcurrentGCBreakpoints must not be placed before the the root
! // region scan phase too for this reason.
! bool phase_concurrent_cycle_start();
! bool phase_clear_cld_claimed_marks();
! bool phase_scan_root_regions();
!
! bool phase_mark_loop();
! bool mark_loop_needs_restart() const;
! bool subphase_mark_from_roots();
! bool subphase_preclean();
! bool subphase_delay_to_keep_mmu_before_remark();
! bool subphase_remark();
! bool phase_rebuild_remembered_sets();
! bool phase_delay_to_keep_mmu_before_cleanup();
! bool phase_cleanup();
! bool phase_clear_bitmap_for_next_mark();
!
! void concurrent_cycle_start();
! // Perform a full concurrent cycle.
! void full_concurrent_cycle_do();
! void concurrent_cycle_end();
!
! // Delay pauses to meet MMU.
! void delay_to_keep_mmu(bool remark);
! double mmu_delay_end(G1Policy* policy, bool remark);
void run_service();
void stop_service();
public:
< prev index next >