Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
3972:4f93f0d00802 | 3973:663cb89032b1 |
---|---|
820 // Do any necessary cleanup for evacuation-failure handling data | 820 // Do any necessary cleanup for evacuation-failure handling data |
821 // structures. | 821 // structures. |
822 void finalize_for_evac_failure(); | 822 void finalize_for_evac_failure(); |
823 | 823 |
824 // An attempt to evacuate "obj" has failed; take necessary steps. | 824 // An attempt to evacuate "obj" has failed; take necessary steps. |
825 oop handle_evacuation_failure_par(OopsInHeapRegionClosure* cl, oop obj); | 825 oop handle_evacuation_failure_par(OopsInHeapRegionClosure* cl, oop obj, |
826 bool should_mark_root); | |
826 void handle_evacuation_failure_common(oop obj, markOop m); | 827 void handle_evacuation_failure_common(oop obj, markOop m); |
827 | 828 |
828 // Instance of the concurrent mark is_alive closure for embedding | 829 // Instance of the concurrent mark is_alive closure for embedding |
829 // into the reference processor as the is_alive_non_header. This | 830 // into the reference processor as the is_alive_non_header. This |
830 // prevents unnecessary additions to the discovered lists during | 831 // prevents unnecessary additions to the discovered lists during |