diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-07-19 10:19:57 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-07-19 10:19:57 -0700 |
commit | e24923c6b98e8de99582e4e0c532134ef19c2282 (patch) | |
tree | b2086744056ac0b7dfba42d865aa443a072ee788 /tools/js-optimizer.js | |
parent | 19a9e533756ba4c8fe4228ecf01eb1d0f1f8ccbd (diff) |
remove variables owned by outlined code from the parent
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 91e2928e..c1ba41ec 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -3127,7 +3127,7 @@ function outline(ast) { var allCodeInfo = analyzeCode(func, asmData, func); var owned = { sp: 1 }; // sp is always owned, each has its own keys(setUnion(codeInfo.reads, codeInfo.writes)).forEach(function(v) { - if (allCodeInfo.reads[v] === codeInfo.reads[v] && allCodeInfo.writes[v] === codeInfo.writes[v]) { + if (allCodeInfo.reads[v] === codeInfo.reads[v] && allCodeInfo.writes[v] === codeInfo.writes[v] && !(v in asmData.params)) { owned[v] = 1; } }); @@ -3286,6 +3286,9 @@ function outline(ast) { newAsmData.vars[v] = getAsmType(v, asmData); } denormalizeAsm(newFunc, newAsmData); + for (var v in owned) { + if (v != 'sp') delete asmData.vars[v]; // parent does not need these anymore + } // replace in stats stats.splice.apply(stats, [start, end-start+1].concat(reps)); return [newFunc]; |