Withdrawn: 8332455: Improve G1/ParallelGC tasks to not override array lengths
Roman Kennke
rkennke at openjdk.org
Wed Jul 10 09:26:21 UTC 2024
On Fri, 17 May 2024 12:02:08 GMT, Roman Kennke <rkennke at openjdk.org> wrote:
> In order to not cause excessive traffic on task queues when scanning large object arrays, G1 and ParallelGC use a way of slicing those arrays into smaller pieces. It overrides the from-space array's length field to track the array slices.
>
> I think it would be cleaner if we improve the tasks such that array slices can be fully encoded in the task and does not require overriding the array length.
>
> This PR borrows the principal encoding and slicing algorithm from Shenandoah (originally written by @shipilev). It also unifies the slicing implementations of the young GC and concurrent marking GC and ParallelGC.
>
> For a description of the encoding and slicing algorithm, see top of arraySlicer.hpp.
>
> On x86 (32-bit) we don't have enough bits in the single-word task to encode the slicing, so I'm extending the task to 64 bits (pointer and two int32 fields).
>
> I put in some efforts to make sure the shared array slicing uses the user-configurable flags ParGCArrayScanChunk and ObjArrayMarkingStride just as before, but TBH, I don't see the point of having those flags as product flags to begin with. I would probably deprecate and remove ParGCArrayScanChunk, and use the develop flag ObjArrayMarkingStride everywhere. YMMV.
>
> Testing:
> - [x] hotspot_gc
> - [x] tier1
> - [x] tier2
This pull request has been closed without being integrated.
-------------
PR: https://git.openjdk.org/jdk/pull/19282
More information about the hotspot-gc-dev
mailing list