diff options
| author | Alon Zakai <alonzakai@gmail.com> | 2013-08-09 15:55:06 -0700 | 
|---|---|---|
| committer | Alon Zakai <alonzakai@gmail.com> | 2013-08-09 15:55:06 -0700 | 
| commit | 459b3a24ec90f474bd491c860247d6193cbef329 (patch) | |
| tree | c5e62c0e9cd5ef1fc730422608be383aae21ec83 /tools/js-optimizer.js | |
| parent | 78cc888615b08ee97d30db7c5cf07ce4f92be398 (diff) | |
track loop depth in outliner
Diffstat (limited to 'tools/js-optimizer.js')
| -rw-r--r-- | tools/js-optimizer.js | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 79741d87..3e7926b7 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -3220,7 +3220,7 @@ function outline(ast) {      printErr('trying to reduce the size of ' + func[1] + ' which is ' + size + ' (>= ' + extraInfo.sizeToOutline + '), aim for ' + sizeToOutline);    } -  var level = 0; +  var level = 0, loops = 0;    var outliningParents = {}; // function name => parent it was outlined from    function doOutline(func, asmData, stats, start, end) { @@ -3436,7 +3436,7 @@ function outline(ast) {        }      }      outliningParents[newIdent] = func[1]; -    printErr('performed outline ' + [func[1], newIdent, 'code sizes (pre/post):', originalCodeSize, measureSize(code), 'overhead (w/r):', setSize(setSub(codeInfo.writes, owned)), setSize(setSub(codeInfo.reads, owned)), ' owned: ', setSize(owned), ' left: ', setSize(asmData.vars), setSize(asmData.params)]); +    printErr('performed outline ' + [func[1], newIdent, 'code sizes (pre/post):', originalCodeSize, measureSize(code), 'overhead (w/r):', setSize(setSub(codeInfo.writes, owned)), setSize(setSub(codeInfo.reads, owned)), ' owned: ', setSize(owned), ' left: ', setSize(asmData.vars), setSize(asmData.params), ' loopsDepth: ', loops]);      calculateThreshold(func);      return [newFunc];    } @@ -3506,6 +3506,12 @@ function outline(ast) {                if (subRet && subRet.length > 0) ret.push.apply(ret, subRet);              }              return null; // do not recurse into children, outlineStatements will do so if necessary +          } else if (type == 'while') { +            loops++; +          } +        }, function(node, type) { +          if (type == 'while') { +            loops--;            }          });          if (ret.length > pre) {  | 
