8040804: G1: Concurrent mark stuck in loop calling os::elapsedVTime()
Reviewed-by: brutisso, tschatzl
This commit is contained in:
parent
3f35cb0ca0
commit
04341bfffb
@ -819,7 +819,7 @@ void ConcurrentMark::set_concurrency_and_phase(uint active_tasks, bool concurren
|
|||||||
// false before we start remark. At this point we should also be
|
// false before we start remark. At this point we should also be
|
||||||
// in a STW phase.
|
// in a STW phase.
|
||||||
assert(!concurrent_marking_in_progress(), "invariant");
|
assert(!concurrent_marking_in_progress(), "invariant");
|
||||||
assert(_finger == _heap_end,
|
assert(out_of_regions(),
|
||||||
err_msg("only way to get here: _finger: "PTR_FORMAT", _heap_end: "PTR_FORMAT,
|
err_msg("only way to get here: _finger: "PTR_FORMAT", _heap_end: "PTR_FORMAT,
|
||||||
_finger, _heap_end));
|
_finger, _heap_end));
|
||||||
update_g1_committed(true);
|
update_g1_committed(true);
|
||||||
|
@ -542,8 +542,12 @@ protected:
|
|||||||
// frequently.
|
// frequently.
|
||||||
HeapRegion* claim_region(uint worker_id);
|
HeapRegion* claim_region(uint worker_id);
|
||||||
|
|
||||||
// It determines whether we've run out of regions to scan
|
// It determines whether we've run out of regions to scan. Note that
|
||||||
bool out_of_regions() { return _finger == _heap_end; }
|
// the finger can point past the heap end in case the heap was expanded
|
||||||
|
// to satisfy an allocation without doing a GC. This is fine, because all
|
||||||
|
// objects in those regions will be considered live anyway because of
|
||||||
|
// SATB guarantees (i.e. their TAMS will be equal to bottom).
|
||||||
|
bool out_of_regions() { return _finger >= _heap_end; }
|
||||||
|
|
||||||
// Returns the task with the given id
|
// Returns the task with the given id
|
||||||
CMTask* task(int id) {
|
CMTask* task(int id) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user