Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/g1OopClosures.hpp @ 3886:eeae91c9baba
7080389: G1: refactor marking code in evacuation pause copy closures
Summary: Refactor code marking code in the evacuation pause copy closures so that an evacuated object is only marked by the thread that successfully copies it.
Reviewed-by: stefank, brutisso, tonyp
author | johnc |
---|---|
date | Mon, 29 Aug 2011 10:13:06 -0700 |
parents | 842b840e67db |
children | 663cb89032b1 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Thu Aug 25 02:57:46 2011 -0700 +++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Mon Aug 29 10:13:06 2011 -0700 @@ -50,6 +50,8 @@ G1RemSet* _g1_rem; ConcurrentMark* _cm; G1ParScanThreadState* _par_scan_state; + bool _during_initial_mark; + bool _mark_in_progress; public: G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); bool apply_to_weak_ref_discovered_field() { return true; } @@ -102,8 +104,8 @@ class G1ParCopyHelper : public G1ParClosureSuper { G1ParScanClosure *_scanner; protected: - template <class T> void mark_forwardee(T* p); - oop copy_to_survivor_space(oop obj); + template <class T> void mark_object(T* p); + oop copy_to_survivor_space(oop obj, bool should_mark_copy); public: G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state, G1ParScanClosure *scanner) : @@ -111,7 +113,7 @@ }; template<bool do_gen_barrier, G1Barrier barrier, - bool do_mark_forwardee> + bool do_mark_object> class G1ParCopyClosure : public G1ParCopyHelper { G1ParScanClosure _scanner; template <class T> void do_oop_work(T* p); @@ -120,8 +122,6 @@ _scanner(g1, par_scan_state), G1ParCopyHelper(g1, par_scan_state, &_scanner) { } template <class T> void do_oop_nv(T* p) { do_oop_work(p); - if (do_mark_forwardee) - mark_forwardee(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); }