refactor: convert Token storage from AoS to SoA for better memory locality #179
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.
Summary
This PR refactors the Token storage from Array of Structs (AoS) to Struct of Arrays (SoA) pattern to improve memory locality and cache utilization.
Changes
New
Tokensstruct: Implements SoA pattern with separateVecfields for each token propertydst_lines,dst_cols,src_lines,src_cols,source_ids,name_idsUpdated modules:
SourceMapBuilder: Now builds tokens using the SoA structureSourceMap: Stores and accesses tokens in SoA formatConcatSourceMapBuilder: Works with SoA tokens for concatenationencodemodule: Iterates over SoA structure for better cache localitydecodemodule: Populates SoA structure when parsing sourcemapsBackward compatibility: The
Tokenstruct is still used in APIs, with conversion happening internallyBenefits
Test Plan
All existing tests pass without modification, confirming backward compatibility.
🤖 Generated with Claude Code