equal
deleted
inserted
replaced
264 oop ShenandoahBarrierSet::oop_load_from_native_barrier(oop obj) { |
264 oop ShenandoahBarrierSet::oop_load_from_native_barrier(oop obj) { |
265 if (CompressedOops::is_null(obj)) { |
265 if (CompressedOops::is_null(obj)) { |
266 return NULL; |
266 return NULL; |
267 } |
267 } |
268 |
268 |
269 if (_heap->is_evacuation_in_progress() && |
269 ShenandoahMarkingContext* const marking_context = _heap->marking_context(); |
270 !_heap->complete_marking_context()->is_marked(obj)) { |
270 |
271 return NULL; |
271 if (_heap->is_evacuation_in_progress()) { |
|
272 // Normal GC |
|
273 if (!marking_context->is_marked(obj)) { |
|
274 return NULL; |
|
275 } |
|
276 } else if (_heap->is_concurrent_traversal_in_progress()) { |
|
277 // Traversal GC |
|
278 if (marking_context->is_complete() && |
|
279 !marking_context->is_marked(resolve_forwarded_not_null(obj))) { |
|
280 return NULL; |
|
281 } |
272 } |
282 } |
273 |
283 |
274 return load_reference_barrier_not_null(obj); |
284 return load_reference_barrier_not_null(obj); |
275 } |
285 } |