aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-07-18 16:25:24 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-07-18 16:26:26 -0700
commit2ffa3a82fadc40552a01312857c9b5dbfe2a3ddb (patch)
treefa80d82750f4f453dffd83370a6e5222abcbba4e
parent698b0c53ebe4b06e3a7b848811cde9272c7c26d1 (diff)
add coercions on return proxying in outliner
-rw-r--r--tools/js-optimizer.js4
-rw-r--r--tools/test-js-optimizer-asm-outline1-output.js2
2 files changed, 3 insertions, 3 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 5c80abb6..550bd685 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -3210,13 +3210,13 @@ function outline(ast) {
if (codeInfo.hasReturnInt) {
reps.push(makeIf(
makeComparison(makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlStackPos), ASM_INT), '==', ['num', CONTROL_RETURN_INT]),
- [['stat', ['return', makeStackAccess(ASM_INT, asmData.controlDataStackPos)]]]
+ [['stat', ['return', makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlDataStackPos), ASM_INT)]]]
));
}
if (codeInfo.hasReturnDouble) {
reps.push(makeIf(
makeComparison(makeAsmCoercion(makeStackAccess(ASM_INT, asmData.controlStackPos), ASM_INT), '==', ['num', CONTROL_RETURN_DOUBLE]),
- [['stat', ['return', makeStackAccess(ASM_DOUBLE, asmData.controlDataStackPos)]]]
+ [['stat', ['return', makeAsmCoercion(makeStackAccess(ASM_DOUBLE, asmData.controlDataStackPos), ASM_DOUBLE)]]]
));
}
if (codeInfo.hasBreak) {
diff --git a/tools/test-js-optimizer-asm-outline1-output.js b/tools/test-js-optimizer-asm-outline1-output.js
index 78bfcb88..c6a972d0 100644
--- a/tools/test-js-optimizer-asm-outline1-output.js
+++ b/tools/test-js-optimizer-asm-outline1-output.js
@@ -38,7 +38,7 @@ function lin3() {
lin3$0(sp);
if ((HEAP32[sp + 0 >> 2] | 0) == 6) {
STACKTOP = sp;
- return HEAP32[sp + 8 >> 2];
+ return HEAP32[sp + 8 >> 2] | 0;
}
}
STACKTOP = sp;