8308752: Generational ZGC: Avoid final marking through stack chunks
Reviewed-by: stefank, aboldtch
This commit is contained in:
parent
7b0a33600e
commit
8f1ce78907
@ -375,16 +375,17 @@ void ZMark::follow_array_object(objArrayOop obj, bool finalizable) {
|
|||||||
|
|
||||||
void ZMark::follow_object(oop obj, bool finalizable) {
|
void ZMark::follow_object(oop obj, bool finalizable) {
|
||||||
if (_generation->is_old()) {
|
if (_generation->is_old()) {
|
||||||
if (ZHeap::heap()->is_old(to_zaddress(obj))) {
|
assert(ZHeap::heap()->is_old(to_zaddress(obj)), "Should only follow objects from old gen");
|
||||||
if (finalizable) {
|
if (obj->is_stackChunk()) {
|
||||||
ZMarkBarrierFollowOopClosure<true /* finalizable */, ZGenerationIdOptional::old> cl;
|
// No support for tracing through stack chunks as finalizably reachable
|
||||||
ZIterator::oop_iterate(obj, &cl);
|
ZMarkBarrierFollowOopClosure<false /* finalizable */, ZGenerationIdOptional::old> cl;
|
||||||
} else {
|
ZIterator::oop_iterate(obj, &cl);
|
||||||
ZMarkBarrierFollowOopClosure<false /* finalizable */, ZGenerationIdOptional::old> cl;
|
} else if (finalizable) {
|
||||||
ZIterator::oop_iterate(obj, &cl);
|
ZMarkBarrierFollowOopClosure<true /* finalizable */, ZGenerationIdOptional::old> cl;
|
||||||
}
|
ZIterator::oop_iterate(obj, &cl);
|
||||||
} else {
|
} else {
|
||||||
fatal("Catch me!");
|
ZMarkBarrierFollowOopClosure<false /* finalizable */, ZGenerationIdOptional::old> cl;
|
||||||
|
ZIterator::oop_iterate(obj, &cl);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Young gen must help out with old marking
|
// Young gen must help out with old marking
|
||||||
|
Loading…
Reference in New Issue
Block a user