RFR: 8033923: Use BufferingOopClosure for G1 code root scanning

Mikael Gerdin mikael.gerdin at oracle.com
Fri Feb 7 15:56:50 UTC 2014


On Friday 07 February 2014 16.38.26 Stefan Karlsson wrote:
> On 2014-02-07 16:04, Mikael Gerdin wrote:
> > Stefan,
> > 
> > On Friday 07 February 2014 14.23.16 Stefan Karlsson wrote:
> >> Hi all,
> >> 
> >> Please review this patch to use BufferingOopClosure for the code root
> >> scanning in G1.
> >> 
> >> Webrev:
> >>    http://cr.openjdk.java.net/~stefank/8033923/webrev.00
> > 
> > There is some time accounting in G1RemSet::scanRS
> > 
> > When you call buf_scan_non_heap_roots.done() in g1_process_strong_roots we
> > may miss accounting some of the time spent handling code roots from
> > regions.
> > 
> > I think you need to pass down the buf_scan_non_heap_roots closure all the
> > way down to ScanRSClousre::scan_strong_code_roots and construct the
> > CodeBlobToOopClosure there to be able to call .done() before the update of
> > _strong_code_root_scan_time_sec.
> > 
> > Alternatively you may be able to add the closure application time from
> > after the extraction of the "object copying" data to the scan_rs
> > phase_time after the done()-call.
> 
> OK. I see what you mean.
> 
> I should probably only use the BufferingOopClosure for the
> process_strong_roots call, and use a non-buffering
> OopClosure/CodeBlobToOopClosure pair for the oops_into_collection_set_do
> call.

I'm fine with that as well.
/Mikael

> 
> thanks,
> StefanK
> 
> > /Mikael
> > 
> >> RFE:
> >>    https://bugs.openjdk.java.net/browse/JDK-8033923
> >> 
> >> The patch builds upon the changes in:
> >>    RFR: 8033764: Remove the usage of StarTask from BufferingOopClosure
> >>    mail.openjdk.java.net/pipermail/hotspot-gc-dev/2014-February/009364.ht
> >>    ml
> >> 
> >> thanks,
> >> StefanK




More information about the hotspot-gc-dev mailing list