Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 3973:663cb89032b1
7092412: G1: Some roots not marked during an initial mark that gets an evacuation failure
Summary: As a result of the changes for 7080389, an evacuation failure during an initial mark pause may result in some root objects not being marked. Pass whether the caller is a root scanning closure into the evacuation failure handling code so that the thread that successfully forwards an object to itself also marks the object.
Reviewed-by: ysr, brutisso, tonyp
author | johnc |
---|---|
date | Tue, 20 Sep 2011 15:39:17 -0700 |
parents | eeae91c9baba |
children | 4dfb2df418f2 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Tue Sep 20 09:59:59 2011 -0400 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Tue Sep 20 15:39:17 2011 -0700 @@ -822,7 +822,8 @@ void finalize_for_evac_failure(); // An attempt to evacuate "obj" has failed; take necessary steps. - oop handle_evacuation_failure_par(OopsInHeapRegionClosure* cl, oop obj); + oop handle_evacuation_failure_par(OopsInHeapRegionClosure* cl, oop obj, + bool should_mark_root); void handle_evacuation_failure_common(oop obj, markOop m); // Instance of the concurrent mark is_alive closure for embedding