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
|