- `++a` is the one that is foldable - transform `a++` into `++a` for better optimisation
This commit is contained in:
@@ -2833,7 +2833,7 @@ merge(Compressor.prototype, {
|
|||||||
if (self.car instanceof AST_Assign
|
if (self.car instanceof AST_Assign
|
||||||
&& !self.car.left.has_side_effects(compressor)) {
|
&& !self.car.left.has_side_effects(compressor)) {
|
||||||
left = self.car.left;
|
left = self.car.left;
|
||||||
} else if (self.car instanceof AST_UnaryPostfix
|
} else if (self.car instanceof AST_Unary
|
||||||
&& (self.car.operator == "++" || self.car.operator == "--")) {
|
&& (self.car.operator == "++" || self.car.operator == "--")) {
|
||||||
left = self.car.expression;
|
left = self.car.expression;
|
||||||
}
|
}
|
||||||
@@ -2842,11 +2842,15 @@ merge(Compressor.prototype, {
|
|||||||
var cdr = self.cdr;
|
var cdr = self.cdr;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (cdr.equivalent_to(left)) {
|
if (cdr.equivalent_to(left)) {
|
||||||
|
var car = self.car instanceof AST_UnaryPostfix ? make_node(AST_UnaryPrefix, self.car, {
|
||||||
|
operator: self.car.operator,
|
||||||
|
expression: left
|
||||||
|
}) : self.car;
|
||||||
if (parent) {
|
if (parent) {
|
||||||
parent[field] = self.car;
|
parent[field] = car;
|
||||||
return self.cdr;
|
return self.cdr;
|
||||||
}
|
}
|
||||||
return self.car;
|
return car;
|
||||||
}
|
}
|
||||||
if (cdr instanceof AST_Binary && !(cdr instanceof AST_Assign)) {
|
if (cdr instanceof AST_Binary && !(cdr instanceof AST_Assign)) {
|
||||||
field = cdr.left.is_constant() ? "right" : "left";
|
field = cdr.left.is_constant() ? "right" : "left";
|
||||||
|
|||||||
@@ -21,6 +21,16 @@ collapse: {
|
|||||||
var a;
|
var a;
|
||||||
a = b(a / 2);
|
a = b(a / 2);
|
||||||
if (a < 0) {
|
if (a < 0) {
|
||||||
|
a++;
|
||||||
|
++c;
|
||||||
|
return c / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function f4(c) {
|
||||||
|
var a;
|
||||||
|
a = b(a / 2);
|
||||||
|
if (a < 0) {
|
||||||
|
a++;
|
||||||
c++;
|
c++;
|
||||||
return c / 2;
|
return c / 2;
|
||||||
}
|
}
|
||||||
@@ -35,7 +45,11 @@ collapse: {
|
|||||||
}
|
}
|
||||||
function f3(c) {
|
function f3(c) {
|
||||||
var a;
|
var a;
|
||||||
if ((a = b(a / 2)) < 0) return c++ / 2;
|
if ((a = b(a / 2)) < 0) return a++, ++c / 2;
|
||||||
|
}
|
||||||
|
function f4(c) {
|
||||||
|
var a;
|
||||||
|
if ((a = b(a / 2)) < 0) return a++, ++c / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user