diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-12-28 14:41:46 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-12-28 14:41:46 -0800 |
commit | ab12dc1380d89298f289215087ee94a65e37acca (patch) | |
tree | 42e7d5000fd36056cef88f0d91aa8ef9a67fbc63 | |
parent | 6b83482d32375fb6852cd34150890e57460d8645 (diff) |
fix optimizeShifts bug
-rw-r--r-- | tools/js-optimizer.js | 4 | ||||
-rw-r--r-- | tools/test-js-optimizer-t2-output.js | 2 | ||||
-rw-r--r-- | tools/test-js-optimizer-t2.js | 2 |
3 files changed, 8 insertions, 0 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 150b1c37..6cd1fbcc 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -527,6 +527,10 @@ function optimizeShifts(ast) { var total = 0; if (node[3][0] == 'num' && node[2][3][0] == 'num') { total = ['num', sign1*node[3][1] + sign2*node[2][3][1]]; + if (total[1] < 0) { + combinedShift = '<<'; + total[1] *= -1; + } if (total[1] == 0) { // XXX this may be wrong, if we removed a |0 that assumed we had this >> which |0's anyhow! return node[2][2]; diff --git a/tools/test-js-optimizer-t2-output.js b/tools/test-js-optimizer-t2-output.js index eb3f077a..d16dd6c9 100644 --- a/tools/test-js-optimizer-t2-output.js +++ b/tools/test-js-optimizer-t2-output.js @@ -56,5 +56,7 @@ function shifty($id) { q(HEAP32[$parameters_addr + ($res_spec242 - 1) + 1406]); q(HEAP32[(HEAP32[($cp >> 2) + 27] >> 2) + $tileno * 1397 + 105]); } + pause(6); + q($idx << 3); } // EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"] diff --git a/tools/test-js-optimizer-t2.js b/tools/test-js-optimizer-t2.js index e1abc092..5005c91e 100644 --- a/tools/test-js-optimizer-t2.js +++ b/tools/test-js-optimizer-t2.js @@ -64,5 +64,7 @@ function shifty($id) { q(HEAP32[($parameters_addr + 5624 + (($res_spec242 - 1 | 0) << 2) | 0) >> 2]); q(HEAP32[(HEAP32[($cp + 108 | 0) >> 2] + $tileno * 5588 + 420 | 0) >> 2]); } + pause(6); + q($idx << 1 << 2); } // EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"] |