117 "should be forwarded"); 118 // Just always do the update unconditionally? 119 if (new_obj != NULL) { 120 assert(ParallelScavengeHeap::heap()->is_in_reserved(new_obj), 121 "should be in object space"); 122 RawAccess<IS_NOT_NULL>::oop_store(p, new_obj); 123 } 124 } 125 } 126 127 class PCAdjustPointerClosure: public BasicOopIterateClosure { 128 public: 129 PCAdjustPointerClosure(ParCompactionManager* cm) { 130 assert(cm != NULL, "associate ParCompactionManage should not be NULL"); 131 _cm = cm; 132 } 133 template <typename T> void do_oop_nv(T* p) { PSParallelCompact::adjust_pointer(p, _cm); } 134 virtual void do_oop(oop* p) { do_oop_nv(p); } 135 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 136 137 // This closure provides its own oop verification code. 138 debug_only(virtual bool should_verify_oops() { return false; }) 139 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } 140 private: 141 ParCompactionManager* _cm; 142 }; 143 144 #endif // SHARE_GC_PARALLEL_PSPARALLELCOMPACT_INLINE_HPP | 117 "should be forwarded"); 118 // Just always do the update unconditionally? 119 if (new_obj != NULL) { 120 assert(ParallelScavengeHeap::heap()->is_in_reserved(new_obj), 121 "should be in object space"); 122 RawAccess<IS_NOT_NULL>::oop_store(p, new_obj); 123 } 124 } 125 } 126 127 class PCAdjustPointerClosure: public BasicOopIterateClosure { 128 public: 129 PCAdjustPointerClosure(ParCompactionManager* cm) { 130 assert(cm != NULL, "associate ParCompactionManage should not be NULL"); 131 _cm = cm; 132 } 133 template <typename T> void do_oop_nv(T* p) { PSParallelCompact::adjust_pointer(p, _cm); } 134 virtual void do_oop(oop* p) { do_oop_nv(p); } 135 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 136 137 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } 138 private: 139 ParCompactionManager* _cm; 140 }; 141 142 #endif // SHARE_GC_PARALLEL_PSPARALLELCOMPACT_INLINE_HPP |