src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp
changeset 55681 7b671e6b0d5b
parent 55654 92ab031d6540
child 58059 baa4dd528de0
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp	Mon Jul 15 10:21:33 2019 +0800
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp	Mon Jul 15 11:23:05 2019 -0400
@@ -360,5 +360,14 @@
 }
 
 oop ShenandoahBarrierSet::oop_load_from_native_barrier(oop obj) {
-  return load_reference_barrier(obj);
+  if (CompressedOops::is_null(obj)) {
+    return NULL;
+  }
+
+  if (_heap->is_evacuation_in_progress() &&
+      !_heap->complete_marking_context()->is_marked(obj)) {
+    return NULL;
+  }
+
+  return load_reference_barrier_not_null(obj);
 }