aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-12-05 11:24:52 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:23 -0800
commit56141d4055bb81d8446baeb41f6458eab35ef8db (patch)
tree2b8b67d99b7a74f390f573b5b3b5e8d5dafc621f
parent508ffd8a41be3416767ad00a6b10947379c4f70e (diff)
chunk asm var declarations, and handle i64s
-rw-r--r--src/jsifier.js19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index 695e3a30..bc502867 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -553,9 +553,22 @@ function JSify(data, functionsOnly, givenFunctions) {
// spell out local variables
var vars = values(func.variables).filter(function(v) { return v.origin != 'funcparam' });
if (vars.length > 0) {
- func.JS += ' var ' + vars.map(function(v) {
- return v.ident + ' = ' + asmInitializer(v.type); //, func.variables[v.ident].impl);
- }).join(', ') + ';\n';
+ var chunkSize = 8;
+ var chunks = [];
+ var i = 0;
+ while (i < vars.length) {
+ chunks.push(vars.slice(i, i+chunkSize));
+ i += chunkSize;
+ }
+ for (i = 0; i < chunks.length; i++) {
+ func.JS += ' var ' + chunks[i].map(function(v) {
+ if (v.type != 'i64') {
+ return v.ident + ' = ' + asmInitializer(v.type); //, func.variables[v.ident].impl);
+ } else {
+ return v.ident + '$0 = 0, ' + v.ident + '$1 = 1';
+ }
+ }).join(', ') + ';\n';
+ }
}
}