Commit Graph

79 Commits

Author SHA1 Message Date
HeYunfei
b5d31cc2da
fix(es/utils): Fix detection of hoisting (#6738) 2023-01-03 03:12:01 +00:00
HeYunfei
dabea71c44
fix(es/minifier): Preserve unused imported specifiers (#6458) 2022-11-17 00:52:19 +00:00
Donny/강동윤
743a1aab4f
feat(es/minfiier): Compute more with sequential inliner (#6169) 2022-10-27 00:50:52 +00:00
Donny/강동윤
e9d421bd95
fix(es/minifier): Preserve this in more cases (#6226)
**Related issue (if exists):**

 - Closes https://github.com/swc-project/swc/issues/6175.
 - Closes https://github.com/swc-project/swc/issues/6137.

Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
2022-10-21 09:07:00 +00:00
Donny/강동윤
ea03ce1a82
refactor(es/minifier): Don't create invalid nodes (#6191)
**Description:**

A sequential expression should have at leat two elements.
2022-10-21 00:33:40 +00:00
Donny/강동윤
27896f4751
perf(es/transforms): Exclude old inlining pass (#6203)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6194.
2022-10-19 04:53:46 +00:00
Donny/강동윤
2e153e5555
fix(es/minifier): Don't create a numeric literal with NaN value (#6166) 2022-10-15 12:52:34 +00:00
Donny/강동윤
aec5cdacc6
fix(es/minifier): Preserve this of tagged template literals (#6165)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6146
2022-10-15 09:11:20 +00:00
Donny/강동윤
e88c1c04e1
perf(es/minifier): Remove double-visit of DCE (#6069)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6066.
2022-10-06 16:08:03 +00:00
Austaras
aff4ea5f44
fix(es/minifier): Preserve exports in DCE (#5973) 2022-09-28 05:35:51 +00:00
Donny/강동윤
3c3529cb84
build(rustc): Update rustc (#5943)
**Description:**

This PR updates rustc, and fix some performance bugs of `swc_common`.
2022-09-24 03:33:47 +00:00
Donny/강동윤
e16827cc9d
feat(es/minifier): Drop cycles in nested functions (#5933) 2022-09-22 13:54:49 +00:00
Donny/강동윤
1a182ef8d9
perf(es): Optimize memory layout of AST (#5829) 2022-09-20 12:47:21 +09:00
Donny/강동윤
fe3072b12a
perf(es/minifier): Reduce type sizes (#5843) 2022-09-13 06:45:33 +00:00
Donny/강동윤
b6cf9750ec
perf(es/minifier): Make the expression simplifier more parallel (#5841)
**Description:**

It was not parallel enough.
2022-09-13 06:02:44 +00:00
Donny/강동윤
cfe575e35a
perf(es/minifier): Make expression simplifier stateless and parallel (#5819) 2022-09-11 06:18:44 +00:00
Donny/강동윤
704ea3d48d
perf(es/minifier): Optimize usage of IndexSet (#5814) 2022-09-10 17:11:41 +00:00
Donny/강동윤
c2d10503db
perf(es/minifier): Make passes more parallel (#5773) 2022-09-07 14:28:36 +09:00
Donny/강동윤
8789184d44
perf(es/minifier): Cache the list of bindings for DCE (#5750) 2022-09-05 07:05:44 +00:00
Donny/강동윤
08b2aea2b0
perf(es/minifier): Use efficient logic for entry tracking in DCE (#5749) 2022-09-05 04:35:40 +00:00
Donny/강동윤
2baa640e98
perf(es/minifier): Make passes more parallel (#5741) 2022-09-04 15:34:46 +00:00
Donny/강동윤
6ba6da62d7
perf(es/minifier): Make dead branch remover parallel (#5734) 2022-09-04 07:33:26 +00:00
Donny/강동윤
25c96b4b7a
perf(es/minifier): Use faster hash algorithm for DCE (#5725) 2022-09-03 14:33:09 +09:00
Donny/강동윤
5e151c8a8e
feat(es/minifier): Support cycles in DCE (#5715) 2022-09-03 04:41:54 +00:00
Donny/강동윤
8827c38faf
feat(es/minifier): Make DCE single-pass (#5699) 2022-09-01 16:30:21 +00:00
Donny/강동윤
3eb1f4b2b1
chore(ci): Fix lints (#5462) 2022-08-12 13:13:35 +00:00
Austaras
e35990390b
fix(es/fixer): Remove needless parens for nested ?? (#5432) 2022-08-10 08:26:33 +00:00
Austaras
2e9c9bea1a
fix(es/minifier): Fix size calculation of numbers (#5232) 2022-07-17 18:07:35 +09:00
Donny/강동윤
36d960c7e9
perf(es/hygiene): Make hygiene faster (#4952) 2022-06-15 14:36:57 +00:00
LongYinan
db9f7a5ad4
chore(ci): Fix publish build on Windows (#4970) 2022-06-14 15:58:10 +00:00
Donny/강동윤
35c93be60f
perf(es/transforms): Make transforms parallel (#4939) 2022-06-11 07:42:43 +00:00
Donny/강동윤
06420d99bb
fix(es/minifier): Don't drop typeof (#4883) 2022-06-05 07:43:53 +00:00
Donny/강동윤
f847709787
chore(common): Update rustc (#4828) 2022-05-28 07:07:58 +00:00
Donny/강동윤
a487fc1d28
refactor(es/transforms): Remove concurrent (#4808) 2022-05-26 15:58:19 +00:00
Donny/강동윤
07356a5bba
fix(es/ast): Fix EqIgnoreSpan of Ident (#4689) 2022-05-17 10:21:01 +00:00
Donny/강동윤
9c190f0a8e
fix(es/minifier): Fix optimization of spread (#4639) 2022-05-12 09:20:44 +00:00
Donny/강동윤
56a227ad9d fix(es/minifier): Don't create direct eval (#4634)
- `expr_simplifier`: Preserve `this`.
 - `ExprReplacer`: Inject `0` after inlining eval.
 - `MultiReplacer`: Inject `0` after inlining eval.
2022-05-12 15:14:18 +09:00
Donny/강동윤
6a97c7bef8
fix(es/utils): Fix wrong apis (#4604)
# API Changes

## `swc_ecma_utils`

### Renames

 - `find_ids` => `find_pat_ids`
 - `prepend` => `prepend_stmt`
 - `as_bool` => `cast_to_bool`
 - `as_number` => `as_pure_number`
 - `as_string` => `cast_to_string`
 - (`as_pure_bool`, `cast_to_number` is not renamed)
 - `UsageFinder` => `IdentUsageFinder`.
 - `IdentFinder` => `IdentRefFinder`.

## Changes

 - Re-export of `HANDLER` from `swc_common::errors` is removed. Use `swc_common::error::HANDLER` instead.
 - Re-export of `Id` from `swc_ecma_ast` is removed. Use `swc_ecma_ast::Id` instead.
 - `ExprCtx` is used for apis related to `Expr`.
 - `preserve_effects` is now a method of `ExprCtx`. It was a top-level function.
 - `extract_side_effects_to` is now a method of `ExprCtx`. It was a top-level function.
 - `IdentUsageFinder` (previously `UsageFinder`) now takes `Id` instead of `Ident`.
 - `IdentRefFinder` (previously `IdentFinder`) now takes `Id` instead of `Ident`.
 - `ExprExt::is_ident_ref_to` is removed.
 - `Expr::is_global_ref_to` is added.
 - `:🆔:id` is removed. Use `Ident::to_id()` instead.
2022-05-11 04:36:22 +00:00
Donny/강동윤
2c861bd9e5
feat(es/ast): Improve Id APIs (#4614)
# API Changes

 - `Ident` now has `to_id()`. This method is added to allow removing an import.
2022-05-11 12:02:14 +09:00
Donny/강동윤
859dc440b4
fix(es/minifier): Preserve more this (#4599) 2022-05-10 05:20:36 +00:00
Donny/강동윤
097ff1ddc1
fix(es/minifier): Fix with and NaN (#4596) 2022-05-10 03:21:43 +00:00
Donny/강동윤
2ab7594b4a
fix(es/minifier): Fix switches (#4595) 2022-05-09 21:36:09 +00:00
Donny/강동윤
dd09cdf8b1
fix(es/minifier): Fix handling of NaN (#4593) 2022-05-09 19:08:28 +00:00
Donny/강동윤
7fc9bbccd9
feat(config): Make all configuration overridable (#4575) 2022-05-09 05:38:27 +00:00
Donny/강동윤
53610fdafc
feat(es/resolver): Use different syntax context for unresolved refs (#4436)
- We don't need a list of bindings to check if an identifier is unresolved.
 - Checking if an identifier is unresolved is now one CPU instruction.
   - Previously it was one hashmap operation.
 - This PR also improves performance, by removing the hashmaps mentioned above.
2022-04-26 07:38:50 +00:00
Donny/강동윤
8048597c9e
feat(es/optimization): Accept top level mark from simplifiers (#4434) 2022-04-25 15:31:59 +00:00
Donny/강동윤
8ab12fd97b
fix(es/minifier): Preserve more side effects (#4420) 2022-04-25 06:56:19 +00:00
Donny/강동윤
922299a490
fix(es/minifier): Don't drop labels if required (#4370) 2022-04-20 13:34:21 +00:00
Donny/강동윤
da6fa60231
perf(es): Disable wrong parallelization (#4354) 2022-04-17 16:24:00 +00:00
Donny/강동윤
7e8f613272
feat(es/minifier): Enable conditionals by default (#4301) 2022-04-12 02:12:10 +00:00