diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-05 11:24:52 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 14:23:23 -0800 |
commit | 56141d4055bb81d8446baeb41f6458eab35ef8db (patch) | |
tree | 2b8b67d99b7a74f390f573b5b3b5e8d5dafc621f | |
parent | 508ffd8a41be3416767ad00a6b10947379c4f70e (diff) |
chunk asm var declarations, and handle i64s
-rw-r--r-- | src/jsifier.js | 19 |
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'; + } } } |