src/share/vm/gc_implementation/g1/g1OopClosures.hpp

changeset 3464
eff609af17d7
parent 3463
d30fa85f9994
child 3466
b4ebad3520bb
     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

mercurial