aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-12-07 15:51:06 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 15:51:06 -0800
commit8129e120edabbb0fcae7447b8dff08ad0fc3d6f0 (patch)
tree29b6901da0dfe908362329bb54f34f5f6c31c8da
parent1f4842db0437edb73896e0d7a03558c5a2c692ba (diff)
emit asm coercions on returns
-rwxr-xr-xemscripten.py4
-rw-r--r--src/jsifier.js2
-rw-r--r--src/parseTools.js1
3 files changed, 4 insertions, 3 deletions
diff --git a/emscripten.py b/emscripten.py
index ceb81e62..3222e12f 100755
--- a/emscripten.py
+++ b/emscripten.py
@@ -354,10 +354,10 @@ var asmPre = (function(env, buffer) {
var ret = STACKTOP;
STACKTOP = (STACKTOP + size)|0;
STACKTOP = ((STACKTOP + 3)>>2)<<2;
- return ret;
+ return ret|0;
}
function stackSave() {
- return STACKTOP;
+ return STACKTOP|0;
}
function stackRestore(top) {
top = top|0;
diff --git a/src/jsifier.js b/src/jsifier.js
index 7e66d426..b51fc1dd 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -1076,7 +1076,7 @@ function JSify(data, functionsOnly, givenFunctions) {
}
ret += 'return';
if (item.value) {
- ret += ' ' + finalizeLLVMParameter(item.value);
+ ret += ' ' + asmCoercion(finalizeLLVMParameter(item.value), item.type);
}
return ret + ';';
});
diff --git a/src/parseTools.js b/src/parseTools.js
index 91242861..13839d17 100644
--- a/src/parseTools.js
+++ b/src/parseTools.js
@@ -995,6 +995,7 @@ function asmInitializer(type, impl) {
}
function asmCoercion(value, type) {
+ if (!ASM_JS) return value;
if (isIntImplemented(type)) {
return '((' + value + ')|0)';
} else {