enhance passes (#2229)

- remove hardcoded upper limit
- continue based on node count reduction
- emit verbose statistics

fixes #2226
This commit is contained in:
Alex Lam S.L
2017-07-13 02:18:59 +08:00
committed by GitHub
parent c615a1e80a
commit 458e3e15f0
3 changed files with 40 additions and 26 deletions

View File

@@ -148,10 +148,20 @@ merge(Compressor.prototype, {
node.process_expression(true);
}
var passes = +this.options.passes || 1;
for (var pass = 0; pass < passes && pass < 3; ++pass) {
var last_count = 1 / 0;
for (var pass = 0; pass < passes; pass++) {
if (pass > 0 || this.option("reduce_vars"))
node.reset_opt_flags(this, true);
node = node.transform(this);
if (passes > 1) {
var count = 0;
node.walk(new TreeWalker(function() {
count++;
}));
this.info("pass " + pass + ": last_count: " + last_count + ", count: " + count);
if (count >= last_count) break;
last_count = count;
}
}
if (this.option("expression")) {
node.process_expression(false);