RFR: 8199946: Move load/store and encode/decode out of oopDesc

Erik Österlund erik.osterlund at oracle.com
Fri Mar 23 12:28:53 UTC 2018


Hi Stefan,

Looks good. There is one remaining OOP_NOT_NULL in 
psScavenge.inline.hpp, but I do not need another webrev.

Thanks,
/Erik

On 2018-03-22 20:28, Stefan Karlsson wrote:
> 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_NOT_NULL>::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_NOT_NULL>::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::load_decode_heap_oop, 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::_narrow_oop 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