drop more unused names

This commit is contained in:
Mihai Bazon
2012-10-02 12:02:33 +03:00
parent 9e5dd81f1e
commit ff696cd7bc

View File

@@ -863,20 +863,35 @@ merge(Compressor.prototype, {
compressor.warn("Dropping unused variable {name} [{file}:{line},{col}]", w);
return false;
});
var side_effects = [];
// place uninitialized names at the start
def = mergeSort(def, function(a, b){
if (!a.value && b.value) return -1;
if (!b.value && a.value) return 1;
return 0;
});
while (def.length > 0 && def[def.length - 1]._unused_side_effects) {
side_effects.unshift(def.pop().value);
// for unused names whose initialization has
// side effects, we can cascade the init. code
// into the next one, or next statement.
var side_effects = [];
for (var i = 0; i < def.length;) {
var x = def[i];
if (x._unused_side_effects) {
side_effects.push(x.value);
def.splice(i, 1);
} else {
if (side_effects.length > 0) {
side_effects.push(x.value);
x.value = AST_Seq.from_array(side_effects);
side_effects = [];
}
++i;
}
}
if (side_effects.length > 0) {
side_effects = make_node(AST_BlockStatement, node, {
body: side_effects.map(function(ss){
return make_node(AST_SimpleStatement, ss, { body: ss });
})
body: [ make_node(AST_SimpleStatement, node, {
body: AST_Seq.from_array(side_effects)
}) ]
});
} else {
side_effects = null;