diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-01-23 13:26:23 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-01-23 13:26:23 -0800 |
commit | 64a88f368257ba8bce99f38b47ab5c167b937a84 (patch) | |
tree | f90be968311011eefc5d7a28d02d25d5396ecb65 | |
parent | a3d02dd27af251b408941e9a9be60a110fc9daf8 (diff) |
detect nativized variable types properly in asm coercions
-rw-r--r-- | src/jsifier.js | 7 | ||||
-rw-r--r-- | src/parseTools.js | 7 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index e9a051a4..a8d3c329 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -618,10 +618,11 @@ function JSify(data, functionsOnly, givenFunctions) { } for (i = 0; i < chunks.length; i++) { func.JS += ' var ' + chunks[i].map(function(v) { - if (!isIllegalType(v.type) || v.ident.indexOf('$', 1) > 0) { // not illegal, or a broken up illegal - return v.ident + ' = ' + asmInitializer(v.type); //, func.variables[v.ident].impl); + var type = getImplementationType(v); + if (!isIllegalType(type) || v.ident.indexOf('$', 1) > 0) { // not illegal, or a broken up illegal + return v.ident + ' = ' + asmInitializer(type); //, func.variables[v.ident].impl); } else { - return range(Math.ceil(getBits(v.type)/32)).map(function(i) { + return range(Math.ceil(getBits(type)/32)).map(function(i) { return v.ident + '$' + i + '= 0'; }).join(','); } diff --git a/src/parseTools.js b/src/parseTools.js index 206557b5..0cd76bc4 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -2336,3 +2336,10 @@ function stripCorrections(param) { return param; } +function getImplementationType(varInfo) { + if (varInfo.impl == 'nativized') { + return removePointing(varInfo.type); + } + return varInfo.type; +} + |