src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp
changeset 58266 501df37ce76b
parent 58219 bc0648405d67
child 58334 f642ad5c655f
equal deleted inserted replaced
58265:577e17cab93f 58266:501df37ce76b
   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 }