aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Expand)Author
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-25discard all \uFEFF characters (https://github.com/mishoo/UglifyJS/issues/462)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-free...(getters/setters + various browser bugs will trigger side effects; also, an exception is thrown when the expression is undefined) Mihai Bazon
2012-09-25some boolean cleanupMihai Bazon
2012-09-24Support input source map...This is useful while compressing generated code; for example compressing JS compiled by CoffeeScript (assuming you got a source map): uglifyjs2 --in-source-map generated.js.map \ --source-map uglified.js.map \ -o uglified.js The above assumes you have a "generated.js.map" file which is the source mapping between your CoffeeScript and the generated.js (compiled output from CoffeeScript). The name of the input file is not present in this example; it will be fetched from the source map (but it can be passed manually too). The output will be in "uglified.js" and the output map "uglified.js.map" will actually map to the original CoffeeScript code, rather than to generated.js. Mihai Bazon
2012-09-23properly drop mutually-referring declarations that are not otherwise...referenced and have no side effects Mihai Bazon
2012-09-22tree transformer api (WIP)Mihai Bazon
2012-09-21log filename in parse errors / compressor warningsMihai Bazon
2012-09-21better support for multiple input files:...- use a single AST_Toplevel node for all files - keep original source filename in the tokens Mihai Bazon
2012-09-21more on detecting side effectsMihai Bazon
2012-09-19drop unused variablesMihai Bazon
2012-09-18fixed label scope/manglingMihai Bazon
2012-09-18minorMihai 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 a...Mihai Bazon
2012-09-17moved `typeof foo == "undefined"` ==> `foo === undefined` under `--unsafe`...because https://github.com/mishoo/UglifyJS2/commit/43fd45154bac89b89330e13bd1f167e2a927a23c#commitcomment-1864505 Mihai Bazon
2012-09-17fix .undeclared (it's now a function)Mihai Bazon
2012-09-17minorMihai Bazon
2012-09-17possible optimization for AST_Undefined...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. Mihai Bazon
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_return...optimizations of if/return/continue seem to be even better now Mihai Bazon
2012-09-15other small optimization:...if (foo) continue; ...body... ==> if (!foo) { ...body ... } Only when the parent block is the target loop of the `continue` statement. Mihai Bazon
2012-09-15figure out label targetsMihai Bazon
2012-09-15join_vars:...var XXX; for (var YYY; ...) ==> for (var XXX,YYY; ...) Mihai Bazon
2012-09-14compress typeof x == "undefined" to x === undefined, which further gets...shortened to x === void 0 (or x === [][0] in unsafe mode) Mihai Bazon
2012-09-14minor...when unsafe, compress undefined as [][0] Mihai Bazon
2012-09-14adding an imaginary "return undefined" can sometimes help...function f() { if (foo) return x(); if (!bar) return y(); } ==> function f() { return foo ? x() : bar ? void 0 : y(); } Mihai Bazon
2012-09-14more optimizations that v1 does and some cleanups...- 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 Mihai Bazon
2012-09-13few more optimizations:...- 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 Mihai Bazon
2012-09-12minorMihai Bazon
2012-09-12more AST_If optimizationsMihai Bazon
2012-09-12side effect fixes and small optimization for gzip...prefer to always use > and >= operators (idea from Closure) Mihai Bazon
2012-09-12fixed run-tests and an issue about reversing the condition in AST_IfMihai Bazon
2012-09-11minorMihai Bazon
2012-09-11fixed some mess with symbols/scope...- all symbols now have a `thedef` property which is a SymbolDef object, instead of the `uniq` that we had before (pointing to the first occurrence of the name as declaration). - for undeclared symbols we still create a SymbolDef object in the toplevel scope but mark it "undeclared" - we can now call figure_out_scope after squeezing, which is useful in order not to mangle names that were dropped by the squeezer Mihai Bazon
2012-09-11checkpoint...- discard statements with no side effects (unsafe? could be) - safer hoist_vars (needs some revamping of scope/mangling) Mihai Bazon
2012-09-10hoist_vars is pretty bad, it seems. cancelled it for now.Mihai Bazon
2012-09-10adaptive base54 digits depending on char frequency (WIP)Mihai Bazon
2012-09-10more progress on the compressor (WIP)Mihai Bazon