src/hotspot/share/gc/parallel/psCompactionManager.cpp
changeset 49592 77fb0be7d19f
parent 49041 44122f767467
child 50277 f84ae8aa5d88
--- a/src/hotspot/share/gc/parallel/psCompactionManager.cpp	Fri Mar 23 12:55:39 2018 +0100
+++ b/src/hotspot/share/gc/parallel/psCompactionManager.cpp	Thu Mar 15 21:24:10 2018 +0100
@@ -34,6 +34,8 @@
 #include "gc/shared/taskqueue.inline.hpp"
 #include "logging/log.hpp"
 #include "memory/iterator.inline.hpp"
+#include "oops/access.inline.hpp"
+#include "oops/compressedOops.inline.hpp"
 #include "oops/instanceKlass.inline.hpp"
 #include "oops/instanceMirrorKlass.inline.hpp"
 #include "oops/objArrayKlass.inline.hpp"
@@ -182,10 +184,10 @@
 template <class T>
 static void oop_pc_follow_contents_specialized(InstanceRefKlass* klass, oop obj, ParCompactionManager* cm) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
-  T heap_oop = oopDesc::load_heap_oop(referent_addr);
+  T heap_oop = RawAccess<>::oop_load(referent_addr);
   log_develop_trace(gc, ref)("InstanceRefKlass::oop_pc_follow_contents " PTR_FORMAT, p2i(obj));
-  if (!oopDesc::is_null(heap_oop)) {
-    oop referent = oopDesc::decode_heap_oop_not_null(heap_oop);
+  if (!CompressedOops::is_null(heap_oop)) {
+    oop referent = CompressedOops::decode_not_null(heap_oop);
     if (PSParallelCompact::mark_bitmap()->is_unmarked(referent) &&
         PSParallelCompact::ref_processor()->discover_reference(obj, klass->reference_type())) {
       // reference already enqueued, referent will be traversed later
@@ -201,8 +203,8 @@
   T* next_addr = (T*)java_lang_ref_Reference::next_addr_raw(obj);
   // Treat discovered as normal oop, if ref is not "active",
   // i.e. if next is non-NULL.
-  T  next_oop = oopDesc::load_heap_oop(next_addr);
-  if (!oopDesc::is_null(next_oop)) { // i.e. ref is not "active"
+  T  next_oop = RawAccess<>::oop_load(next_addr);
+  if (!CompressedOops::is_null(next_oop)) { // i.e. ref is not "active"
     T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
     log_develop_trace(gc, ref)("   Process discovered as normal " PTR_FORMAT, p2i(discovered_addr));
     cm->mark_and_push(discovered_addr);