Age | Commit message (Collapse) | Author | |
---|---|---|---|
2012-09-23 | properly drop mutually-referring declarations that are not otherwise | Mihai Bazon | |
referenced and have no side effects | |||
2012-09-22 | tree transformer api (WIP) | Mihai Bazon | |
2012-09-21 | log filename in parse errors / compressor warnings | Mihai Bazon | |
2012-09-21 | better support for multiple input files: | Mihai Bazon | |
- use a single AST_Toplevel node for all files - keep original source filename in the tokens | |||
2012-09-21 | more on detecting side effects | Mihai Bazon | |
2012-09-19 | drop unused variables | Mihai Bazon | |
2012-09-18 | fixed label scope/mangling | Mihai Bazon | |
2012-09-18 | minor | Mihai Bazon | |
2012-09-18 | support for directives | Mihai Bazon | |
2012-09-18 | added AST_NaN (output as 0/0) | Mihai Bazon | |
2012-09-17 | only 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-17 | moved `typeof foo == "undefined"` ==> `foo === undefined` under `--unsafe` | Mihai Bazon | |
because https://github.com/mishoo/UglifyJS2/commit/43fd45154bac89b89330e13bd1f167e2a927a23c#commitcomment-1864505 | |||
2012-09-17 | fix .undeclared (it's now a function) | Mihai Bazon | |
2012-09-17 | minor | Mihai Bazon | |
2012-09-17 | possible optimization for AST_Undefined | Mihai 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-17 | empty block to empty statement: {} ==> ; | Mihai Bazon | |
2012-09-17 | more smallish optimizations | Mihai Bazon | |
2012-09-17 | try negating AST_Binary | Mihai Bazon | |
2012-09-16 | some cleanup | Mihai Bazon | |
2012-09-16 | more sequencesizing (WIP) | Mihai Bazon | |
2012-09-16 | drop unused function | Mihai Bazon | |
2012-09-16 | rewrite handle_if_return | Mihai Bazon | |
optimizations of if/return/continue seem to be even better now | |||
2012-09-15 | other 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-15 | figure out label targets | Mihai Bazon | |
2012-09-15 | join_vars: | Mihai Bazon | |
var XXX; for (var YYY; ...) ==> for (var XXX,YYY; ...) | |||
2012-09-14 | compress typeof x == "undefined" to x === undefined, which further gets | Mihai Bazon | |
shortened to x === void 0 (or x === [][0] in unsafe mode) | |||
2012-09-14 | minor | Mihai Bazon | |
when unsafe, compress undefined as [][0] | |||
2012-09-14 | adding an imaginary "return undefined" can sometimes help | Mihai Bazon | |
function f() { if (foo) return x(); if (!bar) return y(); } ==> function f() { return foo ? x() : bar ? void 0 : y(); } | |||
2012-09-14 | more optimizations that v1 does and some cleanups | Mihai 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-13 | few 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-12 | minor | Mihai Bazon | |
2012-09-12 | more AST_If optimizations | Mihai Bazon | |
2012-09-12 | side effect fixes and small optimization for gzip | Mihai Bazon | |
prefer to always use > and >= operators (idea from Closure) | |||
2012-09-12 | fixed run-tests and an issue about reversing the condition in AST_If | Mihai Bazon | |
2012-09-11 | minor | Mihai Bazon | |
2012-09-11 | fixed some mess with symbols/scope | Mihai Bazon | |
- 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 | |||
2012-09-11 | checkpoint | Mihai Bazon | |
- discard statements with no side effects (unsafe? could be) - safer hoist_vars (needs some revamping of scope/mangling) | |||
2012-09-10 | hoist_vars is pretty bad, it seems. cancelled it for now. | Mihai Bazon | |
2012-09-10 | adaptive base54 digits depending on char frequency (WIP) | Mihai Bazon | |
2012-09-10 | more progress on the compressor (WIP) | Mihai Bazon | |
2012-09-08 | minor | Mihai Bazon | |
2012-09-08 | fix output for division followed by regexp | Mihai Bazon | |
( v1 report: https://github.com/mishoo/UglifyJS/pull/458 ) | |||
2012-09-07 | checkpoint | Mihai Bazon | |
2012-09-07 | fix bug (forgot arg name) | Mihai Bazon | |
2012-09-07 | always keep declarations found in unreachable code | Mihai Bazon | |
a few more tests and some cleanups. | |||
2012-09-07 | fixed tests (need to drop the toplevel block in "expected" if it's a single ↵ | Mihai Bazon | |
statement) | |||
2012-09-05 | don't duplicate argument names | Mihai Bazon | |
2012-09-05 | fix for variable names like `toString` | Mihai Bazon | |
2012-09-05 | support for hoisting declarations | Mihai Bazon | |
and finally it seems we beat v1 in terms of compression | |||
2012-09-05 | cleaned up usage of AST_BlockStatement | Mihai Bazon | |
The following nodes were instances of AST_BlockStatement: AST_Scope, AST_SwitchBlock, AST_SwitchBranch. Also, AST_Try, AST_Catch, AST_Finally were having a body instanceof AST_BlockStatement. Overloading the meaning of AST_BlockStatement this way turned out to be a mess; we now have an AST_Block class that is the base class for things having a block of statements (might or might not be bracketed). The `this.body` of AST_Scope, AST_Try, AST_Catch, AST_Finally is now an array of statements (as they inherit from AST_Block). Avoiding calling superclass's _walk function in walkers (turns out we walked a node multiple times). |