diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-02-21 18:42:06 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-02-21 18:46:30 -0800 |
commit | b8c670c705279fae14ca7742531950b4f84c849d (patch) | |
tree | 11868af881e3da31897a524881870a87db2fa312 /tools/js-optimizer.js | |
parent | bf7b435983d2e891297e76ce3dd80ef635b7e2c1 (diff) |
do not outline the entire stack prelude, including STACKTOP = ..
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index fc195e03..21fce2c2 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -4775,7 +4775,16 @@ function outline(ast) { for (var i = minIndex; i < stats.length; i++) { var stat = stats[i]; if (stat[0] == 'stat') stat = stat[1]; - if (stat[0] == 'assign' && stat[2][0] == 'name' && stat[2][1] == 'sp') minIndex = i+1; // cannot outline |sp = | + if (stat[0] == 'assign' && stat[2][0] == 'name' && stat[2][1] == 'sp') { + // cannot outline |sp = | + minIndex = i+1; + // When followed by a STACKTOP bump, preserve that too (we may need to replace it later) + stat = stats[i+1]; + if (stat[0] == 'stat') stat = stat[1]; + if (stat && stat[0] == 'assign' && stat[2][0] == 'name' && stat[2][1] == 'STACKTOP') { + minIndex = i+2; + } + } } } } |