aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-07-17 10:59:01 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-07-17 10:59:01 -0700
commitd4a89352c2139923390e1751a9b7d756eed2e8ad (patch)
tree230794fb7da90dd11a166bd2aef48efca40fce64 /tools/js-optimizer.js
parent295b89e59b926e4e5e00386cb981eef3036c9e76 (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.js15
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]);