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
Austaras
1a11cfd46f
feat(es/minifier): Improve fn-local analysis for better inlining ( #5955 )
2022-09-29 14:16:28 +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/강동윤
08f6e81d8e
feat(es/minifier): Ignore more return values ( #5981 )
2022-09-28 14:20:37 +00:00
Donny/강동윤
bc2c0f4133
fix(es/codegen): Fix codegen of a negative number ( #5980 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5912 .
2022-09-28 13:40:07 +00:00
Donny/강동윤
8c4873f81e
test(es/minifier): Remove mangle-only snapshots ( #5979 )
...
**Description:**
We don't have to store snapshots of all fixtures.
2022-09-28 21:35:52 +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
Austaras
aff4ea5f44
fix(es/minifier): Preserve exports in DCE ( #5973 )
2022-09-28 05:35:51 +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/강동윤
48cddc16f6
test(es/minifier): Categorize terser tests ( #5960 )
...
**Description:**
I'm going to focus on rules enabled by default. I updated some tests because our one was better, and postponed `unsafe` tests.
2022-09-27 15:18:57 +09:00
Austaras
573418fc96
fix(es/resolver): Use a separate mark for the name of FnExpr
( #5959 )
2022-09-27 14:50:35 +09:00
Donny/강동윤
33a15c8d82
fix(es/minifier): Fix analysis of parameters ( #5954 )
...
**Description:**
Although the author of the issue talked about `@react-pdf/renderer`, it's a bug related to `brotli`, not react pdf renderer.
After investigation, I found that the bug is caused by not marking parameters as initialized. So I fixed the analyzer.
**Related issue:**
- https://github.com/vercel/next.js/issues/40803 .
2022-09-27 12:19:36 +09:00
Donny/강동윤
9d1974248d
fix(es/minifier): Fix skipping logic of sequential inliner ( #5956 )
...
**Description:**
This PR implements `is_skippable_for_seq` fully.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5935 .
2022-09-26 15:05:52 +00:00
Donny/강동윤
97647861bf
fix(es/minifier): Track aliasing via assignments ( #5940 )
2022-09-23 14:22:41 +09:00
Donny/강동윤
93964a82ea
test(es/minifier): Remove analysis snapshot ( #5939 )
...
**Description:**
This PR removes analysis snapshots as it disturbs code review process
2022-09-23 13:14:42 +09:00
Donny/강동윤
7bcaaef4f7
feat(es/minifier): Mangle labels ( #5934 )
...
**Description:**
This PR adds code to mangle labels.
2022-09-22 23:24:05 +09:00
Donny/강동윤
e16827cc9d
feat(es/minifier): Drop cycles in nested functions ( #5933 )
2022-09-22 13:54:49 +00:00
Donny/강동윤
5314ac5d02
feat(es/minifier): Use char frequency data for property manglers ( #5932 )
2022-09-22 22:14:26 +09:00
Donny/강동윤
e9c704182b
feat(es/minifier): Improve analysis of reassignments ( #5931 )
2022-09-22 10:22:18 +00:00
Donny/강동윤
f2224132c1
fix(es/minifier): Prepend vars when dropping vars in a for loop initializer ( #5930 )
...
**Description:**
The minifier appends initializer of for statements instead of prepending it.
**Related issue:**
- https://github.com/vercel/next.js/discussions/30237#discussioncomment-3704795
2022-09-22 09:18:41 +00:00
Donny/강동윤
ac7b066d9a
feat(es/minifier): Inline rest parameters of IIFE ( #5929 )
2022-09-22 06:16:29 +00:00
Donny/강동윤
565bf317f6
feat(es/minifier): Evaluate more expressions ( #5926 )
2022-09-22 03:53:14 +00:00
Donny/강동윤
19ce2737b1
feat(es/minifier): Collapse let
without init ( #5909 )
...
**Description:**
This patch applies the variable collapsing logic for the variables declared with `var` to the variables declared with `let`. This requires some patch about the behavior of visitors about `BlockStmt`, so this patch includes relevant changes.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5696 .
2022-09-21 15:04:29 +00:00
Donny/강동윤
31711e76af
test(es/minifier): Add an execution test for a fixed issue ( #5925 )
...
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5914 .
2022-09-21 12:19:14 +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/강동윤
0b34bcb40e
test(es/minifier): Add a test for a wrong issue ( #5923 )
2022-09-21 19:52:52 +09:00
Donny/강동윤
fe40d8312b
test(es): Accept arguments ( #5916 )
...
**Description:**
This PR adds a way to provide arguments to `exec_node_js`.
2022-09-21 16:23:10 +09:00
Donny/강동윤
a9873e505d
perf(es/minifier): Optimize analyzer ( #5908 )
2022-09-20 08:21:39 +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/강동윤
aacf7aaf80
feat(es/minifier): Drop function identifier in a single pass ( #5901 )
...
**Description:**
We only inline function declarations if `ref_count` is 1, so we don't need to preserve the name of the function.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5682 .
2022-09-19 15:07:56 +00:00
Austaras
83c7887600
fix(es/minifier): Remove more pure calls ( #5900 )
2022-09-19 12:21:15 +00:00
Donny/강동윤
0bbcfe15ee
test(es/minifier): Add a test for a fixed issue ( #5897 )
2022-09-19 17:25:49 +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
Donny/강동윤
c3fa96b21b
fix(es/minifier): Fix unicode handling ( #5875 )
2022-09-15 14:45:33 +00:00
magic-akari
90d311c042
fix(es/minifier): Fix handling of .toFixed
call without an argument ( #5868 )
2022-09-15 16:00:36 +09:00
Donny/강동윤
991a34e0c2
fix(es/minifier): Remove fake_block
while calculating next scope ( #5869 )
...
**Description:**
We now remove `fake_block` mark from `with_ctx`.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5865
2022-09-15 06:04:47 +00:00
Alexander Akait
7f62fa6227
perf(html): Reduce memory usage ( #5867 )
2022-09-15 04:17:05 +00:00
Austaras
63fb0c4ad3
feat(es/minifier): Move assign with seq init into seq ( #5847 )
2022-09-14 12:57:18 +00:00
Donny/강동윤
32f18068ad
fix(es/minifier): Preserve more side effects ( #5853 )
...
**Description:**
We now preserve more side effects.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5680 .
2022-09-14 06:51:56 +00:00
magic-akari
2b2464271a
fix(es/codegen): Remove redundant ;
after export default decl ( #5851 )
2022-09-14 06:07:15 +00:00
Donny/강동윤
a5f7b6946f
fix(es/minifier): Don't replace parameters of IIFE if it's recursive ( #5852 )
...
**Description:**
While investigating, I found that problem is not the analysis of recursive functions. Instead, it was a problem with the IIFE evaluator, which replaces parameters even if it's recursive.
**Related issue:**
- Closes https://github.com/swc-project/swc/issues/5846
2022-09-14 05:02:14 +00:00
Donny/강동윤
0284c1bf40
test(es/transforms): Enable tests for fixed issues ( #5845 )
2022-09-13 10:32:00 +00:00
Alexander Akait
ccd618ce54
perf(html/minifier): Improve performance ( #5838 )
2022-09-13 14:01:41 +09:00
Austaras
8567a38c4a
feat(es/minifier): Extend inlining of identifiers to multi-usage ( #5832 )
2022-09-13 03:52:47 +00:00
Donny/강동윤
cfe575e35a
perf(es/minifier): Make expression simplifier stateless and parallel ( #5819 )
2022-09-11 06:18:44 +00:00
Donny/강동윤
7391cc99b1
perf(css/minifier): Use JsWord
instead of &str
( #5806 )
2022-09-10 07:20:51 +00:00
Donny/강동윤
f11461d3f5
test(es): Enable tests for fixed issues ( #5784 )
2022-09-08 15:05:39 +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
Donny/강동윤
24b60d2b64
feat(es/minifier): Change order of renaming to align with terser ( #5780 )
...
**Description:**
- Change the order of renaming to match one of `terser`.
2022-09-08 05:23:23 +00:00
Donny/강동윤
32a73fbf22
fix(es/minifier): Fix calculation of character frequency ( #5772 )
2022-09-07 04:46:21 +00:00
Austaras
90852f5aa6
fix(es/minifier): Fix analysis of assignments and classes ( #5770 )
2022-09-07 03:51:42 +00:00
Donny/강동윤
60ce462215
feat(es/minifier): Align name mangler with terser ( #5763 )
2022-09-06 21:37:58 +09:00
Austaras
948d708144
fix(es/minifier): Don't drop parameters in an exported function ( #5757 )
2022-09-06 10:39:23 +09: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/강동윤
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