Commit Graph

32 Commits

Author SHA1 Message Date
Donny/강동윤
8b2e1d17e5
fix(es/minifier): Abort IIFE invoker on eval (#6478)
**Related issue:**

 - https://github.com/vercel/next.js/issues/43052.
2022-12-13 04:18:57 +00:00
Donny/강동윤
9752b43f94
fix(es/minifier): Use unsafe option for arrow => method (#6521)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6504.
 - https://github.com/vercel/next.js/issues/43208.
2022-11-29 05:23:55 +00:00
Donny/강동윤
5fd7ab87b6
fix(es/minifier): Preserve op of the op-assignments in seq inliner (#6428)
**Description:**


**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6407.
2022-11-15 00:22:06 +00:00
Donny/강동윤
743a1aab4f
feat(es/minfiier): Compute more with sequential inliner (#6169) 2022-10-27 00:50:52 +00:00
Donny/강동윤
86e265a024
feat(es/minifier): Support more statements in seqential inliner (#6248)
**Description:**

We now inline into the discriminant of a switch statement and into the initializer of for/for-in/for-of statements.
2022-10-26 13:37:10 +09:00
Donny/강동윤
12443db39a
feat(es/minifier): Merge functions using sequential inliner (#6148) 2022-10-20 02:24:09 +00:00
Donny/강동윤
f2e8f98d38
feat(es/minifier): Skip function declarations in sequential inliner (#6147) 2022-10-18 02:51:05 +00:00
Donny/강동윤
d334c6e783
feat(es/minifier): Ignore return value if a param of IIFE is not used (#6115) 2022-10-14 02:58:00 +00:00
Donny/강동윤
5875298377
feat(es/minifier): Merge assignments using sequential inliner (#6103) 2022-10-12 05:31:40 +00:00
Donny/강동윤
ad960c76c0
feat(es/minifier): Detect type of .length (#6120)
**Description:**

This PR updates minifier to detect the type of `xxx.length` if possible.
2022-10-11 23:06:58 +00:00
Donny/강동윤
9ce3df091f
feat(es/minifier): Distinguish calls in alias analyzer (#6080)
**Description:**

This PR improves the alias analyzer by distinguishing call and reference, thus reducing the number of identifiers.

---

Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
2022-10-08 03:15:18 +00:00
IWANABETHATGUY
8003dc8563
feat(es/codegen): Remove the trailing comma of binding patterns (#6078) 2022-10-07 16:45:20 +09:00
Austaras
ac150c7ced
feat(es/minifier): Use usage_count in sequential inliner (#6071) 2022-10-06 17:27:34 +00:00
Austaras
c9427f1ec4
fix(es/minifier): Improve infection analysis (#6044) 2022-10-06 18:12:09 +09:00
Donny/강동윤
d65fba134d
fix(es/minifier): Fix infection analysis of sequential inliner (#6053)
**Description:**

This PR fixes the callee issue by fixing the infection analyzer.

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6047
2022-10-06 02:46:22 +00:00
Donny/강동윤
c5fb774487
fix(es/minifier): Don't skip unresolved identifiers (#6050)
**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6049
2022-10-05 11:44:51 +00:00
Donny/강동윤
877936f626
feat(es/minifier): Clone trivial literals in sequential inliner (#6005)
**Description:**

As our minifier is two-pass by default, this is enough.

At the first pass, we inline all numeric literals using sequential inliner, and minifier can then inline constants correctly in the second pass.
2022-10-03 07:20:48 +00:00
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/강동윤
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/강동윤
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/강동윤
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/강동윤
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
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
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
Donny/강동윤
5e2b6d5551
feat(es/minifier): Remove useless ES version check (#5703) 2022-08-31 11:11:54 +00:00
Donny/강동윤
d43334eb92
feat(es/minifier): Remove redundant check (#5664) 2022-08-30 12:22:18 +09:00
Donny/강동윤
100f359e5d
fix(es/minifier): Fix optimization of template literals with escape (#5650) 2022-08-28 03:15:12 +00:00