Mercurial > hg > graal-compiler
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 }; |