1.1 --- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Wed Jan 08 13:20:33 2014 +0100 1.2 +++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Wed Feb 26 15:32:40 2014 +0100 1.3 @@ -48,12 +48,8 @@ 1.4 class G1ParClosureSuper : public OopsInHeapRegionClosure { 1.5 protected: 1.6 G1CollectedHeap* _g1; 1.7 - G1RemSet* _g1_rem; 1.8 - ConcurrentMark* _cm; 1.9 G1ParScanThreadState* _par_scan_state; 1.10 uint _worker_id; 1.11 - bool _during_initial_mark; 1.12 - bool _mark_in_progress; 1.13 public: 1.14 G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); 1.15 bool apply_to_weak_ref_discovered_field() { return true; } 1.16 @@ -133,12 +129,21 @@ 1.17 1.18 // Add back base class for metadata 1.19 class G1ParCopyHelper : public G1ParClosureSuper { 1.20 +protected: 1.21 Klass* _scanned_klass; 1.22 + ConcurrentMark* _cm; 1.23 1.24 + // Mark the object if it's not already marked. This is used to mark 1.25 + // objects pointed to by roots that are guaranteed not to move 1.26 + // during the GC (i.e., non-CSet objects). It is MT-safe. 1.27 + void mark_object(oop obj); 1.28 + 1.29 + // Mark the object if it's not already marked. This is used to mark 1.30 + // objects pointed to by roots that have been forwarded during a 1.31 + // GC. It is MT-safe. 1.32 + void mark_forwarded_object(oop from_obj, oop to_obj); 1.33 public: 1.34 - G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) : 1.35 - _scanned_klass(NULL), 1.36 - G1ParClosureSuper(g1, par_scan_state) {} 1.37 + G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); 1.38 1.39 void set_scanned_klass(Klass* k) { _scanned_klass = k; } 1.40 template <class T> void do_klass_barrier(T* p, oop new_obj); 1.41 @@ -150,16 +155,6 @@ 1.42 template <class T> void do_oop_work(T* p); 1.43 1.44 protected: 1.45 - // Mark the object if it's not already marked. This is used to mark 1.46 - // objects pointed to by roots that are guaranteed not to move 1.47 - // during the GC (i.e., non-CSet objects). It is MT-safe. 1.48 - void mark_object(oop obj); 1.49 - 1.50 - // Mark the object if it's not already marked. This is used to mark 1.51 - // objects pointed to by roots that have been forwarded during a 1.52 - // GC. It is MT-safe. 1.53 - void mark_forwarded_object(oop from_obj, oop to_obj); 1.54 - 1.55 oop copy_to_survivor_space(oop obj); 1.56 1.57 public: 1.58 @@ -172,9 +167,7 @@ 1.59 1.60 G1ParScanClosure* scanner() { return &_scanner; } 1.61 1.62 - template <class T> void do_oop_nv(T* p) { 1.63 - do_oop_work(p); 1.64 - } 1.65 + template <class T> void do_oop_nv(T* p) { do_oop_work(p); } 1.66 virtual void do_oop(oop* p) { do_oop_nv(p); } 1.67 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 1.68 };