[premain] need help merging g1BarrierSetC2.cpp
ioi.lam at oracle.com
ioi.lam at oracle.com
Wed Oct 9 15:23:51 UTC 2024
Thanks Andrew.
I'll test your merge on our CI and then push to premain.
- Ioi
On 10/9/24 7:46 AM, Andrew Dinn wrote:
> Hi Ioi/Vladimir,
>
> I merged the rest of master into premain, fixed the conflicts and
> pushed the result to my premain branch.
>
> https://urldefense.com/v3/__https://github.com/adinn/leyden/tree/premain__;!!ACWV5N9M2RV99hQ!L_H5Q7HrxgwFxgFHEDodn9bmN5PlYgD0PbjCSMB0D8AJpVB-zvJog8wGxXubkqGBozWm8phOCOc$
>
> The merged code built and ran ok on aarch64. On x86 it built ok but
> crashed during the assembly run.
>
> The problem was that the x86 post barrier can now be called from C2
> with tmp and tmp2 allocated by the register allocator. So, that means
> both rcx and rscratch1 are possible values for register tmp. This is a
> problem because the x86 AOT variant of the barrier code pushes rcx and
> rscratch1 to the stack, loads the region grain shift address in to
> rscratch1 and the grain shift into into rcx. It has to be able to use
> rcx in order to be able to execute shrptr(tmp). However, if tmp == rcx
> then the unshifted value is restored into tmp when rcx is popped.
>
> I pushed a follow-up patch to my premain that avoids this problem. It
> uses a pushed register to do the shift and ensures that register
> differs from tmp and rcx.
>
> regards,
>
>
> Andrew Dinn
> -----------
>
>
> On 09/10/2024 07:08, ioi.lam at oracle.com wrote:
>> In the premain branch, we have made some changes in g1BarrierSetC2.cpp
>>
>> commit cc111760a0dd123935e039feb19eaac742f865b2
>> Author: Vladimir Kozlov <vladimir.kozlov at oracle.com>
>> Date: Mon Aug 26 14:21:28 2024
>>
>> Cleanup AOT runtime constants code
>>
>> commit c319a3ee2be0236feab88c9be66d71e6e93b53fc
>> Author: Andrew Dinn <adinn at redhat.com>
>> Date: Wed Aug 21 07:48:22 2024
>>
>> AOT G1 barrier loads region grain and card shifts via runtime
>> constants data area
>>
>> Recently, the following changes in g1BarrierSetC2.cpp have been
>> pushed to mainline that caused conflicts with the leyden changes.
>>
>> commit 81ebbb2463df8b014bb209dc4028668fc78e8327
>> Author: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
>> Date: Mon Oct 7 01:28:18 2024
>>
>> 8341525: G1: use bit clearing to remove tightly-coupled
>> initialization store pre-barriers
>>
>> commit 0b467e902d591ae9feeec1669918d1588987cd1c
>> Author: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
>> Date: Thu Oct 3 01:36:33 2024
>>
>> 8334060: Implementation of Late Barrier Expansion for G1
>>
>>
>> When I tried merging with mainline, I couldn't merge these changes,
>> so I ended up merging to this one (just an hour prior to 0b467e9),
>> and pushed the result to premain.
>>
>> commit c6e7e551928c04b74775b5d4c03eb31232aeb2c9 (master)
>> Author: Aleksey Shipilev <shade at openjdk.org>
>> Date: Thu Oct 3 00:25:42 2024
>>
>> 8341091: CDS: Segmented roots array misses roots
>>
>> Andrew Dinn or Vladimir Kozlov, could you help merging with mainline?
>>
>> Thanks
>>
>> - Ioi
>>
>
More information about the leyden-dev
mailing list