< prev index next >

src/hotspot/share/gc/g1/g1FullGCOopClosures.hpp

Print this page
*** 23,17 ***
--- 23,19 ---
   */
  
  #ifndef SHARE_GC_G1_G1FULLGCOOPCLOSURES_HPP
  #define SHARE_GC_G1_G1FULLGCOOPCLOSURES_HPP
  
+ #include "gc/g1/g1CollectedHeap.hpp"
  #include "gc/shared/verifyOption.hpp"
  #include "memory/iterator.hpp"
  
  class G1CollectedHeap;
  class G1FullCollector;
  class G1CMBitMap;
  class G1FullGCMarker;
+ class SlidingForwarding;
  
  // Below are closures used by the G1 Full GC.
  class G1IsAliveClosure : public BoolObjectClosure {
    G1FullCollector* _collector;
    G1CMBitMap* _bitmap;

*** 77,14 ***
    virtual void do_cld(ClassLoaderData* cld);
  };
  
  class G1AdjustClosure : public BasicOopIterateClosure {
    G1FullCollector* _collector;
  
    template <class T> inline void adjust_pointer(T* p);
  public:
!   G1AdjustClosure(G1FullCollector* collector) : _collector(collector) { }
    template <class T> void do_oop_work(T* p) { adjust_pointer(p); }
    virtual void do_oop(oop* p);
    virtual void do_oop(narrowOop* p);
  
    virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
--- 79,17 ---
    virtual void do_cld(ClassLoaderData* cld);
  };
  
  class G1AdjustClosure : public BasicOopIterateClosure {
    G1FullCollector* _collector;
+   const SlidingForwarding* const _forwarding;
  
    template <class T> inline void adjust_pointer(T* p);
  public:
!   G1AdjustClosure(G1FullCollector* collector) :
+     _collector(collector),
+     _forwarding(G1CollectedHeap::heap()->forwarding()) { }
    template <class T> void do_oop_work(T* p) { adjust_pointer(p); }
    virtual void do_oop(oop* p);
    virtual void do_oop(narrowOop* p);
  
    virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
< prev index next >