equal
deleted
inserted
replaced
26 #include "gc/z/zBarrier.inline.hpp" |
26 #include "gc/z/zBarrier.inline.hpp" |
27 #include "gc/z/zGlobals.hpp" |
27 #include "gc/z/zGlobals.hpp" |
28 #include "gc/z/zHeapIterator.hpp" |
28 #include "gc/z/zHeapIterator.hpp" |
29 #include "gc/z/zOop.inline.hpp" |
29 #include "gc/z/zOop.inline.hpp" |
30 #include "gc/z/zRootsIterator.hpp" |
30 #include "gc/z/zRootsIterator.hpp" |
|
31 #include "memory/iterator.inline.hpp" |
31 #include "oops/oop.inline.hpp" |
32 #include "oops/oop.inline.hpp" |
32 #include "utilities/bitMap.inline.hpp" |
33 #include "utilities/bitMap.inline.hpp" |
33 #include "utilities/stack.inline.hpp" |
34 #include "utilities/stack.inline.hpp" |
34 |
35 |
35 class ZHeapIteratorBitMap : public CHeapObj<mtGC> { |
36 class ZHeapIteratorBitMap : public CHeapObj<mtGC> { |
71 virtual void do_oop(narrowOop* p) { |
72 virtual void do_oop(narrowOop* p) { |
72 ShouldNotReachHere(); |
73 ShouldNotReachHere(); |
73 } |
74 } |
74 }; |
75 }; |
75 |
76 |
76 class ZHeapIteratorPushOopClosure : public ExtendedOopClosure { |
77 class ZHeapIteratorPushOopClosure : public BasicOopIterateClosure { |
77 private: |
78 private: |
78 ZHeapIterator* const _iter; |
79 ZHeapIterator* const _iter; |
79 const oop _base; |
80 const oop _base; |
80 |
81 |
81 public: |
82 public: |
82 ZHeapIteratorPushOopClosure(ZHeapIterator* iter, oop base) : |
83 ZHeapIteratorPushOopClosure(ZHeapIterator* iter, oop base) : |
83 _iter(iter), |
84 _iter(iter), |
84 _base(base) {} |
85 _base(base) {} |
85 |
86 |
86 void do_oop_nv(oop* p) { |
87 virtual void do_oop(oop* p) { |
87 const oop obj = HeapAccess<ON_UNKNOWN_OOP_REF>::oop_load_at(_base, _base->field_offset(p)); |
88 const oop obj = HeapAccess<ON_UNKNOWN_OOP_REF>::oop_load_at(_base, _base->field_offset(p)); |
88 _iter->push(obj); |
89 _iter->push(obj); |
89 } |
90 } |
90 |
91 |
91 void do_oop_nv(narrowOop* p) { |
92 virtual void do_oop(narrowOop* p) { |
92 ShouldNotReachHere(); |
93 ShouldNotReachHere(); |
93 } |
|
94 |
|
95 virtual void do_oop(oop* p) { |
|
96 do_oop_nv(p); |
|
97 } |
|
98 |
|
99 virtual void do_oop(narrowOop* p) { |
|
100 do_oop_nv(p); |
|
101 } |
94 } |
102 |
95 |
103 #ifdef ASSERT |
96 #ifdef ASSERT |
104 virtual bool should_verify_oops() { |
97 virtual bool should_verify_oops() { |
105 return false; |
98 return false; |