提交 7e51bc98 编写于 作者: A apetrusenko

6921710: G1: assert(new_finger >= _finger && new_finger < _region_limit,"invariant")

Summary: If CM task was aborted while scanning the last object of the specified region and the size of that object is equal to bitmap's granularity then the next offset would be equal or over the region limit which is exactly what the assertion states.
Reviewed-by: ysr, tonyp, jmasa
上级 195509ea
......@@ -3704,7 +3704,14 @@ void CMTask::do_marking_step(double time_target_ms) {
// enough to point to the next possible object header (the
// bitmap knows by how much we need to move it as it knows its
// granularity).
move_finger_to(_nextMarkBitMap->nextWord(_finger));
assert(_finger < _region_limit, "invariant");
HeapWord* new_finger = _nextMarkBitMap->nextWord(_finger);
// Check if bitmap iteration was aborted while scanning the last object
if (new_finger >= _region_limit) {
giveup_current_region();
} else {
move_finger_to(new_finger);
}
}
}
// At this point we have either completed iterating over the
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册