aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-09-29 15:39:35 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-10-02 17:31:36 -0700
commitf97e5ca780105ec07aa60124aff1ceec56d9ca4a (patch)
tree35beac05e0737bb63ecf6780c1750c5956d16655
parent97891d0db52844f5e64a7048674aca9258545db8 (diff)
add explicit variable for invoke chunks
-rw-r--r--src/jsifier.js11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 3a599578..223a6551 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -1228,11 +1228,16 @@ function JSify(data, functionsOnly, givenFunctions) {
ret = makeVarArgsCleanup(ret);
if (item.assignTo) {
- ret = 'var ' + item.assignTo + '=' + ret;
- if (USE_TYPED_ARRAYS == 2 && isIllegalType(item.type)) {
+ var illegal = USE_TYPED_ARRAYS == 2 && isIllegalType(item.type);
+ var assignTo = illegal ? item.assignTo + '$r' : item.assignTo;
+ ret = makeVarDef(assignTo) + '=' + ret;
+ if (ASM_JS) addVariable(assignTo, item.type);
+ if (illegal) {
var bits = getBits(item.type);
for (var i = 0; i < bits/32; i++) {
- ret += 'var ' + item.assignTo + '$' + i + '=' + (i == 0 ? item.assignTo : 'tempRet' + (i-1)) + ';'
+ var v = item.assignTo + '$' + i;
+ ret += makeVarDef(v) + '=' + (i == 0 ? assignTo : 'tempRet' + (i-1)) + ';'
+ if (ASM_JS) addVariable(v, 'i32');
}
}
item.assignTo = null;