emulator: Remove vestiges of special handling of x(0) #7387
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the BEAM emulator, X register 0 (
x(0)
) used to be specially handled by the macror(0)
so that it could be placed in a CPU register.That made sense for platforms with many registers such as Sparc and PowerPC. For the register-starved x86_64 platform it is not possible to allocate a CPU register for
x(0)
. Therefore, in 1f996cc (part of Erlang/OTP 19), the special handling ofx(0)
was removed. Removing that special case simplified the code in many places.Get rid of the vestiges of the special handling of
x(0)
. While at it, also re-introduce theREG_xregs
attribute for the variable holding the pointer to the X registers.