In G1RemSet::refine_card the code stacks multiple OopClosures like TriggerClosure, G1InvokeIfNotTriggeredClosure, G1Mux2Closure, FilterIntoCSClosure, FilterOutOfRegionClosure and G1UpdateRSOrPushRefOopClosure to achieve the same effect as a few if-then-else statements.
This is complicated and hard to understand, and even the compiler does not seem to be able to inline through it to avoid unnecessary call overhead.
Remove this unnecessarily generalized way of doing things. This will also allow removal of quite a bit of code.
This should give a few percent of (scan/update rs) performance too.
This is complicated and hard to understand, and even the compiler does not seem to be able to inline through it to avoid unnecessary call overhead.
Remove this unnecessarily generalized way of doing things. This will also allow removal of quite a bit of code.
This should give a few percent of (scan/update rs) performance too.
- relates to
-
JDK-8069760 When iterating over a card, G1 often iterates over much more references than are contained in the card
-
- Resolved
-
-
JDK-8175554 Improve G1UpdateRSOrPushRefClosure
-
- Resolved
-
-
JDK-8071280 Specialize HeapRegion::oops_on_card_seq_iterate_careful() for use during concurrent refinement and updating the rset
-
- Resolved
-