RFR: 8205607: Use oop_iterate instead of oop_iterate_no_header
Kim Barrett
kim.barrett at oracle.com
Mon Jun 25 22:18:59 UTC 2018
> On Jun 25, 2018, at 6:11 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> Some places that used to do oop_iterate_no_header now do oop_iterate
> using some arbitrary (based on signature type) OopIterateClosure.
>
> MutableSpace
> GenCollectedHeap
> PsOldSpace
>
> It's only by knowing the closure is a BasicOopIterateClosure that we
> know the metadata won't be processed. And that may require tracing
> through several levels of calls. [There may also be a (small)
> performance cost associated with that in some cases, since we'll be
> calling the virtual do_metadata function for each of the objects being
> processed to discover the metadata should be skipped. But I'm mostly
> concerned about knowing that we're dealing with a no-header iteration.]
>
> It might be clearer if the oop_iterate_no_header names were retained
> here, with the argument type being changed to BasicOopIterateClosure*.
>
To be more explicit, I think the above named classes were providing a
more restrictive API than a full oop_iterate, and I'm not sure that
should change.
More information about the hotspot-gc-dev
mailing list