7906033 | Alex Lam S.L | 19 March 2017, 10:24:29 UTC | Merge pull request #1624 from alexlamsl/harmony-v2.8.14 Merging from master for 2.8.14 | 19 March 2017, 10:24:29 UTC |
4bf21ce | alexlamsl | 19 March 2017, 07:35:39 UTC | add `expect_stdout` to tests | 19 March 2017, 07:35:39 UTC |
44d6b47 | alexlamsl | 19 March 2017, 07:31:18 UTC | Merge branch 'master' into harmony-v2.8.14 | 19 March 2017, 07:31:18 UTC |
30a7504 | Alex Lam S.L | 19 March 2017, 07:24:57 UTC | v2.8.14 | 19 March 2017, 07:24:57 UTC |
a3cc3a9 | Alex Lam S.L | 19 March 2017, 04:00:32 UTC | make `expect_stdout` work on Node.js 0.12 (#1623) That particular version of Node.js has messed up error messages, so provide a version-specific workaround. Also fixed an formatting issue which would cause `expect_stdout` to fail if error message contains excerpts of input. Apply `expect_stdout` to more applicable tests. | 19 March 2017, 04:00:32 UTC |
96f8bef | Alex Lam S.L | 19 March 2017, 03:59:42 UTC | fix commit 88fb83a (#1622) The following is wrong: `a == (b ? a : c)` => `b` Because: - `b` may not be boolean - `a` might have side effects - `a == a` is not always `true` (think `NaN`) - `a == c` is not always `false` | 19 March 2017, 03:59:42 UTC |
cd58635 | Alex Lam S.L | 18 March 2017, 19:04:22 UTC | fix AST_Binary.lift_sequences() (#1621) Commit eab99a1c fails to account for side effects from compound assignments. | 18 March 2017, 19:04:22 UTC |
274331d | Alex Lam S.L | 18 March 2017, 18:17:15 UTC | transform String.charAt() to index access (#1620) Guarded by `unsafe` as `charAt()` can be overridden. | 18 March 2017, 18:17:15 UTC |
129e449 | Alex Lam S.L | 18 March 2017, 05:02:09 UTC | Merge pull request #1614 from alexlamsl/harmony-v2.8.13 Merging from master for 2.8.13 | 18 March 2017, 05:02:09 UTC |
75c3c89 | alexlamsl | 17 March 2017, 18:52:45 UTC | Merge branch 'master' into harmony-v2.8.13 | 17 March 2017, 18:52:45 UTC |
0489d6d | Alex Lam S.L | 17 March 2017, 18:33:51 UTC | handle runtime errors in `expect_stdout` (#1618) allow test to pass if both `input` and `expect` throws the same kind of error | 17 March 2017, 18:33:51 UTC |
fb09283 | Alex Lam S.L | 17 March 2017, 17:56:15 UTC | fix top-level directives in compress tests (#1615) `input` and `expect` are parsed as `AST_BlockStatement` which does not support `AST_Directive` by default. Emulate that by transforming preceding `AST_SimpleStatement`s of `AST_String` into `AST_Directive`. | 17 March 2017, 17:56:15 UTC |
d26b752 | Alex Zaworski | 17 March 2017, 17:29:13 UTC | Allow 'name' as object literal shorthand property (#1617) fixes #1613 | 17 March 2017, 17:29:13 UTC |
b7c112e | Christian Maughan Tegnér | 16 March 2017, 19:08:38 UTC | Add `--in-source-map inline` documentation (#1611) | 16 March 2017, 19:08:38 UTC |
b2b8a0d | Alex Lam S.L | 16 March 2017, 18:01:33 UTC | v2.8.13 | 16 March 2017, 18:01:33 UTC |
ac40301 | Alex Lam S.L | 16 March 2017, 16:26:48 UTC | fix chained evaluation (#1610) `reduce_vars` enables substitution of variables but did not clone the value's `AST_Node`. This confuses `collapse_vars` and result in invalid AST and subsequent crash. fixes #1609 | 16 March 2017, 16:26:48 UTC |
3563d8c | Alex Lam S.L | 16 March 2017, 15:20:06 UTC | extend `test/run-tests.js` to optionally execute uglified output (#1604) fixes #1588 | 16 March 2017, 15:20:06 UTC |
5ae04b3 | Alex Lam S.L | 16 March 2017, 05:22:26 UTC | make `collapse_vars` consistent with `toplevel` (#1608) fixes #1605 | 16 March 2017, 05:22:26 UTC |
a80b228 | Alex Lam S.L | 16 March 2017, 04:03:30 UTC | fix `hoist_vars` on `reduce_vars` (#1607) `hoist_vars` converts variable declarations into plain assignments, which then confuses `reduce_vars` fixes #1606 | 16 March 2017, 04:03:30 UTC |
cf4bf4c | Alex Lam S.L | 15 March 2017, 17:02:59 UTC | fix stack issues with `AST_Node.evaluate()` (#1603) As patched in #1597, `make_node_from_constant()` makes inconsistent and sometimes incorrect calls to `optimize()` and `transform()`. Fix those issues properly by changing the semantics of `evaluate()` and `make_node_from_constant()`, with the side effect that `evaluate()` no longer eagerly converts constant to `AST_Node`. | 15 March 2017, 17:02:59 UTC |
8223b2e | Alex Lam S.L | 15 March 2017, 10:44:13 UTC | fix `AST_Node.optimize()` (#1602) Liberal use of `Compressor.transform()` and `AST_Node.optimize()` presents an issue for look-up operations like `TreeWalker.in_boolean_context()` and `TreeWalker.parent()`. This is an incremental fix such that `AST_Node.optimize()` would now contain the correct stack information when called correctly. | 15 March 2017, 10:44:13 UTC |
2fd86d3 | Alex Lam S.L | 14 March 2017, 06:29:32 UTC | Merge pull request #1601 from alexlamsl/harmony-v2.8.12 Merging from master for 2.8.12 | 14 March 2017, 06:29:32 UTC |
381bd38 | Alex Lam S.L | 14 March 2017, 05:19:05 UTC | minor clean-ups (#1600) - remove obsolete optimisation in `AST_Binary` after #1477 - improve `TreeWalker.has_directive()` readability and resilience against multiple visits | 14 March 2017, 05:19:05 UTC |
8f7ab60 | alexlamsl | 14 March 2017, 05:17:42 UTC | Merge branch 'master' into harmony-v2.8.12 | 14 March 2017, 05:17:42 UTC |
1dd339f | Alex Lam S.L | 14 March 2017, 05:13:43 UTC | fix `unused` crashes (#1599) - `AST_DefaultAssign` on `keep_fargs` - `AST_Expansion on` `keep_fargs` - `AST_Destructuring` on top-level declarations without `toplevel` | 14 March 2017, 05:13:43 UTC |
919d5e3 | Alex Lam S.L | 10 March 2017, 21:00:55 UTC | v2.8.12 | 10 March 2017, 21:00:55 UTC |
e3a3db7 | Alex Lam S.L | 10 March 2017, 20:59:55 UTC | temporary fix for boolean bug (#1597) fixes #1592 | 10 March 2017, 20:59:55 UTC |
d9344f3 | Alex Lam S.L | 10 March 2017, 19:34:55 UTC | disallow parameter substitution for named IIFEs (#1596) Self-referenced function has non-fixed values assigned to its parameters. Let `unused` & `!keep_fnames` do the scanning, then apply `reduce_vars` only to unnamed functions. fixes #1595 | 10 March 2017, 19:34:55 UTC |
c7063c1 | Alex Lam S.L | 10 March 2017, 08:38:23 UTC | Merge pull request #1591 from alexlamsl/harmony-v2.8.11 Merging from master for 2.8.11 | 10 March 2017, 08:38:23 UTC |
be80f7e | Alex Lam S.L | 10 March 2017, 03:27:30 UTC | support multi-line string in tests (#1590) `expect_exact` sometimes have multiple lines and `\n` are hard to read. Use array of strings to emulate line breaks and improve readability. | 10 March 2017, 03:27:30 UTC |
f4a12b3 | alexlamsl | 10 March 2017, 03:17:49 UTC | Merge branch 'master' into harmony-v2.8.11 | 10 March 2017, 03:17:49 UTC |
cf45e2f | Alex Lam S.L | 10 March 2017, 02:49:41 UTC | fixup for #1585 (#1589) As patched on `harmony`, `statement()` is the only user of `embed_tokens()` with a missing error branch. Updated test case and match up with `harmony` to facilitate future merging. | 10 March 2017, 02:49:41 UTC |
8354758 | Alex Lam S.L | 09 March 2017, 20:17:21 UTC | v2.8.11 | 09 March 2017, 20:17:21 UTC |
9e6b128 | Alex Lam S.L | 09 March 2017, 19:15:21 UTC | fix catch variable reference in IE8 (#1587) `AST_Scope.def_variable()` will overwrite `AST_Symbol.thedef`, so save a copy before calling. fixes #1586 | 09 March 2017, 19:15:21 UTC |
93cdb19 | Michael Mior | 09 March 2017, 19:08:43 UTC | Correctly raise a parse exception with a missing loop body (#1585) | 09 March 2017, 19:08:43 UTC |
b633706 | Alex Lam S.L | 09 March 2017, 11:11:05 UTC | fix & improve function argument compression (#1584) - one-use function call => IIFE should take `eval()` & `arguments` into account - if unused parameter cannot be eliminated, replace it with `0` fixes #1583 | 09 March 2017, 11:11:05 UTC |
5d5c793 | Alex Lam S.L | 09 March 2017, 05:14:55 UTC | Merge pull request #1582 from alexlamsl/harmony-v2.8.10 Merging from master for 2.8.10 | 09 March 2017, 05:14:55 UTC |
8f4b45f | alexlamsl | 08 March 2017, 22:02:28 UTC | Merge branch 'master' into harmony-v2.8.10 | 08 March 2017, 22:02:28 UTC |
e9920f7 | Alex Lam S.L | 08 March 2017, 21:48:06 UTC | v2.8.10 | 08 March 2017, 21:48:06 UTC |
7e465d4 | Alex Lam S.L | 08 March 2017, 21:22:27 UTC | scan RHS of dropped assignments (#1581) - similar case as #1578 but against #1450 instead - fix `this` binding in #1450 as well closes #1580 | 08 March 2017, 21:22:27 UTC |
aa80ee3 | Alex Lam S.L | 08 March 2017, 11:19:54 UTC | remove checkboxes from Issues template | 08 March 2017, 11:19:54 UTC |
80e8176 | Alex Lam S.L | 08 March 2017, 10:56:01 UTC | explain how to make a proper bug report (#1579) fixes #1574 | 08 March 2017, 10:56:01 UTC |
711f88d | Alex Lam S.L | 08 March 2017, 10:37:32 UTC | scan assignment value in drop_unused() (#1578) those were not optimised for `unused` before, which made it necessary for `reduce_vars` to have separate steps for `keep_fnames` docs update by @kzc closes #1577 | 08 March 2017, 10:37:32 UTC |
344d11d | Alex Lam S.L | 08 March 2017, 04:41:22 UTC | v2.8.9 | 08 March 2017, 04:41:22 UTC |
c7cdcf0 | Alex Lam S.L | 08 March 2017, 04:39:57 UTC | fix function name eliminiation (#1576) Function expression can be assigned to a variable and be given a name. Ensure function name is the reduced variable before clearing it out. fixes #1573 fixes #1575 | 08 March 2017, 04:39:57 UTC |
3ee5574 | Alex Lam S.L | 07 March 2017, 22:00:51 UTC | only run benchmark & jetstream on CI (#1571) | 07 March 2017, 22:00:51 UTC |
dedbeef | Alex Lam S.L | 07 March 2017, 21:07:05 UTC | plan B for IE8 do-while semi-colon fix (#1572) - omitting trailing semi-colon in do-while breaks non-browser parser, e.g. uglify-js 1.x - trailing semi-colon only breaks IE8 if followed by `else` or `while` - always use braces in do-while body to workaround 2nd case with no size loss in compression fixes #1568 | 07 March 2017, 21:07:05 UTC |
bd6dee5 | Alex Lam S.L | 07 March 2017, 19:31:51 UTC | fix return from recursive IIFE (#1570) `side-effects` did not account for IIFEs being able to reference itself thus making its return value potentially significant | 07 March 2017, 19:31:51 UTC |
952e265 | Alex Lam S.L | 07 March 2017, 15:56:23 UTC | Merge pull request #1567 from alexlamsl/harmony-v2.8.8 Merging from master for 2.8.8 | 07 March 2017, 15:56:23 UTC |
240383a | qinayi | 07 March 2017, 15:50:58 UTC | is_block_scope return true when current node is an instance of AST_IterationStatement. then the scope of let variable can be figured out accurately (#1561) | 07 March 2017, 15:50:58 UTC |
250b782 | alexlamsl | 07 March 2017, 12:25:52 UTC | Merge branch 'master' into harmony-v2.8.8 | 07 March 2017, 12:25:52 UTC |
144052c | Alex Lam S.L | 07 March 2017, 11:58:41 UTC | v2.8.8 | 07 March 2017, 11:58:41 UTC |
65c848c | Alex Lam S.L | 07 March 2017, 11:25:12 UTC | include benchmark.js in test suite (#1564) - report file sizes and overall run time - exit with non-zero code upon error | 07 March 2017, 11:25:12 UTC |
8a8a94a | Alex Lam S.L | 07 March 2017, 10:38:27 UTC | fix deep cloning of labels (#1565) `AST_Label.references` get `.initialize()` to `[]` every time after `.clone()` So walk down the tree to pick up the cloned `AST_LoopControl` pieces and put it back together. | 07 March 2017, 10:38:27 UTC |
8153b7b | Alex Lam S.L | 07 March 2017, 07:37:52 UTC | transform function calls to IIFEs (#1560) - expose function body to call sites for potential optimisations - suppress substitution of variable used within `AST_Defun` | 07 March 2017, 07:37:52 UTC |
d787d70 | Alex Lam S.L | 06 March 2017, 19:11:03 UTC | avoid substitution of global variables (#1557) - unless `toplevel` is enabled - global `const` works as before | 06 March 2017, 19:11:03 UTC |
3ac2421 | kzc | 06 March 2017, 17:42:33 UTC | collapse_vars: do not replace a constant in loop condition or init (#1562) | 06 March 2017, 17:42:33 UTC |
a9fc9dd | Alex Lam S.L | 06 March 2017, 09:31:35 UTC | suppress semicolons after do/while (#1556) - unless both `beautify` & `screw-ie8` are enabled - deprecate workaround for if-do-while-else fixes #186 | 06 March 2017, 09:31:35 UTC |
3c2b3ae | Alex Lam S.L | 05 March 2017, 15:03:30 UTC | Merge pull request #1554 from alexlamsl/harmony-v2.8.6 Merging from master for 2.8.7 | 05 March 2017, 15:03:30 UTC |
aa60549 | alexlamsl | 05 March 2017, 13:42:34 UTC | Merge branch 'master' into harmony-v2.8.6 | 05 March 2017, 13:42:34 UTC |
33a26d4 | kzc | 05 March 2017, 08:15:13 UTC | patch up #1543 for harmony fixes #1537 | 05 March 2017, 13:39:31 UTC |
a5d62a3 | Alex Lam S.L | 05 March 2017, 09:17:08 UTC | v2.8.7 | 05 March 2017, 09:17:08 UTC |
067e5a5 | Alex Lam S.L | 05 March 2017, 09:15:37 UTC | fixup for #1553 (#1555) - `++a` is the one that is foldable - transform `a++` into `++a` for better optimisation | 05 March 2017, 09:15:37 UTC |
49d9ac1 | alexlamsl | 05 March 2017, 08:03:56 UTC | Merge branch 'master' into harmony-v2.8.6 | 05 March 2017, 08:03:56 UTC |
33b5f31 | Alex Lam S.L | 05 March 2017, 07:48:28 UTC | v2.8.6 | 05 March 2017, 07:48:28 UTC |
35a849d | Alex Lam S.L | 05 March 2017, 06:56:14 UTC | collapse assignment with adjacent subsequent usage (#1553) - consolidate `cascade` optimisations - support ++/-- postfixes - remove redundant optimisation identified in #1460 fixes #368 | 05 March 2017, 06:56:14 UTC |
b70591b | Alex Lam S.L | 05 March 2017, 05:13:44 UTC | handle variable declaration within catch blocks (#1546) accounts for IE8- scoping | 05 March 2017, 05:13:44 UTC |
b33e7f8 | Alex Lam S.L | 05 March 2017, 05:09:27 UTC | improve `unsafe` on undefined (#1548) `unsafe` turns undefined keyword into a variable of the same name if found, but that interferes with other related optimisations. Keep track of such transformations to ensure zero information loss in the process. | 05 March 2017, 05:09:27 UTC |
1f0333e | Alex Lam S.L | 05 March 2017, 04:51:11 UTC | stay safe with constants in IE8- (#1547) - `undefined` etc. can be redefined at top-level for IE8-, so disable related optimisations - fixed `--support-ie8` catch mangle bug | 05 March 2017, 04:51:11 UTC |
eb98a7f | Alex Lam S.L | 05 March 2017, 04:16:02 UTC | fix handling of shebang and preamble (#1545) fixes #1332 | 05 March 2017, 04:16:02 UTC |
78d1bb9 | Alex Lam S.L | 05 March 2017, 04:12:59 UTC | fix a corner case in #1530 (#1552) | 05 March 2017, 04:12:59 UTC |
ea9ab9f | Alex Lam S.L | 04 March 2017, 17:54:20 UTC | resolve issue with outdated version of async (#1549) fixes #746 | 04 March 2017, 17:54:20 UTC |
ce54c9c | kzc | 03 March 2017, 18:39:54 UTC | disallow collapse_vars constant replacement in for-in statements (#1543) | 03 March 2017, 18:39:54 UTC |
07accd2 | Alex Lam S.L | 03 March 2017, 10:13:07 UTC | process code with implicit return statement (#1522) Bookmarklet for instance implicitedly assumes a "completion value" without using `return`. The `expression` option now supports such use cases. Optimisations on IIFEs also enhanced. fixes #354 fixes #543 fixes #625 fixes #628 fixes #640 closes #1293 | 03 March 2017, 10:13:07 UTC |
18059cc | Alex Lam S.L | 03 March 2017, 10:04:32 UTC | compress numerical expressions (#1513) safe operations - `a === b` => `a == b` - `a + -b` => `a - b` - `-a + b` => `b - a` - `a+ +b` => `+b+a` associative operations (bit-wise operations are safe, otherwise `unsafe_math`) - `a + (b + c)` => `(a + b) + c` - `(n + 2) + 3` => `5 + n` - `(2 * n) * 3` => `6 * n` - `(a | 1) | (2 | d)` => `(3 | a) | b` fixes #412 | 03 March 2017, 10:04:32 UTC |
c8e6144 | Alex Lam S.L | 02 March 2017, 23:30:28 UTC | Merge pull request #1541 from alexlamsl/harmony-v2.8.5 Merging from master for 2.8.5 | 02 March 2017, 23:30:28 UTC |
f704e9b | alexlamsl | 02 March 2017, 23:23:46 UTC | fix destructing crash in reduce_vars fixes #1531 | 02 March 2017, 23:23:46 UTC |
0b77d86 | alexlamsl | 02 March 2017, 23:17:52 UTC | Merge branch 'master' into harmony-v2.8.5 | 02 March 2017, 23:17:52 UTC |
b5e0e8c | Alex Lam S.L | 02 March 2017, 23:12:24 UTC | facilitate fix for #1531 (#1542) | 02 March 2017, 23:12:24 UTC |
e5cb927 | Alex Lam S.L | 02 March 2017, 21:14:21 UTC | v2.8.5 | 02 March 2017, 21:14:21 UTC |
17b8135 | Alex Lam S.L | 02 March 2017, 20:45:20 UTC | fix chained assignment with `unused` (#1540) When #1450 optimises `a=b=42`, it stops after the first variable even if both are unused. fixes #1539 | 02 March 2017, 20:45:20 UTC |
4d63d4f | kzc | 02 March 2017, 19:51:15 UTC | collapse_vars should not replace constant in for-in init section (#1538) fixes #1537 | 02 March 2017, 19:51:15 UTC |
70d72ad | Alex Lam S.L | 02 March 2017, 18:39:57 UTC | properly cover all cases of for-in loop variables (#1536) | 02 March 2017, 18:39:57 UTC |
fe9227a | Alex Lam S.L | 02 March 2017, 16:56:06 UTC | fix reference marking in for-in loops (#1535) fixes #1533 | 02 March 2017, 16:56:06 UTC |
b49e142 | Alex Lam S.L | 02 March 2017, 16:54:41 UTC | disable do{...}while(false) optimisation (#1534) - fails to handle `break` in body fixes #1532 | 02 March 2017, 16:54:41 UTC |
ee3b39b | kzc | 02 March 2017, 07:11:40 UTC | optimize trivial IIFEs returning constants (#1530) | 02 March 2017, 07:11:40 UTC |
9699ffb | Alex Lam S.L | 02 March 2017, 03:33:59 UTC | trim unused invocation parameters (#1526) | 02 March 2017, 03:33:59 UTC |
fdc9b94 | Alex Lam S.L | 02 March 2017, 03:31:39 UTC | minor improvement to string optimisation (#1514) - "" + "a" => "a" - "" + a + "b" => a + "b" - "a" + "" => "a" (improving on #45) | 02 March 2017, 03:31:39 UTC |
e27dab7 | Alex Lam S.L | 02 March 2017, 03:22:06 UTC | Merge pull request #1528 from alexlamsl/harmony-v2.8.4 Merging from master for 2.8.4 | 02 March 2017, 03:22:06 UTC |
80f3ad3 | alexlamsl | 02 March 2017, 03:16:55 UTC | Merge branch 'master' into harmony-v2.8.4 | 02 March 2017, 03:16:55 UTC |
40ceddb | Alex Lam S.L | 01 March 2017, 16:24:49 UTC | v2.8.4 | 01 March 2017, 16:24:49 UTC |
7aa6911 | Alex Lam S.L | 01 March 2017, 16:20:53 UTC | fix corner cases in `reduce_vars` (#1524) Avoid variable substitution in the following cases: - use of variable before declaration - declaration within conditional code blocks - declaration within loop body fixes #1518 fixes #1525 | 01 March 2017, 16:20:53 UTC |
bff7ad6 | Alex Lam S.L | 01 March 2017, 07:28:46 UTC | v2.8.3 | 01 March 2017, 07:28:46 UTC |
c2334ba | Alex Lam S.L | 01 March 2017, 07:25:26 UTC | fix crash on missing `props` to `string_template()` (#1523) Patched up `make_node()` without `orig`. There may be other cases where `start` could be missing, so make it print "undefined" instead of crashing. fixes #1518 | 01 March 2017, 07:25:26 UTC |
22f7af2 | Alex Lam S.L | 01 March 2017, 03:13:32 UTC | Merge pull request #1521 from alexlamsl/harmony-v2.8.2 Merging from master for 2.8.2 | 01 March 2017, 03:13:32 UTC |
8a7a474 | alexlamsl | 01 March 2017, 03:06:33 UTC | Merge branch 'master' into harmony-v2.8.2 | 01 March 2017, 03:06:33 UTC |
fb2b6c7 | Alex Lam S.L | 28 February 2017, 20:46:12 UTC | v2.8.2 | 28 February 2017, 20:46:12 UTC |
f5cbe19 | Alex Lam S.L | 28 February 2017, 20:12:10 UTC | invert `reduce_vars` tracking flag (#1519) Modules like webpack and grunt-contrib-uglify still uses `ast.transform(compressor)` before `Compressor.compress(ast)` was introduced. Workaround this compatibility issue by deactivating `reduce_vars` in such case. Also fix use case with omitted `options` when calling `Compressor()`. fixes #1516 | 28 February 2017, 20:12:10 UTC |
b34fa11 | Alex Lam S.L | 28 February 2017, 18:03:47 UTC | fix `evaluate` on object getter & setter (#1515) | 28 February 2017, 18:03:47 UTC |
320984c | Alex Lam S.L | 28 February 2017, 16:27:08 UTC | v2.8.1 | 28 February 2017, 16:27:08 UTC |