perf(allocator): add #[cold] to to error handling functions#20967
Conversation
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this comment.
Pull request overview
Re-applies the previously lost allocator performance tweak by marking allocation error paths as cold, helping the compiler keep hot allocation code better laid out.
Changes:
- Mark
new_layout_erras#[cold]to biasLayout::repeatoverflow/error paths as unlikely. - Mark
handle_alloc_erroras#[cold]+#[inline(never)]to keep panic/abort code out of hot paths.
59ab6d8 to
f341b81
Compare
3e04edd to
ddd06ac
Compare
Merge activity
|
Repeat of #18181. #20963 wiped all changes to `bumpalo_alloc.rs`, going back to a fresh copy of `bumpalo`. Re-apply changes from #18181 which were lost in the process - marking error handling functions as `#[cold]`. This PR differs from #18181 in one minor respect. `new_layout_err` is not marked `#[inline(never)]` in this PR. The function is a no-op (unconditionally returns a ZST), so we do want it inlined, but with the`#[cold]`attribute to hint to compiler that it's a cold path.
ddd06ac to
b1da750
Compare
f341b81 to
cbc0c21
Compare
### 🐛 Bug Fixes - fc7f60c allocator: Revert changes to `get_current_chunk_footer_field_offset` (#20964) (overlookmotel) - 31316c8 semantic: Rebind class expressions before identifier checks (#20916) (camc314) ### ⚡ Performance - fb52383 napi/parser, linter/plugins: Clear buffers and source texts earlier (#21025) (overlookmotel) - 3b7dec4 napi/parser, linter/plugins: Use `utf8Slice` for decoding UTF-8 strings (#21022) (overlookmotel) - 012c924 napi/parser, linter/plugins: Speed up decoding strings in raw transfer (#21021) (overlookmotel) - 55e1e9b napi/parser, linter/plugins: Initialize vars as 0 (#21020) (overlookmotel) - c25ef02 napi/parser, linter/plugins: Simplify branch condition in `deserializeStr` (#21019) (overlookmotel) - 9f494c3 napi/parser, linter/plugins: Raw transfer use `String.fromCharCode` in string decoding (#21018) (overlookmotel) - 91cf105 allocator: Increase initial chunk size from 512B to 16KB (#20968) (overlookmotel) - cbc0c21 allocator: Add `#[cold]` to to error handling functions (#20967) (overlookmotel) - 0503a78 napi/parser, linter/plugins: Faster deserialization of `raw` fields (#20923) (overlookmotel) - a24f75e napi/parser: Optimize string deserialization for non-ASCII sources (#20834) (Joshua Tuddenham) ### 📚 Documentation - c78a57a syntax: Fix typo (#21044) (camc314) - f5e228f allocator: Fix typo in comment (#20972) (overlookmotel) - 7159d51 allocator: Improve doc comment examples for `vec2::Vec` (#20969) (overlookmotel) - b1da750 allocator, data_structures: Correct comments (#20966) (overlookmotel) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>

Repeat of #18181.
#20963 wiped all changes to
bumpalo_alloc.rs, going back to a fresh copy ofbumpalo. Re-apply changes from #18181 which were lost in the process - marking error handling functions as#[cold].This PR differs from #18181 in one minor respect.
new_layout_erris not marked#[inline(never)]in this PR. The function is a no-op (unconditionally returns a ZST), so we do want it inlined, but with the#[cold]attribute to hint to compiler that it's a cold path.