aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-03-31v2.8.20Alex Lam S.L
2017-03-31fix missing preamble when shebang is absent (#1742)Alex Lam S.L
2017-03-31v2.8.19Alex Lam S.L
2017-03-31fix catch symbol mangling (#1734)Alex Lam S.L
Only need to look up the immediate non-block/catch scope for the same-name special case. fixes #1733
2017-03-30remove paranthesis for `-(x*y)` (#1732)Alex Lam S.L
2017-03-30optimize try-catch-finally (#1731)Alex Lam S.L
- eliminate empty blocks - flatten out if try-block does not throw
2017-03-30improve tests from #1726 (#1729)Alex Lam S.L
2017-03-29speed up IIFE elimination (#1728)Alex Lam S.L
- `side_effects` will clean up inner statements, so checking for an empty function body should suffice - drop side effects when dropping `return` from statement
2017-03-29speed up `equivalent_to()` and `AST_Switch` (#1727)Alex Lam S.L
2017-03-29fix missing parentheses around NaN/Infinity shorthands (#1726)Alex Lam S.L
fixes #1724 fixes #1725
2017-03-29output optimal representations of NaN & Infinity (#1723)Alex Lam S.L
- move these optimisations out from `Compressor` to `OutputStream` - fixes behaviour inconsistency when running uglified code from global or module levels due to redefinition
2017-03-29improve beautified output of switch blocks (#1721)Alex Lam S.L
2017-03-29v2.8.18Alex Lam S.L
2017-03-29remove UGLIFY_DEBUG (#1720)Alex Lam S.L
fixes #1719
2017-03-29fix corner case in `unused` (#1718)Alex Lam S.L
When fixing catch-related issue in #1715, it tries to optimise for duplicate definitions but did not take anonymous functions into account. Remove such optimisation for now and we can cover this as a more general rule later.
2017-03-28v2.8.17Alex Lam S.L
2017-03-28fix `unused` on var of the same name within catch (#1716)Alex Lam S.L
fixes #1715
2017-03-28fix `is_number()` on `+=` (#1714)Alex Lam S.L
fixes #1710
2017-03-28drop anonymous function name when overshadowed by other declarations (#1712)Alex Lam S.L
fixes #1709
2017-03-28handle var within catch of the same name (#1711)Alex Lam S.L
The following code prints `1`: var a = 1; !function(){ a = 4; try{ throw 2; } catch (a) { var a = 3; } }(); console.log(a); fixes #1708
2017-03-28fix tail trimming of switch blocks (#1707)Alex Lam S.L
now guarded under `dead_code` fixes #1705
2017-03-28fix mangle for variable declared within catch block (#1706)Alex Lam S.L
fixes #1704
2017-03-27ufuzz: workaround for Function.toString() v2 (#1700)Alex Lam S.L
2017-03-27`has_side_effects()` should take `AST_Switch.expression` into account (#1699)Alex Lam S.L
fixes #1698
2017-03-27fix typeof side effects (#1696)Alex Lam S.L
`statement_to_expression()` drops `typeof` even if it operates on undeclared variables. Since we now have `drop_side_effect_free()`, replace and remove this deprecated functionality.
2017-03-27preserve side effects in switch expression (#1694)Alex Lam S.L
fixes #1690
2017-03-27fix `cascade` on anonymous function reference (#1693)Alex Lam S.L
Unlike normal variables and even function definitions, these cannot be reassigned, even though assignment expressions would "leak" the assigned value as normal.
2017-03-27handle overlapped variable definitions (#1691)Alex Lam S.L
Process variable definitions with or without assigned values against: - `arguments` - named function arguments - multiple definitions within same scope Essentially demote variable declarations with no value assignments. Also fixed invalid use of `AST_VarDef` over `arguments` - should use a member of `AST_SymbolDeclaration` instead.
2017-03-26fix `delete` related issues in `collapse_vars` and `reduce_vars` (#1689)Alex Lam S.L
2017-03-26ufuzz: workaround function name and toString() (#1688)Alex Lam S.L
fixes #1686
2017-03-26fix `cascade` on `delete` operator (#1687)Alex Lam S.L
Conditions including strict mode would make `delete` return `true` or `false`, and are too complex to be evaluated by the compressor. Suppress assignment folding into said operator. fixes #1685
2017-03-26fallthrough should not execute case expression (#1683)Alex Lam S.L
- de-duplicate trailing cases only, avoid all potential side-effects - enable switch statement fuzzing fixes #1680
2017-03-26optimize conditional when condition symbol matches consequent (#1684)kzc
2017-03-26suppress switch branch de-duplication upon side effects (#1682)Alex Lam S.L
fixes #1679
2017-03-26fix side-effects detection on switch statements (#1678)Alex Lam S.L
extension of #1675
2017-03-26Improve fuzzer. :) (#1665)Peter van der Zee
@qfox Put value constants in a global constant 74c0fb9 @qfox And the other string based values as well a5033c5 @qfox Be more strict about parameters, allow max to be optional 9c7ce70 @qfox Support a `V` (capital) flag to only log out at intervals 2d822c7 @qfox Fewer magic variables a6a9a7c @qfox Fix decrement such that a function is created when n=1 7e4b017 @qfox Add more values 64e596e @qfox Make `b` appear more often d33191a @qfox Add functions that contain (only..) functions 29a86e3 @qfox Allow the block statement to contain multiple statements 7570484 @qfox Make the interval count a constant d587ad8 @qfox Enable mangling, disable post-processing … 4dc8d35 @qfox Add more simple value that may trigger syntactic errors 8496d58 @qfox Add `else` to some `if` statements a4aed65 @qfox Move iife to expr generator, fix missing recursion arg e453159 @qfox Improve output on error where it wasnt printing the last code properly 4565a1a @qfox Add switch statement to generator ceafa76 @qfox Add var statement, support optional comma for expr generator b83921b @qfox Expression generator should use a simple value instead of `0` as recu… … 9d1a5c7 @qfox const -> var to keep things es5... 0143099 @qfox Add more simple values that may trigger edge cases 5e124f1 @qfox Add central name generator, take special care for global functions aeb7682 @qfox Add some `return` and function declaration cases to statement generator 6c9c3cc @qfox Exclude switches from generator for now 91124b2 Put value constants in a global constant And the other string based values as well Be more strict about parameters, allow max to be optional Support a `V` (capital) flag to only log out at intervals Fewer magic variables Fix decrement such that a function is created when n=1 Add more values Make `b` appear more often Add functions that contain (only..) functions Allow the block statement to contain multiple statements Make the interval count a constant Enable mangling, disable post-processing Mangling is kind of the whole point... Similarly, to beautify the minified code afterwards may supress bugs so it's probably best not to beautify the code prematurely. And there's no point anyways since you won't see it most of the time and only care about the main input anyways. Add more simple value that may trigger syntactic errors Add `else` to some `if` statements Move iife to expr generator, fix missing recursion arg Improve output on error where it wasnt printing the last code properly Add switch statement to generator Add var statement, support optional comma for expr generator Expression generator should use a simple value instead of `0` as recursion default const -> var to keep things es5... Add more simple values that may trigger edge cases Add central name generator, take special care for global functions Add some `return` and function declaration cases to statement generator Exclude switches from generator for now Enable switch generation because #1667 was merged Add typeof generator Add some elision tests Add a new edge case that returns an object explicitly Add all binary ops to try and cover more paths Forgot four binops and added `Math` to var name pool Harden the incremental pre/postfix tests Improve switch generator, allow `default` to appear at any clause index Add try/catch/finally generation Prevent function statements being generated Add edge case with decremental op and a group Disable switch generation until #1679 and #1680 are solved Only allow `default` clause as last clause for now Tentatively enable `throw`, `break` and `continue` statements when in valid contexts
2017-03-26improve switch optimisations (#1677)Alex Lam S.L
- correctly determine reachability of (default) branches - gracefully handle multiple default branches - optimise branches with duplicate bodies fixes #376 fixes #441 fixes #1674
2017-03-25fix `has_side_effects()` (#1675)Alex Lam S.L
`AST_Try` is an `AST_Block`, so besides try block we also need to inspect catch and finally blocks for possible side effects. Also extend this functionality to handle `AST_If` and `AST_LabeledStatement` while we are at it. fixes #1673
2017-03-25fix `reduce_vars` on `AST_Switch` (#1671)Alex Lam S.L
Take conditional nature of switch branches into account. fixes #1670
2017-03-25fix typeof side-effects (#1669)Alex Lam S.L
`has_side_effects()` does not take `typeof`'s magical power of not tripping over undeclared variable into account. fixes #1668
2017-03-25fix `dead_code` on `AST_Switch` (#1667)Alex Lam S.L
Need to call `extract_declarations_from_unreachable_code()`. fixes #1663
2017-03-25v2.8.16Alex Lam S.L
2017-03-25fix invalid `AST_For.init` (#1657)Alex Lam S.L
Turns out the only place in `Compressor` which can generate invalid `AST_For.init` is within `drop_unused()`, so focus the fix-up efforts. supercedes #1652 fixes #1656
2017-03-25introduce ufuzz.js (#1655)Alex Lam S.L
closes #1647
2017-03-24Update ISSUE_TEMPLATE.mdAlex Lam S.L
2017-03-24fix cascade of `evaluate` optimisation (#1654)Alex Lam S.L
Operator has changed, so break out from rest of the rules. fixes #1649
2017-03-24fix corner case in `AST_For.init` (#1652)Alex Lam S.L
Enforce `null` as value for empty initialisation blocks. fixes #1648
2017-03-24fix assignment extraction from conditional (#1651)Alex Lam S.L
fixes #1645 fixes #1646
2017-03-24fix assignment substitution in sequences (#1643)Alex Lam S.L
take side effects of binary boolean operations into account fixes #1639
2017-03-24improve error marker placement (#1644)Alex Lam S.L
For AST_UnaryPrefix, points to the operator rather than end of expression.