238 template <class T>
239 inline void G1CMTask::deal_with_reference(T* p) {
240 increment_refs_reached();
241 oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
242 if (obj == NULL) {
243 return;
244 }
245 make_reference_grey(obj);
246 }
247
248 inline void G1ConcurrentMark::mark_in_prev_bitmap(oop p) {
249 assert(!_prev_mark_bitmap->is_marked((HeapWord*) p), "sanity");
250 _prev_mark_bitmap->mark((HeapWord*) p);
251 }
252
253 bool G1ConcurrentMark::is_marked_in_prev_bitmap(oop p) const {
254 assert(p != NULL && oopDesc::is_oop(p), "expected an oop");
255 return _prev_mark_bitmap->is_marked((HeapWord*)p);
256 }
257
258 inline bool G1ConcurrentMark::do_yield_check() {
259 if (SuspendibleThreadSet::should_yield()) {
260 SuspendibleThreadSet::yield();
261 return true;
262 } else {
263 return false;
264 }
265 }
266
267 #endif // SHARE_VM_GC_G1_G1CONCURRENTMARK_INLINE_HPP
|
238 template <class T>
239 inline void G1CMTask::deal_with_reference(T* p) {
240 increment_refs_reached();
241 oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
242 if (obj == NULL) {
243 return;
244 }
245 make_reference_grey(obj);
246 }
247
248 inline void G1ConcurrentMark::mark_in_prev_bitmap(oop p) {
249 assert(!_prev_mark_bitmap->is_marked((HeapWord*) p), "sanity");
250 _prev_mark_bitmap->mark((HeapWord*) p);
251 }
252
253 bool G1ConcurrentMark::is_marked_in_prev_bitmap(oop p) const {
254 assert(p != NULL && oopDesc::is_oop(p), "expected an oop");
255 return _prev_mark_bitmap->is_marked((HeapWord*)p);
256 }
257
258 bool G1ConcurrentMark::is_marked_in_next_bitmap(oop p) const {
259 assert(p != NULL && oopDesc::is_oop(p), "expected an oop");
260 return _next_mark_bitmap->is_marked((HeapWord*)p);
261 }
262
263 inline bool G1ConcurrentMark::do_yield_check() {
264 if (SuspendibleThreadSet::should_yield()) {
265 SuspendibleThreadSet::yield();
266 return true;
267 } else {
268 return false;
269 }
270 }
271
272 #endif // SHARE_VM_GC_G1_G1CONCURRENTMARK_INLINE_HPP
|