improve symbol replacement heuristic (#2851)

This commit is contained in:
Alex Lam S.L
2018-01-29 17:41:15 +08:00
committed by GitHub
parent 6fa3fbeae8
commit 541e6011af
2 changed files with 33 additions and 1 deletions

View File

@@ -5237,7 +5237,7 @@ merge(Compressor.prototype, {
var name_length = d.name.length; var name_length = d.name.length;
var overhead = 0; var overhead = 0;
if (compressor.option("unused") && !compressor.exposed(d)) { if (compressor.option("unused") && !compressor.exposed(d)) {
overhead = (name_length + 2 + value_length) / d.references.length; overhead = (name_length + 2 + value_length) / (d.references.length - d.assignments);
} }
d.should_replace = value_length <= name_length + overhead ? fn : false; d.should_replace = value_length <= name_length + overhead ? fn : false;
} else { } else {

View File

@@ -5435,3 +5435,35 @@ lvalues_def_2: {
} }
expect_stdout: "2 NaN" expect_stdout: "2 NaN"
} }
chained_assignments: {
options = {
evaluate: true,
inline: true,
reduce_vars: true,
sequences: true,
side_effects: true,
toplevel: true,
unsafe: true,
unused: true,
}
input: {
function f() {
var a = [0x5e, 0xad, 0xbe, 0xef];
var b = 0;
b |= a[0];
b <<= 8;
b |= a[1];
b <<= 8;
b |= a[2];
b <<= 8;
b |= a[3];
return b;
}
console.log(f().toString(16));
}
expect: {
console.log("5eadbeef");
}
expect_stdout: "5eadbeef"
}