diff options
-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 |