Commit Graph

318 Commits

Author SHA1 Message Date
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
Austaras
4ef99f346b
feat(es/minifier): Relax function inline requirement (#5607) 2022-09-01 19:36:16 +09:00
Donny/강동윤
1085667049
perf(es/minifier): Enable parallel processing (#5705) 2022-09-01 13:36:30 +09:00
Donny/강동윤
5e2b6d5551
feat(es/minifier): Remove useless ES version check (#5703) 2022-08-31 11:11:54 +00:00
Donny/강동윤
217f519940
feat(es/minifier): Ignore closure in initializer from sequential inliner (#5702) 2022-08-31 10:33:22 +00:00
Donny/강동윤
fd39bb6bff
fix(es/minifier): Don't inline variables declared multiple times (#5667) 2022-08-30 07:52:21 +00:00
Donny/강동윤
d43334eb92
feat(es/minifier): Remove redundant check (#5664) 2022-08-30 12:22:18 +09:00
Donny/강동윤
537449e53b
fix(es/codegen): Emit trailing semicolon (#5659) 2022-08-29 10:10:55 +00:00
Donny/강동윤
100f359e5d
fix(es/minifier): Fix optimization of template literals with escape (#5650) 2022-08-28 03:15:12 +00:00
Donny/강동윤
a06e6e9ce5
fix(es/minifier): Fix alias analyzer (#5639) 2022-08-26 10:06:25 +00:00
Donny/강동윤
d44bbffa02
fix(es/minifier): Revert alias analyzer work (#5634) 2022-08-26 08:45:49 +00:00
Donny/강동윤
00e635b9ea
fix(es/minifier): Improve alias analyzer (#5500) 2022-08-26 07:56:40 +00:00
Donny/강동윤
d81fe67e4b
feat(es/minifier): Improve gzipped size (#5631) 2022-08-26 05:23:01 +00:00
Donny/강동윤
7f5095dd5e
test(es/minifier): Add tests for size (#5561) 2022-08-19 06:03:42 +00:00
Austaras
69f8945911
feat(es/minifier): Remove more functions and classes (#5552) 2022-08-19 04:28:06 +00:00
Donny/강동윤
7487e3341d
feat(es/minifier): Optimize more string property names (#5545) 2022-08-18 11:58:05 +09:00
Donny/강동윤
935a2fbd00
feat(dbg-swc): Improve minifier comparator (#5541) 2022-08-18 09:37:19 +09:00
Austaras
d2f3e29bb0
feat(es/minifier): Ignore recursive usage for function calls and pure calls (#5526) 2022-08-17 23:24:10 +00:00
Austaras
5aa96e00d8
fix(es/minifier): Remove recklessly inline (#5528) 2022-08-17 13:06:01 +00:00
Donny/강동윤
69ce1b24d5
test(es/minifier): Remove useless, slow tests (#5502) 2022-08-17 15:12:30 +09:00
Donny/강동윤
40bb695f64
fix(es/minifier): Fix context of call/new expressions (#5487) 2022-08-14 18:56:35 +09:00
Donny/강동윤
3eb1f4b2b1
chore(ci): Fix lints (#5462) 2022-08-12 13:13:35 +00:00
Donny/강동윤
7b8658eef2
test(es/minifier): Organize simple size tests (#5402) 2022-08-06 22:01:01 +09:00
Austaras
ca21fd0c4d
fix(es/minifier): Inline vars declared in conditional paths (#5392) 2022-08-05 13:25:28 +00:00
Donny/강동윤
86da5441e6
test(es/minifier): Organize simple size tests (#5403) 2022-08-05 16:42:59 +09:00
Donny/강동윤
a46669d334
test(es/minifier): Add snapshots of compressed libraries (#5389) 2022-08-04 08:32:59 +00:00
Austaras
e37b7e8caa
feat(es/codegen): Remove more whitespaces from BinExpr (#5380) 2022-08-04 16:52:06 +09:00
Donny/강동윤
84a1ef856a
test(es/minifier): Update the golden list (#5378) 2022-08-03 21:17:47 +09:00
Donny/강동윤
3943eb24d1
feat(es/minifier): Consider char frequencies (#5375) 2022-08-03 10:20:17 +00:00
Austaras
77497e4fbe
fix(es/fixer): Don't insert extra paren when left of BinExpr is UpdateExpr (#5376) 2022-08-03 08:41:40 +00:00
Donny/강동윤
4fdbe40c74
feat(es/minifier): Remove duplicate var declarations (#5373) 2022-08-03 13:05:56 +09:00
Austaras
b221f90117
fix(es/minifier): Optimize inlining function calls with a literal in arguments (#5365) 2022-08-02 11:37:40 +00:00
Austaras
8611161c02
fix(es/minifier): Ignore member expression without side-effects in assign position (#5344) 2022-07-31 16:40:58 +09:00
Austaras
11f495ad37
fix(es/minifier): Check if an inlined value is mutated (#5318) 2022-07-29 04:49:09 +00:00
Donny/강동윤
64a99461ec
fix(es/minifier): Change default es version to es5 (#5333) 2022-07-29 02:40:14 +00:00
Austaras
0f254d5ce5
feat(es/codegen): Remove extra space before a private method (#5295) 2022-07-26 03:35:49 +00:00
Austaras
ee84842d22
fix(es/minifier): Preserve order of side-effects in sequences pass (#5283) 2022-07-24 13:55:37 +00:00
Donny/강동윤
037a53d5d1
perf(es/ast): Use Atom in some places (#5271) 2022-07-22 20:09:25 +09:00
Austaras
6573324d9c
feat(es/minifier): Calculate correct size (#5253) 2022-07-20 08:25:26 +00:00
Austaras
3f0856db2e
feat(es/codegen): Optimize number and bigint literal (#5223) 2022-07-18 03:27:03 +00:00
Austaras
2e9c9bea1a
fix(es/minifier): Fix size calculation of numbers (#5232) 2022-07-17 18:07:35 +09:00
Donny/강동윤
16ece4dce0
fix(es/minifier): Don't merge exported declarations (#5193) 2022-07-13 06:07:31 +00:00
Donny/강동윤
d8f57abd26
perf(es/minifier): Remove wrong logic (#5178) 2022-07-11 11:37:13 +00:00
Donny/강동윤
0e4a03ccc6
fix(es/minifier): Don't inline a callable expression if it's used as a reference (#5118) 2022-07-06 03:53:11 +00:00
Donny/강동윤
b76b4999cc
fix(es/codegen): Fix codegen of some non-ascii characters (#5108) 2022-07-05 10:22:25 +00:00
Austaras
9519e801ea
fix(es/resolver): Fix handling of block scoped functions (#5092) 2022-07-05 05:04:49 +00:00
Donny/강동윤
eedcb114a2
test(es/minifier): Add a test case for the minifier (#5013) 2022-06-20 14:38:23 +00:00
Donny/강동윤
36d960c7e9
perf(es/hygiene): Make hygiene faster (#4952) 2022-06-15 14:36:57 +00:00
Donny/강동윤
b3f6f20721
fix(es/resolver): Make catch parameter not disturb resolving (#4976) 2022-06-15 05:24:39 +00:00
Donny/강동윤
99a474cb2d
refactor(es/minifier): Use Program instead of Module (#4969) 2022-06-14 16:33:38 +00:00
Austaras
47bdc6a6b1
feat(es/minifier): Turn Array/Object calls into literals (#4947) 2022-06-12 02:36:49 +00:00
magic-akari
594089488b
feat(es/minifier): Drop new token if possible (#4932) 2022-06-11 05:27:13 +00:00
Donny/강동윤
be87494495
fix(es/minifier): Reserve more symbols on eval (#4925) 2022-06-10 08:49:56 +00:00
Austaras
83ae6a1f1f
feat(es/minifier): Remove extra parens in BinExpr (#4878) 2022-06-05 05:52:22 +00:00
Donny/강동윤
8365c3d0df
fix(es/minifier): Make if_return to not drop required returns (#4847) 2022-05-30 06:46:01 +00:00
Donny/강동윤
0567f67664
fix(es/minifier): Apply name mangler for more cases (#4840) 2022-05-29 11:15:16 +00:00
Donny/강동윤
7f69b9c80f
test(es/minifier): Add snapshots for the mangler (#4823)
I found a way to make the name mangler parallel, but I want to ensure that we don't break anything.
2022-05-27 07:32:23 +00:00
Donny/강동윤
4b27df9f12
perf(es/minifier): Make more passes parallel (#4821) 2022-05-27 06:48:08 +00:00
Donny/강동윤
073b1469e6
fix(es/minifier): Don't create names which is same as an unresolved var (#4806) 2022-05-26 09:27:24 +00:00
Donny/강동윤
1c48a8c8f4
fix(es/minifier): Consider side effects while removing an object spread (#4788) 2022-05-26 07:37:34 +00:00
Donny/강동윤
38a866a900
test(es): Make execution tests faster (#4789) 2022-05-25 06:23:35 +00:00
brightwu
f28d9c143b
fix(es/resolver): Fix more edge cases related to catch and var (#4773) 2022-05-24 09:24:42 +00:00
Donny/강동윤
e4dee1ed33
fix(es/minifier): Consider parameters while detecting pure calls (#4748) 2022-05-23 13:04:11 +00:00
Donny/강동윤
0f85f7b9de
chore(ci): Fix CI (#4747) 2022-05-23 07:47:05 +00:00
Donny/강동윤
49b3c2715c
refactor(es/minifier): Make rust-analyzer fast, really (#4746) 2022-05-23 16:16:05 +09:00
Donny/강동윤
47e6cc5190
refactor(es/minifier): Make rust-analyzer faster (#4744)
- We now use a separate crate for testing the minifier. This makes IDE much faster.
2022-05-23 15:53:01 +09:00
Donny/강동윤
a51816a577
feat(es/minifier): Handle prefix update expressions with sequential inliner (#4741) 2022-05-23 04:29:31 +00:00
Donny/강동윤
9e42382091
feat(es/minifier): Implement pure_funcs (#4710) 2022-05-22 12:07:28 +00:00
Donny/강동윤
dc67911f61
feat(es/minifier): Implement more skipping rules for sequences (#4716) 2022-05-20 16:01:27 +09:00
Donny/강동윤
1358f452e7
fix(es/minifier): Consider more side effects while inlining (#4715) 2022-05-20 04:57:38 +00:00
Kevin Barabash
72fbf692a4
fix(es/codegen): Don't add a newline after an arrow body (#4711) 2022-05-19 07:12:37 +00:00
Donny/강동윤
73dfa95e5a
fix(es/minifier): Fix analysis of assignment patterns (#4712) 2022-05-19 05:10:12 +00:00
Donny/강동윤
6f565fbb3a
test(es/minifier): Categorize more tests (#4709) 2022-05-19 04:33:11 +00:00
Donny/강동윤
9a27b5f275
perf(es/minifier): Make minifier more parallel (#4699) 2022-05-18 13:51:25 +00:00
Donny/강동윤
274648ec26
feat(es/minifier): Improve if_return (#4694) 2022-05-18 08:39:57 +00:00
Donny/강동윤
183e884cbf
fix(es/minifier): Don't hoist functions with dead_code (#4695) 2022-05-18 07:25:25 +00:00
Donny/강동윤
c01476d9ae
feat(es/minifier): Enable conditionals by default (#4687) 2022-05-17 07:34:47 +00:00
Donny/강동윤
04d66dbc8b
feat(es/minifier): Enable computed_props by default (#4678) 2022-05-16 12:51:38 +00:00
Donny/강동윤
3bb4b74d94
fix(es/minifier): Consider fallthrough while merging swtich cases (#4672) 2022-05-16 12:27:24 +00:00
Donny/강동윤
ba6688a783
feat(dbg-swc): Make reducer parallel (#4676) 2022-05-16 12:49:42 +09:00
Donny/강동윤
36ff4f735f
test(es/minifier): Add size tests using dbg-swc (#4664) 2022-05-16 03:01:53 +00:00
Donny/강동윤
8a40b583a5
feat(es/minifier): Implement directives (#4668) 2022-05-15 10:02:55 +00:00
Donny/강동윤
96cec97b2c
fix(es/minifier): Don't inline a function if we need referential equality (#4665) 2022-05-15 09:37:34 +00:00
Donny/강동윤
eb8508f88c
feat(es/codegen): Implement ascii-only (#4660) 2022-05-15 05:07:21 +00:00
Donny/강동윤
053f42b3aa
feat(es/minifier): Improve minifier (#4655)
swc_ecma_transforms_base:
 - Improved `fixer`.

swc_ecma_minifier:
 - `ignore_return_value`: Support computed access to array literals.
2022-05-14 07:06:03 +00:00
Donny/강동윤
9c190f0a8e
fix(es/minifier): Fix optimization of spread (#4639) 2022-05-12 09:20:44 +00:00
Donny/강동윤
79f87e03db
test(es/minifier): Execute more tests (#4636) 2022-05-12 16:28:52 +09: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/강동윤
6918e3a4fb
test(es/minifier): Postpone tests which can be verified by execution tests (#4600) 2022-05-10 14:47:37 +09:00
Donny/강동윤
859dc440b4
fix(es/minifier): Preserve more this (#4599) 2022-05-10 05:20:36 +00:00
Donny/강동윤
d611d543ea
fix(es/fixer): Handle new yield (#4598) 2022-05-10 04:17:11 +00:00
Donny/강동윤
8944a3bdf5
fix(es/minifier): Fix switch with a unknown case (#4597) 2022-05-10 03:55:34 +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/강동윤
3521ce09e7
fix(es/minifier): Consider more aliases in sequences pass (#4583) 2022-05-09 16:36:40 +00:00
Donny/강동윤
8db3442216
fix(es/minifier): Unwrap blocks more carefully (#4586) 2022-05-09 11:24:53 +00:00
Donny/강동윤
7e80c10cba
fix(es/minifier): Don't create an invalid labeled statement (#4581) 2022-05-09 09:15:12 +00:00