8034761: Remove the do_code_roots parameter from process_strong_roots
mikael.gerdin at oracle.com
Thu Feb 13 08:30:41 UTC 2014
On Wednesday 12 February 2014 10.43.33 Stefan Karlsson wrote:
> Hi all,
> Please, review this patch to remove the do_code_roots parameter from
> The changes done are:
> - Change the code to rely on the ScannningOption so parameter instead of
> - Change GenMarkSweep and G1MarkSweep to adjust the code roots with the
> help of process_strong_roots instead of doing it as a separate phase
> after process_strong_roots.
> - Removed the unused FalseClosure.
> After this patch the adjust phase of the GenMarkSweep and G1MarkSweep
> will use the generic code in process_strong_roots, which mark/claim the
> nmethods before they are processed. Before the patch these two Serial
> Old GC adjust phases skipped the mark/claim part. No noticeable Serial
> Old GC time increases were found when this patch was performance tested.
> This cleanup is needed/wanted for G1 Class Unloading.
I think the change is good but I have a comment about the changes to G1's
3399 // We apply the relevant closures to all the oops in the
3400 // system dictionary, the string table and the code cache.
3401 const int so = SO_AllClasses | SO_Strings | SO_AllCodeCache;
Shouldn't you remove SO_AllCodeCache here since you plan to go through the
entire code cache just below?
Otherwise you're just going to do all the nmethod liveness verification work
twice since G1VerifyCodeRootOopClosure only adds verification (compared to
VerifyRootsClosure) if the non-default flag +G1VerifyHeapRegionCodeRoots is
More information about the hotspot-gc-dev