aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-12-29 11:03:08 -0800
committerAlon Zakai <alonzakai@gmail.com>2011-12-29 11:03:08 -0800
commitd4bbcb6a28d26b3b2a17b02108088d189abb54bd (patch)
tree0877aa9f4cce6a2b711e2126c8ddfe1e734465e0 /tools
parentfb8bb521a9dd60778430e7a6fffa0fefac434728 (diff)
fix bug with optimizeShifts asserting shifted constants can always be simplified
Diffstat (limited to 'tools')
-rw-r--r--tools/js-optimizer.js8
-rw-r--r--tools/test-js-optimizer-t2-output.js1
-rw-r--r--tools/test-js-optimizer-t2.js1
3 files changed, 7 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 &&
diff --git a/tools/test-js-optimizer-t2-output.js b/tools/test-js-optimizer-t2-output.js
index bc47c9bb..30e706f9 100644
--- a/tools/test-js-optimizer-t2-output.js
+++ b/tools/test-js-optimizer-t2-output.js
@@ -73,5 +73,6 @@ function shifty($id) {
pause(7);
q(go());
q(go() >> 8 << 8);
+ q(go() + 2 >> 2);
}
// EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"]
diff --git a/tools/test-js-optimizer-t2.js b/tools/test-js-optimizer-t2.js
index f9b5e10c..55417ec0 100644
--- a/tools/test-js-optimizer-t2.js
+++ b/tools/test-js-optimizer-t2.js
@@ -81,5 +81,6 @@ function shifty($id) {
pause(7);
q(go() >> 1 << 1);
q(go() >> 8 << 8);
+ q((go() + 2) >> 2); // the 2 >> 2 can't be simplified
}
// EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"]