RFR: 8292203: AArch64: Represent Registers as values [v2]
Quan Anh Mai
duke at openjdk.org
Mon Aug 15 10:28:19 UTC 2022
On Thu, 11 Aug 2022 21:24:37 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
>> (It's a PR dependent on #9815.)
>>
>> Along with x86 ([JDK-8292153](https://bugs.openjdk.org/browse/JDK-8292153)), I propose to refactor Register classes on AArch64 and migrate away from pointer-based representation.
>>
>> The motivation is the same: improve compile-time checks and avoid ambiguities between overloads due to implicit conversions between pointers and integral types.
>>
>> Proposed change hides pointer representation behind value class.
>>
>> Pointer-based representation is kept to avoid massive migration of users (from `->` to `.`) and to enable incremental migration on per-platform basis (pointer-based representation is assumed in shared code).
>>
>> Code quality improves:
>> GCC: https://godbolt.org/z/r6G36facj
>> Clang: https://godbolt.org/z/x5oPdYEPM
>>
>> (I noticed one downside: slowdebug builds become slower, because `operator->` isn't inlined there. If it becomes a problem, migrating performance-sensitive places from `->` to `.` should solve the problem.)
>>
>> Testing: hs-tier1 - hs-tier5
>>
>> PS: a number of cleanups are incorporated. In particular, I decided to expand all macros from `register.hpp` because IMO they add confusion rather than improve readability.
>
> Vladimir Ivanov has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains four commits:
>
> - Merge branch 'master' into rwrapper.aarch64
> - 8292203: AArch64: Represent Registers as values
> - cleanups
> - x86: Register class wrappers
src/hotspot/cpu/aarch64/register_aarch64.hpp line 39:
> 37: int _encoding;
> 38:
> 39: constexpr Register(int encoding, bool unused) : _encoding(encoding) {}
Why do we need unused here? If the intention is to prevent implicit conversion from `int` to `Register` then you can mark the constructor as `explicit`. Thanks.
-------------
PR: https://git.openjdk.org/jdk/pull/9826
More information about the hotspot-dev
mailing list