aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-07-20 22:43:01 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-07-20 22:43:01 -0700
commit66171f5e8831142fb77e5b47181e1ea8b6c3b9fa (patch)
treeaadae41da8d9883b75d3b5bb8b92358753bae1e9 /tools/js-optimizer.js
parentf099024dcd6a05e2cb74d21d6cd871ed10a81983 (diff)
simplify heuristics for restarting in outliner
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js10
1 files changed, 4 insertions, 6 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 75ffe33e..87851b1b 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -3313,8 +3313,8 @@ function outline(ast) {
function outlineStatements(func, asmData, stats, maxSize) {
level++;
printErr('outlineStatements: ' + [func[1], level, measureSize(func)]);
- var originalSize = measureSize(stats);
- if (originalSize < sizeToOutline) { level--; return }
+ var lastSize = measureSize(stats);
+ if (lastSize < sizeToOutline) { level--; return }
var ret = [];
var sizeSeen = 0;
var end = stats.length-1;
@@ -3328,10 +3328,8 @@ function outline(ast) {
// (but only if the total costs are not extravagant)
var currSize = measureSize(stats);
var outlinedSize = measureSize(ret);
- if (canRestart && currSize > 1.2*sizeToOutline && sum(ret.map(function(newFunc) {
- return costs[newFunc[1]] || 0;
- })) < 0.5*originalSize) {
- printErr('restarting ' + func[1] + ' since ' + [currSize, outlinedSize, originalSize] + ' in level ' + level);
+ if (canRestart && currSize > 1.2*sizeToOutline && lastSize - currSize >= 0.75*sizeToOutline) {
+ printErr('restarting ' + func[1] + ' since ' + [currSize, outlinedSize, lastSize] + ' in level ' + level);
lastSize = currSize;
i = stats.length;
end = stats.length-1;