perf(allocator): remove Arc from AllocatorPool#11760
Merged
graphite-app[bot] merged 1 commit intomainfrom Jun 16, 2025
Merged
Conversation
Member
Author
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
This was referenced Jun 16, 2025
CodSpeed Instrumentation Performance ReportMerging #11760 will not alter performanceComparing Summary
|
425def8 to
16281db
Compare
Contributor
Merge activity
|
16281db to
cdc2877
Compare
Follow-on after #11736. Remove the overhead of `Arc` from `AllocatorPool`. This does introduce more lifetimes in linter, which is unwelcome, but as well as removing the synchronization overhead of `Arc`, I think it reflects the semantics of what we're trying to do more correctly. `AllocatorPool` solely owns the `Vec<Allocator>` pool. It doesn't need to (and shouldn't) share ownership of it with `AllocatorGuard`s, which `Arc` does. So `AllocatorGuard`s can just hold a reference to the `AllocatorPool`.
cdc2877 to
f539f64
Compare
This was referenced Jun 17, 2025
Boshen
added a commit
that referenced
this pull request
Jun 19, 2025
## [1.2.0] - 2025-06-19 ### 🚀 Features - 8c341a2 sema/check: Ts setters cannot have initializers (#11695) (Don Isaac) - 38dc614 oxc_linter: Reuse allocators (#11736) (camc314) - bf8263d playground: Allow specifying a JSON string as the linter config (#11710) (Nicholas Rayburn) - 0b4261b vscode: Add `oxc.requireConfig` configuration (#11700) (Sysix) - 52ecc87 linter: Implement import/extensions (#11548) (Tyler Earls) - 094b81c language_server: Add `unusedDisableDirectives` option (#11645) (Sysix) ### 🐛 Bug Fixes - 3d88eeb linter/no-console: False negative when `console.*` methods are used as args to functions (#11790) (camc314) - c80e405 linter/no-new-wrappers: Fix panic in fixer with multi byte chars (#11773) (camc314) - e58a0b0 linter: Panic in unicorn/consistent-function-scoping (#11772) (camc314) - 80c87d4 linter: Typo in typescript/consistent-index-object-style (#11744) (camc314) - ff775e9 linter/consistent-function-scoping: Descriptive diagnostic labels (#11682) (Don Isaac) - 989634a linter/no-inner-declaration: False negative with for loops (#11692) (camc314) - b272b91 linter/no-undef: False negative with unresolved ref after type ref (#11721) (camc314) - 6252275 linter: Panic in import/extensions with empty file names (#11720) (camc314) - f34e432 linter: Use fixer::noop in dangerous cases for eslint/no-var (#11693) (camc314) - 6c2b41c linter/consistent-function-scoping: Allow functions in TS modules/namespaces (#11681) (Don Isaac) - 2ca1c70 linter/exhaustive-deps: False positive with TS Non null assertion operator (#11690) (camc314) - ee15f7d linter: False negative in typescript/prefer-function-type (#11674) (camc314) - abd0441 linter: Add missing menuitemradio and menutitemcheckbox roles (#11651) (Daniel Flynn) - 8776301 linter/no-inner-declarations: Flag `var` statement as body of `for` loop (#11632) (overlookmotel) ### 🚜 Refactor - 5ca3d04 ast: Add `TSArrayType` as `AstKind` (#11745) (camchenry) - abdbaa9 language_server: Use rule name directly from OxcCode instead of parsing out of the stringified version of OxcCode (#11714) (Nicholas Rayburn) - 219adcc ast: Don't generate AstKind for ArrayExpressionElement (#11684) (Ulrich Stark) - c1be6b8 linter: Shorten Span construction (#11686) (Ulrich Stark) - 4ca659c linter: Cleanup typescript/prefer-function-type (#11672) (Brad Dunbar) - 8e30c5f ast: Don't generate AstKind for ForStatementInit (#11617) (Ulrich Stark) ### 📚 Documentation - ea6ce9d linter: Fix typo in import/no-namespace (#11741) (camc314) - 8b6076e linter: Document options for the `typescript/array-type` rule (#11665) (yefan) ### ⚡ Performance - f539f64 allocator: Remove `Arc` from `AllocatorPool` (#11760) (overlookmotel) - cfdc518 linter/no-inner-declarations: Move work to cold path (#11746) (overlookmotel) - 7c0fff7 linter: Skip running `consistent-function-scoping` on `.d.ts` files (#11739) (camc314) - b34c6f6 parser,semantic: Improve handling of diagnostics (#11641) (Boshen) - 2cd786b linter/no-inner-declarations: Remove unnecessary code and reduce branches (#11633) (overlookmotel) ### 🧪 Testing - 44a9df8 linter: Update testsuite for `no-undef` (#11706) (Sysix) Co-authored-by: Boshen <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Follow-on after #11736. Remove the overhead of
ArcfromAllocatorPool.This does introduce more lifetimes in linter, which is unwelcome, but as well as removing the synchronization overhead of
Arc, I think it reflects the semantics of what we're trying to do more correctly.AllocatorPoolsolely owns theVec<Allocator>pool. It doesn't need to (and shouldn't) share ownership of it withAllocatorGuards, whichArcdoes. SoAllocatorGuards can just hold a reference to theAllocatorPool.