diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-07-17 10:59:01 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-07-17 10:59:01 -0700 |
commit | d4a89352c2139923390e1751a9b7d756eed2e8ad (patch) | |
tree | 230794fb7da90dd11a166bd2aef48efca40fce64 /tools/js-optimizer.js | |
parent | 295b89e59b926e4e5e00386cb981eef3036c9e76 (diff) |
do not attempt to outline normalized asm stuff like empty vars
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 95212fbc..edaaf28f 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -1673,6 +1673,18 @@ function denormalizeAsm(func, data) { //printErr('denormalized \n\n' + astToSrc(func) + '\n\n'); } +function getFirstIndexInNormalized(func, data) { + // In a normalized asm function, return the index of the first element that is not not defs or annotation + var stats = func[3]; + var i = stats.length-1; + while (i >= 0) { + var stat = stats[i]; + if (stat[0] == 'var') break; + i--; + } + return i+1; +} + // Very simple 'registerization', coalescing of variables into a smaller number, // as part of minification. Globals-level minification began in a previous pass, // we receive extraInfo which tells us how to rename globals. (Only in asm.js.) @@ -3226,7 +3238,8 @@ function outline(ast) { var sizeSeen = 0; var end = stats.length-1; var i = stats.length; - while (--i >= 0) { + var minIndex = stats == getStatements(func) ? getFirstIndexInNormalized(func, asmData) : 0; + while (--i >= minIndex) { var stat = stats[i]; var size = measureSize(stat); //printErr(level + ' size ' + [i, size]); |