aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
AgeCommit message (Expand)Author
2012-09-07fixed tests (need to drop the toplevel block in "expected" if it's a single s...Mihai Bazon
2012-09-05don't duplicate argument namesMihai Bazon
2012-09-05support for hoisting declarations...and finally it seems we beat v1 in terms of compression Mihai Bazon
2012-09-05cleaned up usage of AST_BlockStatement...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). Mihai Bazon
2012-09-04checkpointMihai Bazon
2012-09-04more fiddling with boolean expressions, etc....optimize away while(false), and transform while(true) ==> for(;;). UNSAFE: some expressions are optimized away when we're in boolean context and can determine that the value will always be true or false. For example: x() || true ==> always `true` in boolean context x() && false ==> always `false` in boolean context It's not technically correct to drop these expressions since we drop the function call too (that might have side effects); on the other hand, I can't see any legitimate use for such expressions and they might simply indicate a bug (we do warn about it). Mihai Bazon
2012-09-03boolean and if/exit optimizationsMihai Bazon
2012-09-03minorMihai Bazon
2012-09-03more optimizations for ifs/conditionals...(XXX: should add tests before anything else) Mihai Bazon
2012-09-03resolve constant expressionsMihai Bazon
2012-09-03an AST_If is too a StatementWithBodyMihai Bazon
2012-09-03a LabeledStatement should be in fact a StatementWithBody...This fixes output for: if (foo) { moo: if (bar) { break moo; } } else { baz(); } (the labeled statement must be outputted inside brackets) Mihai Bazon
2012-08-27update (c) yearsMihai Bazon
2012-08-27fix compressing `a,b; return c;` into `return a,b,c;`Mihai Bazon
2012-08-22added licenseMihai Bazon
2012-08-22wrote more of the compressor and added some testsMihai Bazon
2012-08-21hint that brackets may be required in AST_BlockStatementMihai Bazon
2012-08-21cleaned up some mess and started the actual compressorMihai Bazon