diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-12-29 11:03:08 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-12-29 11:03:08 -0800 |
commit | d4bbcb6a28d26b3b2a17b02108088d189abb54bd (patch) | |
tree | 0877aa9f4cce6a2b711e2126c8ddfe1e734465e0 /tools/js-optimizer.js | |
parent | fb8bb521a9dd60778430e7a6fffa0fefac434728 (diff) |
fix bug with optimizeShifts asserting shifted constants can always be simplified
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 435a64de..9a1a408c 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -522,9 +522,11 @@ function optimizeShifts(ast) { if (type == 'binary' && node[1] == '>>' && node[2][0] == 'num' && node[3][0] == 'num') { var subNode = node[2]; var shifts = node[3][1]; - assert(subNode[1] % Math.pow(2, shifts) == 0, subNode); - subNode[1] /= Math.pow(2, shifts); // bake the shift in - return subNode; + var result = subNode[1] / Math.pow(2, shifts); + if (result % 1 == 0) { + subNode[1] = result; + return subNode; + } } // Optimize the case of ($a*80)>>2 if (type == 'binary' && node[1] in SIMPLE_SHIFTS && |