RFR: 8229451: ZGC: Make some roots invisible to the heap iterator
erik.osterlund at oracle.com
Thu Aug 22 08:03:19 UTC 2019
On 2019-08-21 15:43, Per Liden wrote:
> Returned to this patch and did some more testing, and realized that
> the UnhandledOops checker will complain about the raw oop. Adjusted
> the code to avoid that.
> Diff: http://cr.openjdk.java.net/~pliden/8229451/webrev.1-diff
> Full: http://cr.openjdk.java.net/~pliden/8229451/webrev.1
> Testing: Passed tier1-3
> On 8/14/19 10:27 AM, Per Liden wrote:
>> Thanks Erik!
>> I agree that another path in ZRootIterator is unfortunate, but the
>> alternatives I've managed to come up with tend to be worse.
>> On 8/14/19 9:57 AM, Erik Osterlund wrote:
>>> Hi Per,
>>> Unfortunate with another special path in the root iterator. But
>>> alternatives also look bad. Looks good.
>>>> On 13 Aug 2019, at 10:42, Per Liden <per.liden at oracle.com> wrote:
>>>> JDK-8227226 can temporarily create long objects on the heap,
>>>> which later become oop arrays, when the array initialization has
>>>> been completed. This is fine from a sampling/reporting point of
>>>> view (the things done in the MemAllocator::Allocation destructor),
>>>> since that only happens after the final klass pointer has been
>>>> installed. However, if a heap iteration (via ZHeapIterator) happens
>>>> before the final klass pointer has been installed, it will then see
>>>> the long. As far as I can tell, this isn't a big deal, unless
>>>> that heap iteration is out to JVMTI-tag all long instances. In
>>>> that case, we tag a long which will later become an oop array,
>>>> which seems wrong and potentially problematic. To avoid this, we
>>>> want to be able to hide these roots from the heap iterator until
>>>> the final klass pointer has been installed.
>>>> The approach here is that these temporary long objects are not
>>>> kept alive in a Handle, but instead treated as a special root in
>>>> ZThreadLocalData, that can optionally be made invisible to the
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8229451
>>>> Webrev: http://cr.openjdk.java.net/~pliden/8229451/webrev.0
More information about the hotspot-gc-dev