RFR: 8144486: Change G1UpdateRSOrPushRefOopClosure to inherit OopClosure

Mikael Gerdin mikael.gerdin at oracle.com
Wed Dec 2 16:01:05 UTC 2015

On 2015-12-02 16:23, Stefan Johansson wrote:
> Hi,
> Please review this change for:
> https://bugs.openjdk.java.net/browse/JDK-8144486
> Webrev:
> http://cr.openjdk.java.net/~sjohanss/8138888/8144486/hotspot.00/

Looks good.

> Background:
> When iterating objects with oop_iterate() there is a special case for
> InstanceRefKlass, if the closure overrides
> apply_to_weak_ref_discovered_field() to return true, the closure will be
> applied to the discovered field, even if the normal checks prevents it.
> This special treatment is needed in certain situations, but it is not
> obvious if it should be done when iterating the object. Currently only
> G1 closures override apply_to_weak_ref_discovered_field() and many of
> them seem to do it without any reason. My initial plan [1] was to remove
> all usage of this special casing but after discussions I realized it
> would be easier to see the effects if doing this one closure at a time.
> Summary:
> This change is for G1UpdateRSOrPushRefOopClosure which is never used
> with oop_iterate and therefore does not need to override
> apply_to_weak_ref_discovered_field(). There is also no need to inherit
> ExtendedOopClosure, so it's changed to inherit OopClosure instead.
> Testing:
> * JPRT
> * RBT
> Thanks,
> Stefan
> [1] https://bugs.openjdk.java.net/browse/JDK-8138888

More information about the hotspot-gc-dev mailing list