Commit Graph

24 Commits

Author SHA1 Message Date
Donny/강동윤
4701da576f
feat(es/minifier): Improve inliner and evaluator (#4216) 2022-04-05 06:25:23 +00:00
Donny/강동윤
fe358ad0b9
feat(es/minifier): Improve sequential inlining (#4231) 2022-04-03 13:13:15 +00:00
Donny/강동윤
10718547e0
fix(es/minifier): Fix evaluation of IIFEs (#4207)
- We now remap parameters using a new syntax context. This is required because we may copy functions, and it can result in duplicated variables with respect to the span hygiene.
 - We now visit the sequence expression generated by inlining. This is to improve performance in some cases.
 - We now remove variables from variable statements if it's identical to a parameter declared in the function.
 - IIFE evaluation is now aware of `this` being different for member expressions.
 - We now have more logic for detecting simple functions.
2022-03-31 09:11:54 +00:00
Donny/강동윤
ee5c48c935
feat(es/minifier): Implement more rules for optimizing for-if-break (#4140) 2022-03-24 00:49:32 +00:00
Alexander Akait
634d732803
feat(es/ast): Add raw to Str (#4071) 2022-03-22 07:54:08 +00:00
Donny/강동윤
4a9817f003
fix(es/minifier): Consider side effects while lifting sequences (#4116) 2022-03-22 06:25:19 +00:00
Donny/강동윤
c6f8742669 feat(es/minifier): Implement more evaluation rules (#4030) 2022-03-21 20:07:59 +09:00
Alexander Akait
bd444c0ceb
fix(es/codegen): Fix codegen of string literals (#4037) 2022-03-16 14:25:26 +00:00
Donny/강동윤
9e4dea6663
feat(es/minifier): Improve dropping of unused vars (#3923) 2022-03-09 15:43:01 +00:00
Austaras
7cfa930a62
feat(es/fixer): Remove extra parens around IIFE in statements (#3918) 2022-03-08 14:35:18 +00:00
Austaras
9dd0105c5b
feat(es/fixer): Remove extra parens around iife in expression position (#3887) 2022-03-07 03:51:57 +00:00
Donny/강동윤
364532e9a7
feat(es/minifier): Improve sequential inlining (#3820) 2022-03-03 19:18:43 +00:00
Donny/강동윤
043fba274e
fix(es/hygiene): Fix renaming bugs (#3824) 2022-03-03 06:21:13 +00:00
Donny/강동윤
cfc036381a
fix(es/minifier): Fix inlining logic (#3776)
swc_ecma_minifier:
 - Make `inline_vars_in_node` use `MultiReplacer`.
2022-02-28 12:07:12 +00:00
Donny/강동윤
ac1d4058f2
fix(es/minifier): Fix analyzer (#3557)
swc_ecma_utils:
 - `collect_decls`: Support paramters of arrow expressions.

swc_ecma_minifier:
 - `analyzer`: Fix `has_property_mutation`.
2022-02-14 15:47:16 +09:00
Donny/강동윤
68e9017376
fix(es/minifier): Improve minifier (#3350)
swc_ecma_transforms_optimization:
 - `expr_simplifier`: Track more changes.

swc_ecma_minifier:
 - Analyze after applying the pure optimizer.
 - Preserve access to a variable not in scope.
 - `compress`: Remove string literal if it was not a directive.
 - `pure/collapse_vars`: Merge vars declared in the first statement into one with initializers if `collapse_vars` and `join_vars` are enabled.
 - `unused`: Use `usage_count` instead of `ref_count`.
 - `unused`: Fix dropping rule for member expressions.
 - `unused`: Fix dropping rule for declarations.
 - `hoist_props`: Preserve exported items.
2022-01-27 15:36:22 +09:00
Donny/강동윤
1aa494b1c0
fix(es/minifier): Fix logic for checking arguments (#3313)
swc_ecma_minifier:
 - Don't mark `arguments` in nested scope as a inline blocker.
2022-01-19 17:39:24 +09:00
Donny/강동윤
efd86715c9
fix(es/minifier): Preserve side effects in correct position (#3263)
swc_ecma_minifier:
 - Add `fake_block` mark.
 - Inject statements for side effects from `visit_mut_stmt` instead of `visit_mut_stmt_likes`. (Closes #2926)
2022-01-14 16:36:48 +09:00
Donny/강동윤
74fd353053
fix(es/minifier): Fix bugs (#3238)
swc_ecma_minifier:
 - `collapse_vars`: Respect `mutated`. (Closes #2679)
 - Add a test for https://github.com/vercel/next.js/issues/31084.
2022-01-12 16:57:54 +09:00
Austaras
cdb46cfb91
fix(es/hygiene): Visit computed properties in usage analyzer (#3217) 2022-01-09 15:42:19 +09:00
magic-akari
52961804d1
feat(es/codegen): Make the output for empty objects and empty statements pretty (#3171) 2022-01-03 05:54:58 +09:00
Donny/강동윤
fa342a0067
fix(es/minifier): Fix bugs (#2779)
swc_ecma_minifier:
 - Don't optimize `1 / t == -1 / 0` as `!1`.
 - Don't optimize `e === -1 / 0` as false.
 - Don't inline string literals in arguments, if it's used multiple time. (https://github.com/vercel/next.js/issues/31291)
2021-11-20 17:06:18 +09:00
Donny/강동윤
f2c67b8caf
fix(es/minifier): Don't inline string literals if it's used multiple time (#2748)
swc_ecma_minifier:
 - Don't inline strings because it's simple.
 - Inline short strings.
2021-11-15 14:03:03 +09:00
Donny/강동윤
2b2f6955f2
refactor: Flatten ecmascript (#2708) 2021-11-10 19:00:54 +09:00