< prev index next >

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

Print this page

        

*** 32,41 **** --- 32,43 ---- #include "gc/g1/g1OopClosures.inline.hpp" #include "gc/g1/g1_globals.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/g1/heapRegionRemSet.hpp" #include "gc/shared/preservedMarks.inline.hpp" + #include "oops/access.inline.hpp" + #include "oops/compressedOops.inline.hpp" class UpdateRSetDeferred : public ExtendedOopClosure { private: G1CollectedHeap* _g1; DirtyCardQueue* _dcq;
*** 49,64 **** virtual void do_oop( oop* p) { do_oop_work(p); } template <class T> void do_oop_work(T* p) { assert(_g1->heap_region_containing(p)->is_in_reserved(p), "paranoia"); assert(!_g1->heap_region_containing(p)->is_survivor(), "Unexpected evac failure in survivor region"); ! T const o = oopDesc::load_heap_oop(p); ! if (oopDesc::is_null(o)) { return; } ! if (HeapRegion::is_in_same_region(p, oopDesc::decode_heap_oop(o))) { return; } size_t card_index = _ct->index_for(p); if (_ct->mark_card_deferred(card_index)) { _dcq->enqueue((jbyte*)_ct->byte_for_index(card_index)); --- 51,66 ---- virtual void do_oop( oop* p) { do_oop_work(p); } template <class T> void do_oop_work(T* p) { assert(_g1->heap_region_containing(p)->is_in_reserved(p), "paranoia"); assert(!_g1->heap_region_containing(p)->is_survivor(), "Unexpected evac failure in survivor region"); ! T const o = RawAccess<>::oop_load(p); ! if (CompressedOops::is_null(o)) { return; } ! if (HeapRegion::is_in_same_region(p, CompressedOops::decode(o))) { return; } size_t card_index = _ct->index_for(p); if (_ct->mark_card_deferred(card_index)) { _dcq->enqueue((jbyte*)_ct->byte_for_index(card_index));
< prev index next >