RFR: 8256166: [C2] Registers get confused on Big Endian after 8221404

Martin Doerr mdoerr at openjdk.java.net
Wed Nov 11 15:17:56 UTC 2020


On Wed, 11 Nov 2020 14:10:40 GMT, Claes Redestad <redestad at openjdk.org> wrote:

>> C2 crashes with broken register encoding on Big Endian platforms after JDK-8221404 was pushed.
>> Reason is that int values "_RM_I" are pairwise swapped on 64 bit Big Endian platforms.
>
> Sorry for causing this headache. Patch looks OK to me, though I wish there was a cleaner way of doing this.
> 
> Some time in the future I think we should consider refactoring this constructor to be RegMask(uintptr_t, uintptr_t, ...) and drop the _RM_I alias, but that pushes the complexity down into .ad files which means it'll probably be even trickier to maintain.

Hi Claes,
thanks for your help and review! Yeah, looks like more cleanup could be done, but we need to fix this severe issue urgently.
I'll integrate it if there are no objections.

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

PR: https://git.openjdk.java.net/jdk/pull/1165


More information about the hotspot-compiler-dev mailing list