aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
AgeCommit message (Collapse)Author
2012-10-04removed some unused variablesMihai Bazon
2012-10-03more cleanup (dropped AST_SwitchBlock)Mihai Bazon
2012-10-03AST cleanup (dropped AST_StatementBase)Mihai Bazon
2012-10-03added option for side-effect-free statements, fix testMihai Bazon
2012-10-03fix endless loop in testsMihai Bazon
2012-10-03fix for `a = !b && !c && !d && !e → a=!(b||c||d||e)`Mihai Bazon
2012-10-03disable `hoist_vars` by default and change `comparations` to `comparisons`Mihai Bazon
2012-10-02support definesMihai Bazon
2012-10-02"use strict";Mihai Bazon
2012-10-02more constant folding (for names defined with `const`)Mihai Bazon
2012-10-02drop more unused namesMihai Bazon
2012-10-02a shy attempt to obey `width` in the beautifier; added `bracketize` option ↵Mihai Bazon
to always print brackets around if/do/while/for statements; export more options via the CLI
2012-09-26removed the "squeeze" method (it's now effectively "transform")Mihai Bazon
2012-09-26some speedup and more savings from unused vars that have side effects in ↵Mihai Bazon
initialization
2012-09-26compressor successfully moved to TreeTransformerMihai Bazon
2012-09-26checkpoint (refactoring, WIP)Mihai Bazon
2012-09-25more cleanupsMihai Bazon
2012-09-25moving code around (refactoring, WIP)Mihai Bazon
2012-09-25started some refactoring (WIP) -- moving squeezer to TreeTransformerMihai Bazon
2012-09-25minorMihai Bazon
2012-09-25it's not safe to assume that property access is side-effect-freeMihai Bazon
(getters/setters + various browser bugs will trigger side effects; also, an exception is thrown when the expression is undefined)
2012-09-25some boolean cleanupMihai Bazon
2012-09-23properly drop mutually-referring declarations that are not otherwiseMihai Bazon
referenced and have no side effects
2012-09-22tree transformer api (WIP)Mihai Bazon
2012-09-21log filename in parse errors / compressor warningsMihai Bazon
2012-09-21more on detecting side effectsMihai Bazon
2012-09-19drop unused variablesMihai Bazon
2012-09-18support for directivesMihai Bazon
2012-09-18added AST_NaN (output as 0/0)Mihai Bazon
2012-09-17only do the typeof x == "undefined" optimization if x is a symbol reference ↵Mihai Bazon
and it's declared in scope, or x is not a symbol reference.
2012-09-17moved `typeof foo == "undefined"` ==> `foo === undefined` under `--unsafe`Mihai Bazon
because https://github.com/mishoo/UglifyJS2/commit/43fd45154bac89b89330e13bd1f167e2a927a23c#commitcomment-1864505
2012-09-17fix .undeclared (it's now a function)Mihai Bazon
2012-09-17minorMihai Bazon
2012-09-17possible optimization for AST_UndefinedMihai Bazon
if undefined is defined, ;-), we replace AST_Undefined nodes to a reference to the "undefined" variable; in turn the mangler will compress it to a single letter; this helps at least on jQuery.
2012-09-17empty block to empty statement: {} ==> ;Mihai Bazon
2012-09-17more smallish optimizationsMihai Bazon
2012-09-17try negating AST_BinaryMihai Bazon
2012-09-16some cleanupMihai Bazon
2012-09-16more sequencesizing (WIP)Mihai Bazon
2012-09-16drop unused functionMihai Bazon
2012-09-16rewrite handle_if_returnMihai Bazon
optimizations of if/return/continue seem to be even better now
2012-09-15other small optimization:Mihai Bazon
if (foo) continue; ...body... ==> if (!foo) { ...body ... } Only when the parent block is the target loop of the `continue` statement.
2012-09-15join_vars:Mihai Bazon
var XXX; for (var YYY; ...) ==> for (var XXX,YYY; ...)
2012-09-14compress typeof x == "undefined" to x === undefined, which further getsMihai Bazon
shortened to x === void 0 (or x === [][0] in unsafe mode)
2012-09-14minorMihai Bazon
when unsafe, compress undefined as [][0]
2012-09-14adding an imaginary "return undefined" can sometimes helpMihai Bazon
function f() { if (foo) return x(); if (!bar) return y(); } ==> function f() { return foo ? x() : bar ? void 0 : y(); }
2012-09-14more optimizations that v1 does and some cleanupsMihai Bazon
- a = a + x ==> a+=x - joining consecutive var statements (hoisting is not always desirable) - x == false ==> x == 0, x != true ==> x != 1 - x, x ==> x; x = exp(), x ==> x = exp() - discarding useless break-s
2012-09-13few more optimizations:Mihai Bazon
- do multiple passes in tighten_body if it was changed - transform if (foo) return x; return y; ==> return foo?x:y - don't optimize !0 as true (use best_of after evaluation of constant expr) With hoist_vars off we now beat UglifyJS v1 on jQuery-1.8.1
2012-09-12minorMihai Bazon
2012-09-12more AST_If optimizationsMihai Bazon