RFR(XXS): G1: Duplicated code in G1UpdateRSOrPushRefOopClosure::do_oop_nv()

John Cuthbertson john.cuthbertson at oracle.com
Thu Jul 5 19:24:19 UTC 2012

Hi Everyone,

Can I have a couple of volunteers to review this very small change? The 
webrev can be found at: http://cr.openjdk.java.net/~johnc/7173712/webrev.0/

While looking at some collect profiles in analyzer with an engineer in 
the JVM performance team, we noticed a high amount of CPU time being 
spent in code inlined into  G1UpdateRSOrPushRefOopClosure::do_oop_nv(). 
Examination of this code proved that it was code from  
G1RemSet::par_write_ref() - specifically it was code that was fetching 
the HeapRegion for the object and checking for a cross-region reference. 
This code also existed (and was executed) in the 
G1UpdateRSOrPushRefOopClosure::do_oop_nv(). So effectively we were 
executing some duplicated code unnecessarily. The solution was to 
refactor the code for G1UpdateRSOrPushRefOopClosure::do_oop_nv() 
slightly and manually inline the important call from 
G1RemSet::par_write_ref() - eliminating executing the replicated code.

Collect profiles in analyzer, the GC test suite, and jprt.



More information about the hotspot-gc-dev mailing list