RFR: 8298281: Serial: Refactor MarkAndPushClosure

Albert Mingkun Yang ayang at openjdk.org
Wed Dec 7 20:32:07 UTC 2022


On Wed, 7 Dec 2022 17:00:43 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:

>> Simple change of removing some redundant code in oop-iteration.
>> 
>> Test: hotspot_gc
>
> src/hotspot/share/gc/serial/markSweep.hpp line 175:
> 
>> 173: class MarkAndPushClosure: public ClaimMetadataVisitingOopIterateClosure {
>> 174: public:
>> 175:   MarkAndPushClosure(int claim) : ClaimMetadataVisitingOopIterateClosure(claim) {}
> 
> We always pass in the same value for `claim`. An alternative would be to remove this parameter and pass it to ClaimMetadataVisitingOopIterateClosure here. But maybe you liked having all the claim values together in one location in markSweep.cpp?

I didn't think too much on this. Having all claim flags in one place does seem desirable, but either approach sounds OK IMO.

> src/hotspot/share/gc/serial/markSweep.hpp line 179:
> 
>> 177:   template <typename T> void do_oop_work(T* p);
>> 178:   virtual void do_oop(      oop* p) { do_oop_work(p); }
>> 179:   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
> 
> This now uses a function defined in the inline.hpp file, without including it. Is there a reason why the do_oop functions where moved out from the inline.hpp file?

No particular reason other than copying it from `G1CMOopClosure`. This is a `hpp` file; callers need to include `inline.hpp` anyway.

-------------

PR: https://git.openjdk.org/jdk/pull/11562


More information about the hotspot-gc-dev mailing list