RFR: Traveral GC heuristics
Roman Kennke
rkennke at redhat.com
Fri Jan 19 10:52:53 UTC 2018
Am 19.01.2018 um 00:21 schrieb Christine Flood:
> Can we at least include a number of comments that we are using SATB
> queues for convenience but this isn't using an SATB algorithm.
> Otherwise future developers will curse us for misleading them.
I've added this note on top of shenandoahTraversalGC.hpp:
/**
* NOTE: We are using the SATB buffer in thread.hpp and
satbMarkQueue.hpp, however, it is not an SATB algorithm.
* We're using the buffer as generic oop buffer to enqueue new values
in concurrent oop stores, IOW, the algorithm
* is incremental-update-based.
*/
> Is there some way to come up with a common abstraction for partial gc
> and traversal gc so we don't have to have all those duplicate timings?
Aleksey also noted this with regards to conc-mark. I wanted it to not
impact existing code for the start. I'll see into refactoring and
commoning the code after the initial change is in and got some testing
and play time?
> You have the MWF flag, but I don't see the implementation. You need
> something in ShenandoahBarrierSet to see if the object being written
> to was allocated after TAMS and if so, both the object and the field
> need to be marked.
I've only implemented it in C2. It's not checking TAMS (because I don't
really maintain a usable TAMS) but instead enqueue the target object
unconditionally. I've probably not understood MWF correctly? Should I
rip it out and put it back in later, and hopefully correct?
I will post a revised changeset with the above comment added later in
this thread.
Roman
More information about the shenandoah-dev
mailing list