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.
This adds new affordances for accessing mapped storage in ArbOS, so that storage offsets can be computed at compile/initialization time, rather than being recomputed each time a data structure is opened. This is useful because storage mapping relies on Keccak256 hashing, which has nontrivial cost to compute.
The basic strategy is to precompute a storage map data structure, which records the hashed offsets of data objects within a storage-backed structure. Then when we open the structure we can use the precomputed storage map, rather than recomputing the hashes.
The L1 pricer and L2 pricer structures are rewritten to use the new affordances, because they are the largest and most complex storage-backed structures in ArbOS. Other data structures are not rewritten. I'm interested in getting reviewer opinions on whether to rewrite more structures in this PR.
This does not require a new format version because the layout of data in storage doesn't change. We only change when we compute the layout.