aboutsummaryrefslogtreecommitdiff
path: root/src/jsifier.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-12-06 11:45:02 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:24 -0800
commit32635a86097de499d7ee84bd9fb6967bd96e6169 (patch)
tree4409b2efd282c5eb106c798cfa13c537bf0bffaf /src/jsifier.js
parent06fa6cfb4833dfe8044ef373f4bd47c98a8ee103 (diff)
properly legalize invoke output
Diffstat (limited to 'src/jsifier.js')
-rw-r--r--src/jsifier.js6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index a8161862..01bb989d 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -1099,8 +1099,10 @@ function JSify(data, functionsOnly, givenFunctions) {
if (item.assignTo) {
ret = 'var ' + item.assignTo + ' = ' + ret;
if (isIllegalType(item.type)) {
- assert(item.type == 'i64', 'Can only handle i64 invoke among illegal invokes');
- ret += 'var ' + item.assignTo + '$0 = ' + item.assignTo + '[0], ' + item.assignTo + '$1 = ' + item.assignTo + '[1];';
+ 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)) + ';'
+ }
}
item.assignTo = null;
}