RFR: 8033923: Use BufferingOopClosure for G1 code root scanning

Mikael Gerdin mikael.gerdin at oracle.com
Fri Feb 7 07:04:10 PST 2014


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.

/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.html
> 
> thanks,
> StefanK



More information about the hotspot-gc-dev mailing list