RFR (T) 8250519: [REDO] Move mirror oops from Universe into OopStorage
Daniel D. Daugherty
daniel.daugherty at oracle.com
Fri Jul 24 21:44:18 UTC 2020
On 7/24/20 5:37 PM, Daniel D. Daugherty wrote:
> On 7/24/20 5:07 PM, coleen.phillimore at oracle.com wrote:
>> Summary: The original patch but add a null pointer check so an
>> OopHandle is not created if a NULL is read from the archive.
>>
>> If a NULL is read from the archive, we shouldn't create an OopHandle
>> for it because one will be created in initialize_basic_type_mirrors.
>> The assert added in the previous patch I pushed detected that.
>>
>> incremental change to original change:
>> http://cr.openjdk.java.net/~coleenp/2020/8250519.01.incr/webrev
>> full webrev at
>> http://cr.openjdk.java.net/~coleenp/2020/8250519.01/webrev
>>
>> Retested with tier1-3.
>>
>> Thanks,
>> Coleen
>
> Okay. So I compared this patch:
>
> http://cr.openjdk.java.net/~coleenp/2020/8249938.02/webrev/open.patch
>
> with this patch:
>
> http://cr.openjdk.java.net/~coleenp/2020/8250519.01/webrev/open.patch
Okay. I looked at the bits that were pushed using 8249938 (changeset
e9c7deca9a98)
and those bits don't have the code below either.
The patch above compared with the bits that were pushed using 8249938
(changeset
e9c7deca9a98) only shows the change described above so we're good here.
Thumbs up!
Dan
>
> And in addition to the change described above, there are two changes
> in the original patch that are not in the new patch:
>
> --- old/src/hotspot/share/oops/oopHandle.hpp 2020-07-23
> 21:40:56.177635044 -0400
> +++ new/src/hotspot/share/oops/oopHandle.hpp 2020-07-23
> 21:40:55.717623090 -0400
> @@ -52,6 +52,8 @@
>
> inline void release(OopStorage* storage);
>
> + inline void replace(oop obj);
> +
> // Used only for removing handle.
> oop* ptr_raw() const { return _obj; }
> };
> --- old/src/hotspot/share/oops/oopHandle.inline.hpp 2020-07-23
> 21:40:56.721649181 -0400
> +++ new/src/hotspot/share/oops/oopHandle.inline.hpp 2020-07-23
> 21:40:56.257637123 -0400
> @@ -54,4 +54,10 @@
> }
> }
>
> +inline void OopHandle::replace(oop obj) {
> + oop* ptr = ptr_raw();
> + assert(ptr != NULL, "should not use replace");
> + NativeAccess<>::oop_store(ptr, obj);
> +}
> +
> #endif // SHARE_OOPS_OOPHANDLE_INLINE_HPP
>
> So it looks like you are removing this OopHandle::replace() function
> also. Is that intentional?
>
> Dan
More information about the hotspot-runtime-dev
mailing list