smarter const replacement taking name length into account

closes #1459
This commit is contained in:
kzc
2017-02-18 19:12:57 +08:00
committed by alexlamsl
parent f0ff6189be
commit 6ffbecb72b
2 changed files with 173 additions and 0 deletions

View File

@@ -2784,6 +2784,18 @@ merge(Compressor.prototype, {
}
}
}
if (compressor.option("evaluate") && !isLHS(self, compressor.parent())) {
var d = self.definition();
if (d && d.constant && d.init && d.init.is_constant(compressor)) {
var original_as_string = self.print_to_string();
var const_node = make_node_from_constant(compressor, d.init.constant_value(compressor), self);
var const_node_as_string = const_node.print_to_string();
var per_const_overhead = d.global || !d.references.length ? 0
: (d.name.length + 2 + const_node_as_string.length) / d.references.length;
if (const_node_as_string.length <= original_as_string.length + per_const_overhead)
return const_node;
}
}
return self;
});