Alex Lam S.L
f9b3198714
fix corner case in evaluate ( #3906 )
...
fixes #3905
2020-05-18 08:41:10 +08:00
Alex Lam S.L
48b62393a4
fix corner case in evaluate ( #3904 )
...
fixes #3903
2020-05-17 22:25:13 +08:00
Alex Lam S.L
eb7fa25270
fix corner case in evaluate ( #3888 )
...
fixes #3887
2020-05-12 17:58:37 +08:00
Alex Lam S.L
bd2f53bc8b
fix corner case in evaluate ( #3883 )
...
fixes #3882
2020-05-12 03:24:44 +08:00
Alex Lam S.L
2b24dc25fb
fix corner cases in evaluate & reduce_vars ( #3879 )
...
fixes #3878
2020-05-11 22:46:00 +08:00
Alex Lam S.L
e23bf48052
enhance evaluate & reduce_vars ( #3873 )
2020-05-11 03:08:05 +08:00
Alex Lam S.L
dc0cd088cf
fix corner case in evaluate & unsafe_math ( #3756 )
...
fixes #3755
2020-03-30 19:13:14 +08:00
Alex Lam S.L
a051846d22
fix corner case in evaluate ( #3739 )
...
fixes #3738
2020-03-01 20:34:31 +00:00
Alex Lam S.L
9a6faf365b
fix corner cases in keep_fargs & unused ( #3618 )
2019-12-02 06:43:54 +08:00
Alex Lam S.L
e915832a36
enhance unused ( #3617 )
2019-12-01 18:10:37 +08:00
Alex Lam S.L
d4b7010678
fix corner case in unsafe_regexp ( #3609 )
2019-11-27 17:35:21 +08:00
Alex Lam S.L
552be61c4d
introduce eager evaluation ( #3587 )
2019-11-16 06:10:47 +08:00
Alex Lam S.L
d6fd18d0b0
enhance evaluate & inline ( #3580 )
2019-11-13 04:17:09 +08:00
Alex Lam S.L
0e29ad5eb9
fix corner case in evaluate ( #3569 )
2019-11-04 13:13:48 +08:00
Alex Lam S.L
1c0defdc03
enhance unsafe evaluate ( #3564 )
2019-11-02 03:34:32 +08:00
Alex Lam S.L
1e9b576ee9
fix corner case in evaluate ( #3559 )
...
fixes #3558
2019-11-01 00:01:25 +08:00
Alex Lam S.L
1d5c2becbd
enhance evaluate ( #3549 )
2019-10-29 19:51:55 +08:00
Alex Lam S.L
eba3a37bb5
fix boolean context detection ( #3466 )
...
fixes #3465
2019-10-12 03:42:57 +08:00
Alex Lam S.L
33c94d3bd9
detect boolean context across IIFEs ( #3461 )
2019-10-10 09:37:02 +08:00
Alex Lam S.L
413bbe0480
fix corner case in evaluate ( #3388 )
...
fixes #3387
2019-04-29 08:55:46 +08:00
Alex Lam S.L
c56d89f804
enhance unsafe ( #3382 )
2019-04-25 02:42:54 +08:00
Alex Lam S.L
d3b93ec682
fix corner case in unsafe ( #3380 )
2019-04-24 22:21:28 +08:00
Alex Lam S.L
855964a87a
enhance unsafe evaluate ( #3370 )
2019-04-20 19:42:41 +08:00
Ruben Bridgewater
4b21526310
Fix test expectation ( #3357 )
...
The test expects a specific precision value that is not met on all V8 versions anymore due to a recent consolidation of different algorithms across the V8 code base.
This makes sure the preceision is tested against one digit less to keep the test working on all V8 versions.
Refs: 98453126c1
Refs: https://github.com/nodejs/node/issues/25060#issuecomment-477953457
2019-03-30 02:08:27 +08:00
Alex Lam S.L
615ae37ca3
introduce assignments ( #3345 )
2019-03-18 21:28:41 +08:00
Alex Lam S.L
7aa7f21872
fix corner case in evaluate ( #3344 )
2019-03-18 21:24:42 +08:00
silverwind
9aae4f2424
make tests compatible with Node.js 12 ( #3304 )
...
In Node.js 12, the formatting of console arguments will change slightly.
Previously, a string other than the first argument was formatted using
single quotes if the first argument was non-string. Now, quotes are
never added regardless of position of a string argument.
To make test compatible in all Node.js versions, I work around by
ensuring the first argument to console.log is a string which prevents
the quotes from being added on older versions of Node.js.
Ref: https://github.com/nodejs/node/pull/23162
2019-03-13 04:55:04 +08:00
Alex Lam S.L
bcebacbb9e
fix corner cases in preserve_line ( #3212 )
2018-07-13 01:51:10 +08:00
alexlamsl
5ffc17d4aa
fix corner case in unused
2018-07-01 14:34:42 +08:00
Alex Lam S.L
20ca0f5906
improve truthy compression ( #3009 )
2018-03-16 06:12:59 +08:00
Alex Lam S.L
38f2b4579f
fix value reference caching in evaluate ( #2969 )
...
fixes #2968
2018-03-02 04:04:29 +08:00
Alex Lam S.L
82d1ef0242
fix unsafe evaluate of function property ( #2927 )
...
fixes #2926
2018-02-17 21:33:36 +08:00
Alex Lam S.L
a2a9459684
fix unsafe evaluate of AST_Function ( #2920 )
...
fixes #2919
2018-02-16 17:21:46 +08:00
Alex Lam S.L
d316fb139d
fix unsafe evaluate on type-converting operators ( #2917 )
...
fixes #2916
2018-02-14 16:48:47 +08:00
Alex Lam S.L
d69d8007d6
evaluate to{Low,Upp}erCase() under unsafe ( #2886 )
2018-02-06 15:57:15 +08:00
Alex Lam S.L
e2dc9cf091
fix unsafe evaluate of AST_Array ( #2825 )
...
fixes #2822
2018-01-21 01:39:44 +08:00
Alex Lam S.L
3e7873217c
improve unused on built-in functions ( #2817 )
2018-01-19 20:41:57 +08:00
Alex Lam S.L
85c56adbd1
more tests for #2535 ( #2551 )
2017-12-02 02:26:56 +08:00
Alex Lam S.L
9a6b11f8e6
improve boolean compression ( #2548 )
...
fixes #2535
2017-12-01 22:41:35 +08:00
Alex Lam S.L
3c74047368
implement compress option reduce_funcs ( #2466 )
...
- inline single-use function declarations as expressions when permissible
- depend on `reduce_vars`
- enabled by default
- disable for speed critical code
fixes #2464
2017-11-11 05:59:35 +08:00
Alex Lam S.L
8428326ea1
enhance properties ( #2412 )
...
- trim array items only if `side_effects`
- extend to non-identifier properties
2017-10-29 04:11:26 +08:00
Alex Lam S.L
ee082ace1b
compress self comparisons ( #2398 )
2017-10-26 01:16:12 +08:00
Alex Lam S.L
24aa07855b
safer properties transform ( #2391 )
...
`{ a: x, b: y }.a` => `[ x, y ][0]`
- `x` cannot be function containing `this`
`[ x, y, z ][1]` => `(x, z, y)`
- only if `z` is side-effect-free
2017-10-22 20:10:13 +08:00
Alex Lam S.L
b810e2f8da
perform reduce_vars on safe literals ( #2351 )
...
- constant expression
- single reference
- same scope
- not across loop body
2017-10-09 12:25:06 +08:00
Alex Lam S.L
9282e7b0c6
fix unsafe evaluate of Object static methods ( #2232 )
...
fixes #2231
2017-07-14 19:52:01 +08:00
Alex Lam S.L
4f70d2e28c
inlining of static methods & constants ( #2211 )
...
- guard by `unsafe`
- support `Array`, `Math`, `Number`, `Object` & `String`
fixes #2207
2017-07-07 05:35:32 +08:00
Alex Lam S.L
4b6ca5e742
inline property access of object literal ( #2209 )
...
- only if property value is side-effect-free
- guard by `unsafe`
fixes #2208
2017-07-06 21:51:58 +08:00
Alex Lam S.L
3493a182b2
implement function inlining ( #2053 )
...
- empty body
- single `AST_Return`
- single `AST_SimpleStatement`
- avoid `/*#__PURE__*/`
Miscellaneous
- enhance single-use function substitution
fixes #281
2017-06-06 05:49:53 +08:00
Alex Lam S.L
ec095ed647
whitelist unsafe evaluate candidates ( #2039 )
...
- all arguments may accept constant values
- return constant value
- free of side effects
- available & identical across locales and runtime environments
2017-06-01 04:33:05 +08:00
Alex Lam S.L
17e73121fa
enhance unsafe evaluate ( #2037 )
2017-06-01 00:56:28 +08:00