aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-02-21 18:42:06 -0800
committerAlon Zakai <alonzakai@gmail.com>2014-02-21 18:46:30 -0800
commitb8c670c705279fae14ca7742531950b4f84c849d (patch)
tree11868af881e3da31897a524881870a87db2fa312 /tools/js-optimizer.js
parentbf7b435983d2e891297e76ce3dd80ef635b7e2c1 (diff)
do not outline the entire stack prelude, including STACKTOP = ..
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js11
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;
+ }
+ }
}
}
}