RFR: 8199946: Move load/store and encode/decode out of oopDesc (original) (raw)

Stefan Karlsson stefan.karlsson at oracle.com
Thu Mar 22 19:28:36 UTC 2018


Erik found two places where I didn't use OOP_NOT_NULL, where we previously used _not_null functions.

diff --git a/src/hotspot/share/gc/cms/parNewGeneration.cpp b/src/hotspot/share/gc/cms/parNewGeneration.cpp --- a/src/hotspot/share/gc/cms/parNewGeneration.cpp +++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp @@ -734,7 +734,7 @@        oop new_obj = obj->is_forwarded()                        ? obj->forwardee()                        : _g->DefNewGeneration::copy_to_survivor_space(obj); -      RawAccess<>::oop_store(p, new_obj); +      RawAccess::oop_store(p, new_obj);      }      if (_gc_barrier) {        // If p points to a younger generation, mark the card. diff --git a/src/hotspot/share/gc/cms/parOopClosures.inline.hpp b/src/hotspot/share/gc/cms/parOopClosures.inline.hpp --- a/src/hotspot/share/gc/cms/parOopClosures.inline.hpp +++ b/src/hotspot/share/gc/cms/parOopClosures.inline.hpp @@ -52,7 +52,7 @@        new_obj = ((ParNewGeneration*)_g)->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);      } -    RawAccess<>::oop_store(p, new_obj); +    RawAccess::oop_store(p, new_obj);    }  }

StefanK

On 2018-03-22 17:01, Stefan Karlsson wrote:

Hi,

This patch needs Erik's change to the LoadProxies: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2018-March/021504.html

to build on fastdebug. Here's a rebased patch: http://cr.openjdk.java.net/~stefank/8199946/webrev.02/ Thanks, StefanK On 2018-03-21 18:27, Stefan Karlsson wrote: Hi all,

Please review this patch to get rid of the oopDesc::load/store functions and to move the oopDesc::encode/decode functions to a new CompressedOops subsystem. http://cr.openjdk.java.net/~stefank/8199946/webrev.01 https://bugs.openjdk.java.net/browse/JDK-8199946 When the Access API was introduced many of the usages of oopDesc::loaddecodeheapoop, and friends, were replaced by calls to the Access API. However, there are still some usages of these functions, most notably in the GC code. This patch is two-fold: 1) It replaces the oopDesc load and store calls with RawAccess equivalents. 2) It moves the oopDesc encode and decode functions to a new, separate, subsystem called CompressedOops. A future patch could even move all the Universe::narrowoop variables over to CompressedOops. The second part has the nice property that it breaks up a circular dependency between oop.inline.hpp and access.inline.hpp. After the change we have: oop.inline.hpp includes: access.inline.hpp compressedOops.inline.hpp access.inline.hpp includes: compressedOops.inline.hpp Thanks, StefanK



More information about the hotspot-dev mailing list