diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-09-29 15:39:35 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-10-02 17:31:36 -0700 |
commit | f97e5ca780105ec07aa60124aff1ceec56d9ca4a (patch) | |
tree | 35beac05e0737bb63ecf6780c1750c5956d16655 | |
parent | 97891d0db52844f5e64a7048674aca9258545db8 (diff) |
add explicit variable for invoke chunks
-rw-r--r-- | src/jsifier.js | 11 |
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; |