[master] RFR: 8347711: [Lilliput] Parallel GC support for compact identity hashcode
Roman Kennke
rkennke at openjdk.org
Mon Mar 17 14:21:04 UTC 2025
On Mon, 17 Mar 2025 13:30:19 GMT, Zhengyu Gu <zgu at openjdk.org> wrote:
> > > Can you articulate why object cannot grow?
> >
> >
> > Yes. The way PSParallelCompact currently works: it collects liveness information during the marking phase. At the end of it, we know precisely how many words are live in each reagion. In this phase, we also determine where objects cross region boundaries. Then, during the summary phase, it uses this information to determine which source regions get compacted into which target regions. It also determines the addresses at which a region gets split - that is the part below the split-point gets compacted into one region, and the part above the split point gets compacted into another region. Then, during the forwarding phase, all those infos are used to calculate the target addresses for each object in parallel. It is now possible to divide the forwarding work across several GC worker threads because we know exactly where each region gets compacted into.
>
> You can count liveness with/without object expansion during mark phase, can you?
Yes, I can. I actually implemented that in an earlier attemp.
> I assume that only regions "overflow" due to expansion, can cause problem, but chance is very slim, special case them won't be so bad, right?
The problem is not potential overflow. In-fact, overflow can not really happen. The problem is that all those calculations are assumed and required to be precise. Turning them into guesses breaks the algorithm.
-------------
PR Comment: https://git.openjdk.org/lilliput/pull/195#issuecomment-2729690308
More information about the lilliput-dev
mailing list