comparison src/share/vm/gc_implementation/g1/g1OopClosures.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
103 103
104 class G1ParCopyHelper : public G1ParClosureSuper { 104 class G1ParCopyHelper : public G1ParClosureSuper {
105 G1ParScanClosure *_scanner; 105 G1ParScanClosure *_scanner;
106 protected: 106 protected:
107 template <class T> void mark_object(T* p); 107 template <class T> void mark_object(T* p);
108 oop copy_to_survivor_space(oop obj, bool should_mark_copy); 108 oop copy_to_survivor_space(oop obj, bool should_mark_root,
109 bool should_mark_copy);
109 public: 110 public:
110 G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state, 111 G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state,
111 G1ParScanClosure *scanner) : 112 G1ParScanClosure *scanner) :
112 G1ParClosureSuper(g1, par_scan_state), _scanner(scanner) { } 113 G1ParClosureSuper(g1, par_scan_state), _scanner(scanner) { }
113 }; 114 };