aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-10-02 16:36:42 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-10-02 16:36:42 -0700
commitec58cc4c637b6fef6f4580b92c753e745c301bbe (patch)
tree508f5a36fb54201e99cd1b444dcce2df902a519c
parent16f79a38c4839647314c7f007ea11187954d84c9 (diff)
parent4b8ff3fb5dcbc1ef61b17f1d7a7ca4bdb3f0b811 (diff)
Merge pull request #1693 from sunfishcode/incoming
Optimize alignment rounding.
-rwxr-xr-xemscripten.py2
-rw-r--r--src/preamble.js2
-rw-r--r--src/runtime.js3
3 files changed, 3 insertions, 4 deletions
diff --git a/emscripten.py b/emscripten.py
index 2b62c93a..2e90fa48 100755
--- a/emscripten.py
+++ b/emscripten.py
@@ -588,7 +588,7 @@ function stackAlloc(size) {
var ret = 0;
ret = STACKTOP;
STACKTOP = (STACKTOP + size)|0;
-''' + ('STACKTOP = ((STACKTOP + 3)>>2)<<2;' if settings['TARGET_X86'] else 'STACKTOP = ((STACKTOP + 7)>>3)<<3;') + '''
+''' + ('STACKTOP = (STACKTOP + 3)&-4;' if settings['TARGET_X86'] else 'STACKTOP = (STACKTOP + 7)&-8;') + '''
return ret|0;
}
function stackSave() {
diff --git a/src/preamble.js b/src/preamble.js
index 183fd0c8..75519094 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -644,7 +644,7 @@ Module['stringToUTF32'] = stringToUTF32;
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
- return ((x+4095)>>12)<<12;
+ return (x+4095)&-4096;
}
var HEAP;
diff --git a/src/runtime.js b/src/runtime.js
index a281045b..dd395826 100644
--- a/src/runtime.js
+++ b/src/runtime.js
@@ -112,8 +112,7 @@ var Runtime = {
if (isNumber(target) && isNumber(quantum)) {
return Math.ceil(target/quantum)*quantum;
} else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
- var logg = log2(quantum);
- return '((((' +target + ')+' + (quantum-1) + ')>>' + logg + ')<<' + logg + ')';
+ return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')';
}
return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
},