Skip to content

Commit ddfd578

Browse files
committed
Optimizer: Don't clone AST unless needed
1 parent 2d6c2a6 commit ddfd578

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/optimizer/index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,15 @@ module.exports = {
5353
const transformer = optimizationTransforms[transformName];
5454

5555
let newResult = transform.transform(ast, transformer);
56-
if (newResult.toString().length <= result.toString().length) {
57-
result = newResult;
56+
57+
if (newResult.toString() !== result.toString()) {
58+
if (newResult.toString().length <= result.toString().length) {
59+
result = newResult;
60+
} else {
61+
// Result has changed but is not shorter: restore ast to its previous state.
62+
ast = clone(result.getAST());
63+
}
5864
}
59-
ast = clone(result.getAST());
6065
});
6166

6267
} while (result.toString() !== prevResult);

0 commit comments

Comments
 (0)