-
-
Notifications
You must be signed in to change notification settings - Fork 727
feat(minifier): compress Object(expr)(args) to (0, expr)(args)
#13092
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(minifier): compress Object(expr)(args) to (0, expr)(args)
#13092
Conversation
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. |
CodSpeed Instrumentation Performance ReportMerging #13092 will not alter performanceComparing Summary
Footnotes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a JavaScript minification optimization that compresses Object(expr)(args) function calls to the more compact (0, expr)(args) form, reducing bundle size while maintaining equivalent runtime behavior.
Key changes:
- Implemented
try_rewrite_object_callee_indirect_callmethod to detect and transformObject(expr)(args)patterns - Added comprehensive test coverage for the optimization including edge cases
- Achieved measurable size reductions in real-world bundles (victory.js: ~1.85kB, antd.js: ~20kB)
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| crates/oxc_minifier/src/peephole/substitute_alternate_syntax.rs | Implements the core optimization logic and test cases |
| tasks/minsize/minsize.snap | Shows benchmark results demonstrating bundle size improvements |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
d084941 to
2b0ecd5
Compare
|
I'm wondering where the |
Merge activity
|
…13092) Compress `Object(expr)(args)` to `(0, expr)(args)`. This can be done because - the function call throws an error if the callee is not a function. - `Object(expr)` would output a function if and only if `expr` is a function. --- **References** - [spec of `Object()`](https://tc39.es/ecma262/2025/multipage/fundamental-objects.html#sec-object-value)
2b0ecd5 to
31cf14e
Compare
…13092) Compress `Object(expr)(args)` to `(0, expr)(args)`. This can be done because - the function call throws an error if the callee is not a function. - `Object(expr)` would output a function if and only if `expr` is a function. --- **References** - [spec of `Object()`](https://tc39.es/ecma262/2025/multipage/fundamental-objects.html#sec-object-value)
31cf14e to
dea41dc
Compare
|
@magic-akari My guess is that it was generated by webpack. |

Compress
Object(expr)(args)to(0, expr)(args).This can be done because
Object(expr)would output a function if and only ifexpris a function.References
Object()