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