aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jsifier.js2
-rw-r--r--src/parseTools.js15
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