Alex Lam S.L
fac003c64f
avoid inline of function with special argument names ( #2625 )
2017-12-20 02:48:04 +08:00
Alex Lam S.L
2273655c17
fix inline after single-use reduce_vars ( #2623 )
2017-12-19 22:19:33 +08:00
Alex Lam S.L
4b334edf49
handle global constant collision with local variable after inline ( #2617 )
...
fixes #2616
2017-12-19 03:05:30 +08:00
Alex Lam S.L
8ddcbc39e6
compress apply() & call() of function ( #2613 )
...
- `fn.apply(a, [ ... ])` => `fn.call(a, ...)`
- `fn.call(a, ... )` => `a, fn(...)`
where `fn` can be `function` literal or symbol reference linked through `reduce_vars`
2017-12-18 16:23:39 +08:00
Alex Lam S.L
0b0eac1d5d
drop property assignment to constants ( #2612 )
2017-12-18 12:07:53 +08:00
kzc
85bfa17139
fix slowness in unused for blocks ( #2614 )
...
fixes #2609
2017-12-18 12:06:14 +08:00
Alex Lam S.L
b29fc8b27c
improve transversal efficiency in collapse_vars ( #2611 )
...
fixes #2603
2017-12-18 03:00:05 +08:00
Alex Lam S.L
7918a50d52
improve reset_opt_flags() ( #2610 )
2017-12-17 23:01:08 +08:00
Alex Lam S.L
21794c9b8d
account for catch variable when inline ( #2605 )
...
fixes #2604
2017-12-16 15:21:09 +08:00
Alex Lam S.L
6c686ce593
fix nested inline ( #2602 )
...
fixes #2601
2017-12-16 02:16:35 +08:00
Alex Lam S.L
db902af4c6
fix escape analysis on || and && ( #2600 )
...
fixes #2598
2017-12-15 19:48:14 +08:00
Alex Lam S.L
7d6907cb99
fix dead_code on nested try ( #2599 )
...
fixes #2597
2017-12-15 19:41:28 +08:00
Alex Lam S.L
092d9affb8
fix reduce_vars on do...while ( #2596 )
2017-12-15 16:33:19 +08:00
Alex Lam S.L
8f681b1d17
handle inline of function arguments ( #2590 )
...
fixes #2476
2017-12-15 13:28:30 +08:00
Alex Lam S.L
90313875f7
inline single-use function across loop ( #2594 )
2017-12-14 19:24:54 +08:00
Alex Lam S.L
3f18a61532
fix reduce_vars on single AST_Defun reference across loop ( #2593 )
2017-12-14 18:47:05 +08:00
Alex Lam S.L
02a6ce07eb
improve reduce_vars ( #2592 )
...
- account for hoisting nature of `var`
2017-12-14 15:32:13 +08:00
Alex Lam S.L
738fd52bc4
improve collapse_vars ( #2591 )
...
- handle single-use assignments other than `AST_VarDef`
- scan `AST_Call` for candidates
2017-12-14 15:31:35 +08:00
Alex Lam S.L
8266993c6e
fix dead_code on return/throw within try ( #2588 )
2017-12-14 04:38:21 +08:00
Alex Lam S.L
9a137e8613
drop local assign-only variable in return ( #2587 )
2017-12-14 02:59:59 +08:00
Alex Lam S.L
ef618332ea
fold cascade functionality into collapse_vars ( #2586 )
2017-12-14 01:20:36 +08:00
Alex Lam S.L
7f418978c9
recover lost opportunities from #2574 ( #2584 )
2017-12-13 18:20:53 +08:00
Alex Lam S.L
04cc395c35
improve collapse_vars on side-effect-free replacements ( #2583 )
2017-12-13 04:52:54 +08:00
Alex Lam S.L
e008dc1bde
minor clean-up for IIFE ( #2582 )
...
- faster exact type match
- aggressively convert to `!`
2017-12-13 01:27:26 +08:00
Alex Lam S.L
ebfd5c5c74
fix AST_VarDef.may_throw() ( #2580 )
2017-12-12 03:30:25 +08:00
Alex Lam S.L
f2ad542679
fix collapse_vars on switch ( #2578 )
2017-12-11 18:11:09 +08:00
Alex Lam S.L
0e16d92786
handle exceptional flow correctly in collapse_vars ( #2574 )
...
fixes #2571
2017-12-11 00:16:02 +08:00
alexlamsl
f2b179ae94
fix escape analysis for AST_Expansion
2017-12-10 23:05:22 +08:00
alexlamsl
c7e8fc4830
fix escape analysis for `AST_Await
...
fixes #2566
2017-12-10 23:03:29 +08:00
alexlamsl
f778a0aa01
fix escape analysis for AST_Yield
...
fixes #2565
2017-12-10 23:02:20 +08:00
alexlamsl
21c986ff5b
Merge branch 'master' into harmony-v3.2.2
2017-12-10 14:12:24 +08:00
Alex Lam S.L
0aff037a35
improve unused on assign-only symbols ( #2568 )
2017-12-09 06:19:29 +08:00
Alex Lam S.L
74a2f53683
fix escape analysis for AST_Throw ( #2564 )
2017-12-08 02:54:37 +08:00
Alex Lam S.L
e20935c3f2
fix escape analysis for AST_Conditional & AST_Sequence ( #2563 )
...
fixes #2560
2017-12-08 01:50:38 +08:00
Alex Lam S.L
3e34f62a1c
account for side-effects in conditional call inversion ( #2562 )
...
fixes #2560
2017-12-08 01:15:31 +08:00
Alex Lam S.L
d21cb84696
eliminate noop calls more aggressively ( #2559 )
2017-12-07 01:22:08 +08:00
Alex Lam S.L
3dd495ecdd
improve if_return ( #2558 )
...
`return void x()` => `x()`
2017-12-07 01:01:52 +08:00
Alex Lam S.L
87bae623e9
simplify computed properties for methods, getters & setters ( #2555 )
...
fixes #2554
2017-12-04 00:18:48 +08:00
alexlamsl
c9dbe9deb1
Merge branch 'master' into harmony-v3.2.1
2017-12-03 11:59:41 +08:00
Alex Lam S.L
77332a0315
fix dead_code on for ( #2552 )
2017-12-02 15:46:05 +08:00
Alex Lam S.L
8da3754e51
improve evaluate on typeof ( #2550 )
...
- gated through `typeofs`
2017-12-02 02:18:33 +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
7ac6fdcc99
improve switch case compression ( #2547 )
2017-12-01 14:32:00 +08:00
Alex Lam S.L
f6610baaa8
improve AST_For.init & AST_Switch.expression compression ( #2546 )
2017-12-01 12:53:59 +08:00
Alex Lam S.L
09b320e8a5
convert to number under boolean context ( #2545 )
2017-12-01 12:52:36 +08:00
Alex Lam S.L
5a1e99d713
improve compression of if conditions ( #2544 )
2017-12-01 06:18:31 +08:00
Alex Lam S.L
b762f2d6f4
improve compression of loop conditions ( #2543 )
2017-12-01 05:52:33 +08:00
Alex Lam S.L
172079a47f
improve code reuse ( #2542 )
2017-12-01 03:40:46 +08:00
Alex Lam S.L
c58d3936a3
fix corner case in call binding ( #2541 )
2017-12-01 03:18:20 +08:00
Alex Lam S.L
bc5047c1e7
fix inline on nested substitutions ( #2533 )
...
fixes #2531
2017-11-29 13:31:41 +08:00
Alex Lam S.L
755e2a62c6
extend hoist_props to AST_Arrow & AST_Class ( #2527 )
...
fixes #2503
2017-11-28 22:54:44 +08:00
Alex Lam S.L
62d2817d6c
reduce this in block scopes ( #2526 )
...
fixes #2455
2017-11-28 22:54:21 +08:00
Alex Lam S.L
37cbd7080c
replace single-use class definitions ( #2524 )
...
fixes #2416
2017-11-28 20:57:15 +08:00
Alex Lam S.L
206a54a746
fix nested hoist_props substitution ( #2523 )
...
fixes #2519
2017-11-28 14:39:00 +08:00
Alex Lam S.L
32def5ebf5
improve synergy between collapse_vars & unused ( #2521 )
2017-11-28 14:02:39 +08:00
Alex Lam S.L
ecc9f6b770
drop assignment in AST_VarDef.value ( #2522 )
...
fixes #2516
2017-11-28 13:08:40 +08:00
alexlamsl
4f08c2f504
Merge branch 'master' into harmony-v3.2.0
2017-11-26 04:23:57 +08:00
Alex Lam S.L
c141ae6f8d
fix argument/atom collision by properties ( #2514 )
...
fixes #2513
2017-11-25 22:52:46 +08:00
Alex Lam S.L
f1e3ef5262
separate keep_classnames & keep_fnames ( #2510 )
...
fixes #2418
2017-11-25 16:31:52 +08:00
Alex Lam S.L
3b28b915eb
extend escape analysis on constant expression properties ( #2509 )
...
fixes #2508
2017-11-24 14:07:39 +08:00
Alex Lam S.L
eb001dc1d9
fix argument/atom collision by collapse_vars ( #2507 )
...
fixes #2506
2017-11-24 07:26:22 +08:00
Alex Lam S.L
aa9bdf416e
make AST_Lambda.contains_this() less magical ( #2505 )
2017-11-24 07:03:37 +08:00
Alex Lam S.L
bbf38dc9c0
fix reduce_vars on arrow functions with this ( #2504 )
...
fixes #2496
2017-11-24 06:21:49 +08:00
Alex Lam S.L
8987780db6
eliminate invalid state caching in collapse_vars ( #2502 )
...
fixes #2497
2017-11-24 04:12:37 +08:00
kzc
3d8341a7ab
fix properties for array literal with spread ( #2499 )
...
fixes #2498
2017-11-24 02:04:26 +08:00
Alex Lam S.L
b80062c490
enable hoist_props by default ( #2492 )
2017-11-19 14:56:23 +08:00
alexlamsl
227b58812d
Merge branch 'master' into harmony-v3.1.10
2017-11-19 14:34:27 +08:00
Alex Lam S.L
ae28a24c7f
fix cross-scope inlining of AST_Functions ( #2486 )
...
fixes #2485
2017-11-16 10:04:30 +08:00
Alex Lam S.L
ebe761cad0
minor consolidations ( #2484 )
...
- unique symbol generation
- `unsafe` on `AST_Call`
2017-11-16 04:37:37 +08:00
Alex Lam S.L
49fbe9c5ac
fix replacement logic in collapse_vars ( #2475 )
2017-11-13 07:37:42 +08:00
Alex Lam S.L
2ac5086831
fix top_retain on hoist_props ( #2474 )
...
fixes #2473
2017-11-13 00:59:41 +08:00
Alex Lam S.L
c6cfa04d10
allow symbol replacement on multiple occurrences ( #2472 )
...
- all-or-nothing replacement
- avoid unmangleable names
fixes #2436
2017-11-12 22:31:47 +08:00
alexlamsl
11c0b1e1f9
Merge branch 'master' into harmony-v3.1.9
2017-11-11 15:45:34 +08:00
Alex Lam S.L
cda27b0970
extend reduce_funcs to cover cross-scope substitutions ( #2469 )
...
fixes #2468
2017-11-11 15:30:17 +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
650d5d5c9b
suppress hoist_props on export ( #2463 )
...
Miscellaneous
- fix double semi-colons from `beautify` in `export`
fixes #2462
2017-11-10 17:38:31 +08:00
Alex Lam S.L
94525d859f
fix object literal tracing in reduce_vars ( #2461 )
2017-11-10 05:47:10 +08:00
Alex Lam S.L
1127a2caf3
fix multiple nested function substitutions ( #2458 )
...
fixes #2449
2017-11-09 23:30:00 +08:00
Alex Lam S.L
246d9d4e83
remove hack in collapse_vars ( #2457 )
...
fixes #2456
2017-11-09 20:00:58 +08:00
Alex Lam S.L
4c0b0177b6
preserve function identity in reduce_vars ( #2451 )
...
fixes #2450
2017-11-08 03:28:46 +08:00
Alex Lam S.L
dd0a36119b
fix const under collapse_vars without unused ( #2454 )
...
fixes #2453
2017-11-08 02:10:46 +08:00
alexlamsl
e11cec1ab8
Merge branch 'master' into harmony
2017-11-07 04:30:40 +08:00
Alex Lam S.L
bbedbf4ea0
handle circular function reference gracefully ( #2446 )
...
fixes #2442
2017-11-07 02:37:23 +08:00
Alex Lam S.L
2cfb5aa7da
account for eval & with in reduce_vars ( #2441 )
...
fixes #2440
2017-11-06 16:10:57 +08:00
Alex Lam S.L
6c45101870
consolidate & enhance unused ( #2439 )
...
- defer declaration removal in `collapse_vars`
- account for `AST_SymbolFunarg` in deduplication
- private accounting for `collapse_vars`
- avoid issues with identity reference due to deep cloning
fixes #2437
2017-11-06 14:25:10 +08:00
Alex Lam S.L
2c2fd89e34
inline single-use functions that are not constant expressions ( #2434 )
...
fixes #2428
2017-11-05 22:14:11 +08:00
alexlamsl
df9c8dfd72
Merge branch 'master' into harmony-v3.1.7
2017-11-05 15:47:40 +08:00
Alex Lam S.L
5b4b07e9a7
extend function inlining safety checks ( #2430 )
2017-11-05 06:18:45 +08:00
Alex Lam S.L
a8aa28a7a6
consolidate single-use function reduction ( #2427 )
...
fixes #2423
2017-11-05 04:27:01 +08:00
Alex Lam S.L
fe5a68f9d5
maintain call argument order in collapse_vars ( #2426 )
...
fixes #2425
2017-11-05 00:00:18 +08:00
Alex Lam S.L
c8b6f4733d
reduce this within functions ( #2421 )
...
- only replace same-scope usages
- augment `test/ufuzz.js` to test for `this`
fixes #2420
2017-11-04 00:31:37 +08:00
kzc
29bbc41dfe
hoist_props: implement limited hoisting of class expressions ( #2415 )
2017-10-30 23:20:54 +08:00
Alex Lam S.L
a48f87abf2
compress new function containing this ( #2417 )
2017-10-30 23:19:27 +08:00
alexlamsl
0a9cdb6c73
handle computed properties correctly
2017-10-29 17:46:25 +08:00
alexlamsl
3ae34177a6
merge #2391 & #2393
2017-10-29 17:14:52 +08:00
alexlamsl
086cb33163
Merge branch 'master' into harmony-v3.1.6
2017-10-29 13:23:39 +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
6371e2ee63
consistently reduce const safe literals ( #2411 )
...
fixes #2406
2017-10-28 11:36:44 +08:00
Alex Lam S.L
6ab73c7bd5
fix & improve AST_TemplateString ( #2410 )
...
- resolve `semicolons:false` ambiguity with tagged literals
- allow `side_effects` to work on template literals
- traverse `AST_TemplateString` properly
fixes #2401
2017-10-28 11:36:09 +08:00
Alex Lam S.L
31f8209193
remove dead code ( #2405 )
2017-10-27 14:28:09 +08:00
Alex Lam S.L
9b0f86f5a1
fix reduce_vars on AST_Array.length ( #2404 )
2017-10-27 02:33:37 +08:00
Alex Lam S.L
ee082ace1b
compress self comparisons ( #2398 )
2017-10-26 01:16:12 +08:00
Alex Lam S.L
4178289c38
implement hoist_props ( #2396 )
...
fixes #2377
2017-10-25 03:38:11 +08:00
Alex Lam S.L
74ae16f9f8
fix unsafe reduce_vars on arrays & objects ( #2397 )
2017-10-24 22:10:36 +08:00
Alex Lam S.L
86ea38a259
enhance unsafe evaluate of arrays & objects ( #2394 )
2017-10-24 02:58:30 +08:00
Alex Lam S.L
8a713e449f
deduplicate declarations regardless of toplevel ( #2393 )
2017-10-23 01:00:50 +08:00
Alex Lam S.L
7d9a8596a9
fix dead_code on AST_Destructuring ( #2392 )
...
fixes #2383
2017-10-23 00:34:34 +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
5fd723f143
fix unsafe expansion of object literals ( #2390 )
2017-10-22 15:00:36 +08:00
Alex Lam S.L
516eaef50c
fix unsafe evaluation of AST_Sub ( #2389 )
2017-10-22 13:14:15 +08:00
Alex Lam S.L
4ae1fb3ed8
fix unsafe evaluation of objects ( #2388 )
2017-10-22 04:19:40 +08:00
Alex Lam S.L
011123223b
fix unsafe escape analysis in reduce_vars ( #2387 )
2017-10-22 03:23:31 +08:00
alexlamsl
c60fa67827
Merge branch 'master' into harmony-v3.1.5
2017-10-22 00:35:00 +08:00
Alex Lam S.L
c927cea632
unsafe fix-ups for #2351 ( #2379 )
2017-10-21 04:08:26 +08:00
Alex Lam S.L
0f2ef3367c
enhance collapse_vars around lazy operations ( #2369 )
2017-10-19 04:52:00 +08:00
Alex Lam S.L
7e5b5cac97
fix AST_PropAccess in collapse_vars (take 3) ( #2375 )
...
Suppress scanning beyond assignment to `a.b`
2017-10-18 02:54:51 +08:00
Alex Lam S.L
c1346e06b7
clean up lazy operator detection ( #2373 )
2017-10-17 23:25:45 +08:00
Alex Lam S.L
0d2fe8e3ef
fix AST_PropAccess in collapse_vars (take 2) ( #2372 )
...
fixes #2364
2017-10-17 22:59:15 +08:00
Alex Lam S.L
f2b9c11e2a
fix AST_PropAccess in collapse_vars ( #2370 )
...
fixes #2364
2017-10-17 18:33:03 +08:00
Alex Lam S.L
b6a7ca292e
deduplicate AST_Super & AST_This logic ( #2366 )
2017-10-17 04:19:53 +08:00
Alex Lam S.L
fe647b083e
account for side-effects from AST_This in collapse_vars ( #2365 )
2017-10-17 01:18:55 +08:00
alexlamsl
58a5608b66
Merge branch 'master' into harmony-v3.1.4
2017-10-16 12:32:50 +08:00
kzc
f496ac5c85
implement compress option computed_props ( #2361 )
...
transforms `{["computed"]: 1}` into `{computed: 1}`
2017-10-16 11:35:04 +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
1abe14296e
collapse a.b whenever safe ( #2350 )
2017-10-08 13:17:48 +08:00
kzc
336b1add4f
fix unsafe join() on array literal with spread ( #2347 )
...
fixes #2345
2017-10-06 00:57:00 +08:00
alexlamsl
4fac8076b8
Merge branch 'master' into harmony-v3.1.3
2017-10-01 12:42:40 +08:00
Alex Lam S.L
dd71639264
enhance reduce_vars for AST_Accessor ( #2339 )
...
fixes #2336
2017-10-01 03:01:50 +08:00
alexlamsl
bd84007cf4
Merge branch 'master' into harmony-v3.1.2
2017-09-24 02:20:47 +08:00
kzc
a784717fe2
allow RegExp for unsafe_methods compress option ( #2327 )
2017-09-21 00:48:16 +08:00
Alex Lam S.L
00f509405b
suppress collapse_vars of this into "use strict" ( #2326 )
...
fixes #2319
2017-09-20 05:23:20 +08:00
kzc
e8235657e4
add new compress option unsafe_methods for ecma >= 6 ( #2325 )
...
fixes #2321
2017-09-20 00:15:54 +08:00
alexlamsl
3b0b4d6abf
handle AST_Super in collapse_vars & side_effects
2017-09-17 05:09:36 +08:00
alexlamsl
d73500e8d1
Merge branch 'master' into harmony-v3.1.1
2017-09-17 04:43:43 +08:00
Alex Lam S.L
4f0953f7e9
handle LHS side-effects on cascade & collapse_vars ( #2314 )
...
fixes #2313
2017-09-16 11:45:19 +08:00
alexlamsl
8891495789
Merge branch 'master' into harmony-v3.1.0
2017-09-10 15:39:33 +08:00
Mateusz Burzyński
8158b1bdcf
Testing all leading comments against being PURE comments ( #2305 )
2017-09-10 02:08:15 +08:00
Alex Lam S.L
aacf3edc68
extend unsafe on pure global functions ( #2303 )
2017-09-07 22:08:34 +08:00
kzc
8b89072190
add Date and other known globals to unsafe compress option ( #2302 )
2017-09-07 02:44:26 +08:00
Alex Lam S.L
395a17ccda
fix collapse_vars on default function argument ( #2299 )
...
Avoid collision with local variable `undefined` under certain corner cases.
fixes #2298
2017-09-04 02:32:33 +08:00
Alex Lam S.L
3f355866cf
correctly count declarations after hoist_vars ( #2297 )
...
fixes #2295
2017-09-03 17:23:31 +08:00
kzc
2779a29a86
avoid generating ternary with spread ( #2293 )
...
fixes #2292
2017-08-31 00:57:07 +08:00
Alex Lam S.L
e5cf7972ea
fix unused patching of AST_For.init blocks ( #2289 )
...
fixes #2288
2017-08-29 01:10:04 +08:00
kzc
ae0f117da6
Introduce new compress option unsafe_arrows ( #2278 )
...
* Not always safe to convert a function expression to an arrow
function when code depends on the function prototype existing.
Fixes #2271
2017-08-16 22:51:26 +08:00
Alex Lam S.L
2bf8216e50
fix pure_getters on spread of objects ( #2275 )
2017-08-13 22:08:33 +08:00
kzc
4700c14855
implement object rest/spread ( #2265 )
...
- improve parse errors for destructuring spread elements
- `unsafe` for object literals with rest elements
Miscellaneous
- increase mocha unicode surrogate test timeout
2017-08-02 13:47:58 +08:00
kzc
d600c78d7b
have keep_quoted respect quoted method names ( #2258 )
...
fixes #2257
2017-07-28 19:42:12 +08:00
Alex Lam S.L
d3df2f985d
extend collapse_vars to let and const ( #2252 )
...
fixes #2250
2017-07-25 22:07:21 +08:00
alexlamsl
3a2b737c42
Merge branch 'master' into harmony-v3.0.25
2017-07-16 11:15:07 +08:00
Alex Lam S.L
9e1da9235e
ensure ie8 works with mangled properties ( #2238 )
...
fixes #2234
2017-07-15 22:50:59 +08:00