Make Ref.read Ref.write instructions #5415
Closed
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.
Overview
Benchmark:
Old:
New
So, a difference of
675.29µs - 659.252µs = 16.038µs
, and(16.038µs / 1000 repetitions) / 2 calls = 8.019ns per foreign call
Implementation notes
Implements Ref.read/Ref.write as instructions. Can also do Ref.cas/Ref.readForCas if it seems worthwhile.
Interesting/controversial decisions
This seems like a pretty minor optimization, we need to be careful about doing too many of these as well because each one increases the code-size of our critical path.