perf(span): align Span
same as usize
#8298
Draft
+118
−48
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.
Span
consists of 2 xu32
(8 bytes total). AlignSpan
on 8 bytes on 64-bit platforms. This means that, on 64-bit platforms,Span
can be treated as equivalent to au64
and stored in a single register (instead of requiring 2).A side-effect is that all AST structs also become aligned on 8. This will be a useful property later on as we can remove alignment calculations from
Allocator::alloc
(since everything now has same alignment).BooleanLiteral
(andBoundaryAssertion
,CharacterClassEscape
andIndexedReference
fromoxc_regular_expression
crate) increase from 12 bytes to 16 bytes due to the higher alignment. But this makes no practical difference as they'd almost always end up with padding around them in arena anyway, as they'll be surrounded by 8-aligned types.