diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 15:51:06 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 15:51:06 -0800 |
commit | 8129e120edabbb0fcae7447b8dff08ad0fc3d6f0 (patch) | |
tree | 29b6901da0dfe908362329bb54f34f5f6c31c8da | |
parent | 1f4842db0437edb73896e0d7a03558c5a2c692ba (diff) |
emit asm coercions on returns
-rwxr-xr-x | emscripten.py | 4 | ||||
-rw-r--r-- | src/jsifier.js | 2 | ||||
-rw-r--r-- | src/parseTools.js | 1 |
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 { |