Donny/강동윤
286334c4d0
feat(es/minifier): Drop vars from sequential inliner ( #5993 )
...
**Description:**
This PR renames `CloningMultiReplacer` to `Finalizer` and makes it handle the removal of unused variables. Also, this PR improves the sequential inliner so we can drop variables within a single pass.
2022-09-30 09:43:31 +00:00
Donny/강동윤
aeb7f300a8
feat(es/minifier): Invoke sequential inliner for inlined IIFEs ( #5991 )
...
**Description:**
Inlined IIFEs have the exact pattern sequential inliner wants, so it's good to invoke it.
2022-09-29 11:03:06 +00:00
Donny/강동윤
f8358fbe2b
fix(es/minifier): Remove wrong variable joiner pass ( #5992 )
...
**Description:**
We had two passes for joining variables. This PR removes one in the full optimizer, which is wrong.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5989 .
2022-09-29 19:11:18 +09:00
Donny/강동윤
c411e5d552
feat(es/minifier): Drop more variables while invoking IIFE ( #5987 )
2022-09-29 02:15:56 +00:00
Donny/강동윤
0cfc724018
test(es/minifier): Add tests for benchmark files ( #5986 )
2022-09-29 09:41:13 +09:00
Donny/강동윤
0e69890764
feat(es/minifier): Evaluate more literals in comparison ( #5976 )
...
**Description:**
I'll fix the performance issue with a follow-up PR.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/4415 .
2022-09-28 08:07:55 +00:00
Donny/강동윤
dcd516d2bd
feat(es/minifier): Ignore more expressions in sequential inliner ( #5961 )
...
**Description:**
We can skip **member access** to `console` as it does not have any side effects.
2022-09-27 07:45:44 +00:00
Donny/강동윤
97647861bf
fix(es/minifier): Track aliasing via assignments ( #5940 )
2022-09-23 14:22:41 +09:00
Donny/강동윤
e9c704182b
feat(es/minifier): Improve analysis of reassignments ( #5931 )
2022-09-22 10:22:18 +00:00
Donny/강동윤
e303f7e853
fix(es/minifier): Fix analysis of assignments ( #5924 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5910
2022-09-21 11:33:25 +00:00
Donny/강동윤
1df72430a5
perf(es/minifier): Invoke DCE only before the first compression ( #5907 )
...
**Description:**
Invoke DCE only before the first compression. I verified that this patch does not affect the compression rate of the real-world inputs greatly.
2022-09-20 15:41:26 +09:00
Donny/강동윤
4e656af1ec
feat(es/minifier): Drop variable from the sequential inliner ( #5896 )
...
**Description:**
We now drop variable declarations if we are going to eliminate the only usage.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5693 .
2022-09-19 07:40:04 +00:00
IWANABETHATGUY
7d6d04b421
fix(es/codegen): Drop the last comma in an array literal ( #5877 )
...
**Description:**
Drop the last comma in an array literal.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5692 .
2022-09-16 15:48:28 +09:00
Austaras
63fb0c4ad3
feat(es/minifier): Move assign with seq init into seq ( #5847 )
2022-09-14 12:57:18 +00:00
Austaras
8567a38c4a
feat(es/minifier): Extend inlining of identifiers to multi-usage ( #5832 )
2022-09-13 03:52:47 +00:00
Austaras
ee26337a25
feat(es/minifier): Inline lazily initialized variables ( #5737 )
...
Safety:
For a function-local variable, an expression with side-effects would be a call, including an indirect one with a member expression.
- If the call is function-local, it will be analyzed by the analyzer and inliner will not work.
- If the call is not a function-local one, it cannot modify the local variable.
2022-09-08 08:07:43 +00:00
Austaras
90852f5aa6
fix(es/minifier): Fix analysis of assignments and classes ( #5770 )
2022-09-07 03:51:42 +00:00
Donny/강동윤
6ba6da62d7
perf(es/minifier): Make dead branch remover parallel ( #5734 )
2022-09-04 07:33:26 +00:00
Austaras
5b2d024788
feat(es/minifier): Relax requirement for IIFE invokation ( #5721 )
2022-09-03 07:33:31 +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/강동윤
217f519940
feat(es/minifier): Ignore closure in initializer from sequential inliner ( #5702 )
2022-08-31 10:33:22 +00:00
Donny/강동윤
d43334eb92
feat(es/minifier): Remove redundant check ( #5664 )
2022-08-30 12:22:18 +09: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
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
Austaras
ca21fd0c4d
fix(es/minifier): Inline vars declared in conditional paths ( #5392 )
2022-08-05 13:25:28 +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
Austaras
b221f90117
fix(es/minifier): Optimize inlining function calls with a literal in arguments ( #5365 )
2022-08-02 11:37:40 +00:00
Austaras
11f495ad37
fix(es/minifier): Check if an inlined value is mutated ( #5318 )
2022-07-29 04:49:09 +00:00
Austaras
6573324d9c
feat(es/minifier): Calculate correct size ( #5253 )
2022-07-20 08:25:26 +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
Donny/강동윤
36d960c7e9
perf(es/hygiene): Make hygiene
faster ( #4952 )
2022-06-15 14:36:57 +00:00
magic-akari
594089488b
feat(es/minifier): Drop new
token if possible ( #4932 )
2022-06-11 05:27:13 +00:00
Austaras
83ae6a1f1f
feat(es/minifier): Remove extra parens in BinExpr
( #4878 )
2022-06-05 05:52:22 +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/강동윤
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
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/강동윤
8a40b583a5
feat(es/minifier): Implement directives
( #4668 )
2022-05-15 10:02:55 +00:00
Donny/강동윤
2ab7594b4a
fix(es/minifier): Fix switches ( #4595 )
2022-05-09 21:36:09 +00:00
Donny/강동윤
3521ce09e7
fix(es/minifier): Consider more aliases in sequences pass ( #4583 )
2022-05-09 16:36:40 +00:00
Donny/강동윤
7e80c10cba
fix(es/minifier): Don't create an invalid labeled statement ( #4581 )
2022-05-09 09:15:12 +00:00
Austaras
b3b6fd448c
feat(es/minifier): Remove duplicate control flow in nested blocks ( #4569 )
2022-05-08 13:07:58 +09:00
Donny/강동윤
a6d404a8c2
chore(repo): Configure prettier
( #4523 )
2022-05-04 14:25:28 +00:00