chore: Remove ssa::value::Value
to greatly reduce memory usage
#3821
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.
Description
Problem*
Working towards reducing memory usage in SSA for #3380
Summary*
This PR "inlines" the
ssa::value::Value
enum intossa::value::ValueId
to make theValueId
itself an enum and allow us to removeValue
entirely. Doing this eliminates a large portion of memory usage as we no longer need to store values in separate maps at all. As an example,instruction_results: HashMap<InstructionId, Vec<Value>>
alone takes up over 30% of the memory usage in #3380. In general, sinceValueId
s can be stored directly on Instructions, they are easier to free after each pass is finished so the total memory usage of the SSA representation grows less after each pass.Additional Context
This PR is to better keep track of this change which currently is not close to completion.
Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.