Integrated: 8292203: AArch64: Represent Registers as values

Vladimir Ivanov vlivanov at openjdk.org
Thu Aug 25 16:55:37 UTC 2022


On Wed, 10 Aug 2022 21:44:50 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.

This pull request has now been integrated.

Changeset: 2fe0ce01
Author:    Vladimir Ivanov <vlivanov at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/2fe0ce01485d7b84dc109d3d4f24bdd908c0e7cf
Stats:     527 lines in 15 files changed: 121 ins; 53 del; 353 mod

8292203: AArch64: Represent Registers as values

Reviewed-by: kvn, aph

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

PR: https://git.openjdk.org/jdk/pull/9826


More information about the shenandoah-dev mailing list