aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-01-18 17:55:07 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-01-18 17:55:07 -0800
commit991e5c6a3ee144c6ee6193208446f28ce9def60d (patch)
tree616b165dc5afc728a24a7be6dbadf0ff17508dc6 /src
parent409a9af718b22f4642b5132f47f2db34130cabbd (diff)
fix unrelooped code for asm
Diffstat (limited to 'src')
-rw-r--r--src/jsifier.js5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index f767b6ce..08b6d4f6 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -734,12 +734,13 @@ function JSify(data, functionsOnly, givenFunctions) {
if (func.setjmpTable) {
ret += 'try { ';
}
- ret += 'switch(label) {\n';
+ ret += 'switch(' + asmCoercion('label', 'i32') + ') {\n';
ret += block.labels.map(function(label) {
return indent + ' case ' + getLabelId(label.ident) + ': ' + (SHOW_LABELS ? '// ' + getOriginalLabelId(label.ident) : '') + '\n'
+ getLabelLines(label, indent + ' ');
}).join('\n');
- ret += '\n' + indent + ' default: assert(0, "bad label: " + label);\n' + indent + '}';
+ if (ASSERTIONS) ret += '\n' + indent + ' default: assert(0, "bad label: " + label);\n';
+ ret += indent + '}';
if (func.setjmpTable) {
ret += ' } catch(e) { if (!e.longjmp || !(e.id in mySetjmpIds)) throw(e); setjmpTable[setjmpLabels[e.id]](e.value) }';
}