< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp
Print this page
rev 60594 : [mq]: 8240556-abort-conc-mark-new
*** 40,57 ****
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
--- 40,63 ----
G1ConcurrentMark* _cm;
enum ServiceState {
Idle,
! StartMark,
! StartUndo,
InProgress
};
volatile ServiceState _state;
! enum Command {
! Terminate, // Terminate the thread.
! MarkCycle, // Start a (full) marking cycle
! UndoCycle // Start an undo cycle, i.e. undo a concurrent mark start pause.
! };
! // Wait for next cycle. Returns the type of cycle to start.
! Command 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
*** 73,85 ****
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);
--- 79,93 ----
bool phase_delay_to_keep_mmu_before_cleanup();
bool phase_cleanup();
bool phase_clear_bitmap_for_next_mark();
void concurrent_cycle_start();
! // Perform a marking concurrent cycle.
! void mark_concurrent_cycle_do();
! void undo_concurrent_cycle_do();
!
! void concurrent_cycle_end(bool mark_cycle_completed);
// Delay pauses to meet MMU.
void delay_to_keep_mmu(bool remark);
double mmu_delay_end(G1Policy* policy, bool remark);
*** 95,110 ****
// Marking virtual time so far this thread and concurrent marking tasks.
double vtime_mark_accum();
G1ConcurrentMark* cm() { return _cm; }
! void set_idle() { assert(_state != Started, "must not be starting a new cycle"); _state = Idle; }
! bool idle() { return _state == Idle; }
! void set_started() { assert(_state == Idle, "cycle in progress"); _state = Started; }
! bool started() { return _state == Started; }
! void set_in_progress() { assert(_state == Started, "must be starting a cycle"); _state = InProgress; }
! bool in_progress() { return _state == InProgress; }
// Returns true from the moment a marking cycle is
// initiated (during the concurrent start pause when started() is set)
// to the moment when the cycle completes (just after the next
// marking bitmap has been cleared and in_progress() is
--- 103,119 ----
// Marking virtual time so far this thread and concurrent marking tasks.
double vtime_mark_accum();
G1ConcurrentMark* cm() { return _cm; }
! void set_idle();
! void set_started(bool full_cycle);
! void set_in_progress();
!
! bool idle() const;
! bool started() const;
! bool in_progress() const;
// Returns true from the moment a marking cycle is
// initiated (during the concurrent start pause when started() is set)
// to the moment when the cycle completes (just after the next
// marking bitmap has been cleared and in_progress() is
< prev index next >