Remove initialized-bytes tracking from BorrowedBuf and BorrowedCursor
#148937
+53
−371
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.
As discussed extensively in libs-api, the initialized-bytes tracking primarily benefits calls to
read_bufthat end up initializing the buffer and callingread, at the expense of calls toread_bufthat don't need to initialize the buffer. Essentially, this optimizes for the past at the expense of the future. If people observe performance issues usingread_buf(or something that calls it) with a givenReadimpl, they can fix those performance issues by implementingread_buffor thatRead.Update the documentation to stop talking about initialized-but-unfilled bytes.
Remove all functions that just deal with those bytes and their tracking, and remove usage of those methods.
Make
BorrowedCursor::as_mutsafe, as it's no longer a safety problem if the caller uninitializes bytes.Remove
BorrowedCursor::advanceas there's no longer a safe case for advancing within initialized-but-unfilled bytes. RenameBorrowedCursor::advance_uncheckedtoadvance.Update tests.
r? @Amanieu