enhance reduce_vars (#5248)
This commit is contained in:
@@ -492,7 +492,6 @@ Compressor.prototype.compress = function(node) {
|
||||
def.reassigned = 0;
|
||||
def.recursive_refs = 0;
|
||||
def.references = [];
|
||||
def.should_replace = undefined;
|
||||
def.single_use = undefined;
|
||||
}
|
||||
|
||||
@@ -11599,8 +11598,8 @@ Compressor.prototype.compress = function(node) {
|
||||
def.replaced++;
|
||||
return value;
|
||||
}
|
||||
var local = self.fixed !== def.fixed;
|
||||
if (fixed && (local || def.should_replace !== false)) {
|
||||
var state;
|
||||
if (fixed && (state = self.fixed || def.fixed).should_replace !== false) {
|
||||
var ev, init;
|
||||
if (fixed instanceof AST_This) {
|
||||
if (!is_funarg(def) && same_scope(def)) init = fixed;
|
||||
@@ -11613,20 +11612,22 @@ Compressor.prototype.compress = function(node) {
|
||||
init = make_node_from_constant(ev, fixed);
|
||||
}
|
||||
if (init) {
|
||||
if (!local && def.should_replace === undefined) {
|
||||
if (state.should_replace === undefined) {
|
||||
var value_length = init.optimize(compressor).print_to_string().length;
|
||||
if (!has_symbol_ref(fixed)) {
|
||||
value_length = Math.min(value_length, fixed.print_to_string().length);
|
||||
}
|
||||
var name_length = def.name.length;
|
||||
if (compressor.option("unused") && !compressor.exposed(def)) {
|
||||
var referenced = def.references.length - def.replaced;
|
||||
name_length += (name_length + 2 + value_length) / (referenced - def.assignments);
|
||||
var refs = def.references.length - def.replaced - def.assignments;
|
||||
refs = Math.min(refs, def.references.filter(function(ref) {
|
||||
return ref.fixed === state;
|
||||
}).length);
|
||||
name_length += (name_length + 2 + value_length) / Math.max(1, refs);
|
||||
}
|
||||
var delta = value_length - Math.floor(name_length);
|
||||
def.should_replace = delta < compressor.eval_threshold;
|
||||
state.should_replace = value_length - Math.floor(name_length) < compressor.eval_threshold;
|
||||
}
|
||||
if (local || def.should_replace) {
|
||||
if (state.should_replace) {
|
||||
var value;
|
||||
if (has_symbol_ref(fixed)) {
|
||||
value = init.optimize(compressor);
|
||||
|
||||
Reference in New Issue
Block a user