1.1 --- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Thu Jan 12 00:06:47 2012 -0800 1.2 +++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp Wed Jan 25 12:58:23 2012 -0500 1.3 @@ -220,6 +220,7 @@ 1.4 1.5 // Closure for iterating over object fields during concurrent marking 1.6 class G1CMOopClosure : public OopClosure { 1.7 +private: 1.8 G1CollectedHeap* _g1h; 1.9 ConcurrentMark* _cm; 1.10 CMTask* _task; 1.11 @@ -230,4 +231,19 @@ 1.12 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 1.13 }; 1.14 1.15 +// Closure to scan the root regions during concurrent marking 1.16 +class G1RootRegionScanClosure : public OopClosure { 1.17 +private: 1.18 + G1CollectedHeap* _g1h; 1.19 + ConcurrentMark* _cm; 1.20 + uint _worker_id; 1.21 +public: 1.22 + G1RootRegionScanClosure(G1CollectedHeap* g1h, ConcurrentMark* cm, 1.23 + uint worker_id) : 1.24 + _g1h(g1h), _cm(cm), _worker_id(worker_id) { } 1.25 + template <class T> void do_oop_nv(T* p); 1.26 + virtual void do_oop( oop* p) { do_oop_nv(p); } 1.27 + virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 1.28 +}; 1.29 + 1.30 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP