diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-07-22 15:13:19 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-07-22 15:13:19 -0700 |
commit | 3fcbc4487553a9d2bcc3234eac5ce5edfc70e27d (patch) | |
tree | a8848f79c995b1b8005710b92c6540b29192fba1 /tools/js-optimizer.js | |
parent | 8d99bd8596141e42aebc52745f95437176f3d243 (diff) |
clean up outlinings limit code
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index ddad28ed..04352838 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -3018,6 +3018,7 @@ function outline(ast) { asmData.controlStackPos = stackSize + asmData.extraStackSize - 16; asmData.controlDataStackPos = stackSize + asmData.extraStackSize - 8; asmData.splitCounter = 0; + asmData.maxOutlinings = Math.round(1.5*measureSize(func)/sizeToOutline); } // Analyze uses - reads and writes - of variables in part of the AST of a function @@ -3120,15 +3121,14 @@ function outline(ast) { var sizeToOutline = extraInfo.sizeToOutline; var level = 0; - var outliningsLeft = {}; // function name => counter of how many more outlinings to allow var outliningParents = {}; // function name => parent it was outlined from function doOutline(func, asmData, stats, start, end) { - if (!outliningsLeft[func[1]]) return []; if (!extraInfo.allowCostlyOutlines) var originalStats = copy(stats); var code = stats.slice(start, end+1); var funcSize = measureSize(func); var newIdent = func[1] + '$' + (asmData.splitCounter++); + if (asmData.splitCounter === asmData.maxOutlinings) return []; // analyze variables, and find 'owned' variables - that only appear in the outlined code, and do not need any spill support var codeInfo = analyzeCode(func, asmData, code); var allCodeInfo = analyzeCode(func, asmData, func); @@ -3329,7 +3329,6 @@ function outline(ast) { getStatements(func).push(['stat', ['return', makeAsmCoercion(['num', 0], allCodeInfo.hasReturnInt ? ASM_INT : ASM_DOUBLE)]]); } } - outliningsLeft[func[1]]--; outliningParents[newIdent] = func[1]; return [newFunc]; } @@ -3435,7 +3434,6 @@ function outline(ast) { var size = measureSize(func); if (size >= sizeToOutline) { printErr('trying to reduce the size of ' + func[1] + ' which is ' + size + ' (>= ' + sizeToOutline + ')'); - outliningsLeft[func[1]] = Math.round(1.5*size/sizeToOutline); aggressiveVariableElimination(func, asmData); analyzeFunction(func, asmData); var stats = getStatements(func); |