--- 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);
}