diff --git a/src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp b/src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp index 9e8151b..ced39dc 100644 --- a/src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp +++ b/src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp @@ -28,6 +28,7 @@ #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1CardTable.hpp" #include "gc/shared/accessBarrierSupport.inline.hpp" +#include "oops/oop.inline.hpp" template inline void G1BarrierSet::write_ref_field_pre(T* field) { @@ -36,9 +37,9 @@ inline void G1BarrierSet::write_ref_field_pre(T* field) { return; } - oop heap_oop = RawAccess::oop_load(field); - if (heap_oop != NULL) { - enqueue(heap_oop); + T heap_oop = RawAccess::oop_load(field); + if (oopDesc::is_null(heap_oop)) { + enqueue(oopDesc::decode_heap_oop_not_null(heap_oop)); } }