< prev index next >

src/hotspot/share/gc/g1/g1EvacFailure.cpp

Print this page




  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/dirtyCardQueue.hpp"
  27 #include "gc/g1/g1CollectedHeap.inline.hpp"
  28 #include "gc/g1/g1CollectorState.hpp"
  29 #include "gc/g1/g1ConcurrentMark.inline.hpp"
  30 #include "gc/g1/g1EvacFailure.hpp"
  31 #include "gc/g1/g1HeapVerifier.hpp"
  32 #include "gc/g1/g1OopClosures.inline.hpp"
  33 #include "gc/g1/g1_globals.hpp"
  34 #include "gc/g1/heapRegion.hpp"
  35 #include "gc/g1/heapRegionRemSet.hpp"
  36 #include "gc/shared/preservedMarks.inline.hpp"
  37 #include "oops/access.inline.hpp"
  38 #include "oops/compressedOops.inline.hpp"
  39 #include "oops/oop.inline.hpp"
  40 
  41 class UpdateRSetDeferred : public ExtendedOopClosure {
  42 private:
  43   G1CollectedHeap* _g1h;
  44   DirtyCardQueue* _dcq;
  45   G1CardTable*    _ct;
  46 
  47 public:
  48   UpdateRSetDeferred(DirtyCardQueue* dcq) :
  49     _g1h(G1CollectedHeap::heap()), _ct(_g1h->card_table()), _dcq(dcq) {}
  50 
  51   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
  52   virtual void do_oop(      oop* p) { do_oop_work(p); }
  53   template <class T> void do_oop_work(T* p) {
  54     assert(_g1h->heap_region_containing(p)->is_in_reserved(p), "paranoia");
  55     assert(!_g1h->heap_region_containing(p)->is_survivor(), "Unexpected evac failure in survivor region");
  56 
  57     T const o = RawAccess<>::oop_load(p);
  58     if (CompressedOops::is_null(o)) {
  59       return;
  60     }
  61 




  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/dirtyCardQueue.hpp"
  27 #include "gc/g1/g1CollectedHeap.inline.hpp"
  28 #include "gc/g1/g1CollectorState.hpp"
  29 #include "gc/g1/g1ConcurrentMark.inline.hpp"
  30 #include "gc/g1/g1EvacFailure.hpp"
  31 #include "gc/g1/g1HeapVerifier.hpp"
  32 #include "gc/g1/g1OopClosures.inline.hpp"
  33 #include "gc/g1/g1_globals.hpp"
  34 #include "gc/g1/heapRegion.hpp"
  35 #include "gc/g1/heapRegionRemSet.hpp"
  36 #include "gc/shared/preservedMarks.inline.hpp"
  37 #include "oops/access.inline.hpp"
  38 #include "oops/compressedOops.inline.hpp"
  39 #include "oops/oop.inline.hpp"
  40 
  41 class UpdateRSetDeferred : public BasicOopIterateClosure {
  42 private:
  43   G1CollectedHeap* _g1h;
  44   DirtyCardQueue* _dcq;
  45   G1CardTable*    _ct;
  46 
  47 public:
  48   UpdateRSetDeferred(DirtyCardQueue* dcq) :
  49     _g1h(G1CollectedHeap::heap()), _ct(_g1h->card_table()), _dcq(dcq) {}
  50 
  51   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
  52   virtual void do_oop(      oop* p) { do_oop_work(p); }
  53   template <class T> void do_oop_work(T* p) {
  54     assert(_g1h->heap_region_containing(p)->is_in_reserved(p), "paranoia");
  55     assert(!_g1h->heap_region_containing(p)->is_survivor(), "Unexpected evac failure in survivor region");
  56 
  57     T const o = RawAccess<>::oop_load(p);
  58     if (CompressedOops::is_null(o)) {
  59       return;
  60     }
  61 


< prev index next >