diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-06 12:17:58 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 14:23:24 -0800 |
commit | 813866b1951389b2c80c2c4e4bf2f5546c3be1dc (patch) | |
tree | 16b5a068211cb8d0ed19c4df390423aa5290d12b /src | |
parent | d1d33362df70a31e7248e2fda0eb4bad0fe58390 (diff) |
fix non-legalized structural returns and invokes
Diffstat (limited to 'src')
-rw-r--r-- | src/jsifier.js | 2 | ||||
-rw-r--r-- | src/parseTools.js | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index 00c32277..f9eb2881 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1098,7 +1098,7 @@ function JSify(data, functionsOnly, givenFunctions) { + 'return null } })();'; if (item.assignTo) { ret = 'var ' + item.assignTo + ' = ' + ret; - if (isIllegalType(item.type)) { + if (USE_TYPED_ARRAYS == 2 && isIllegalType(item.type)) { 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)) + ';' diff --git a/src/parseTools.js b/src/parseTools.js index 19913949..337225e5 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1572,10 +1572,17 @@ function makeLLVMStruct(values) { } function makeStructuralReturn(values) { - var i = 0; - return 'return (' + values.slice(1).map(function(value) { - return 'tempRet' + (i++) + ' = ' + value; - }).concat([values[0]]).join(',') + ')'; + if (USE_TYPED_ARRAYS == 2) { + var i = 0; + return 'return (' + values.slice(1).map(function(value) { + return 'tempRet' + (i++) + ' = ' + value; + }).concat([values[0]]).join(',') + ')'; + } else { + var i = 0; + return 'return { ' + values.map(function(value) { + return 'f' + (i++) + ': ' + value; + }).join(', ') + ' }'; + } } // From parseLLVMSegment |