aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js11
1 files changed, 4 insertions, 7 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 59492dbd..a9704fe4 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -1231,7 +1231,7 @@ function registerize(ast) {
var freeRegs = [];
var nextReg = 1;
var fullNames = {};
- var loopRegs = { 1: [] }; // for each loop nesting level, the list of bound variables
+ var loopRegs = {}; // for each loop nesting level, the list of bound variables
var loops = 0; // 0 is toplevel, 1 is first loop, etc
var saved = 0;
var activeOptimizables = {};
@@ -1262,12 +1262,9 @@ function registerize(ast) {
freeRegs.push(reg);
} else {
// when the relevant loop is exited, we will free the register
- if (optimizables[name]) {
- if (!loopRegs[loops]) loopRegs[loops] = [];
- loopRegs[loops].push(reg);
- } else {
- loopRegs[1].push(reg);
- }
+ var releventLoop = optimizables[name] ? (optimizableLoops[name] || 1) : 1;
+ if (!loopRegs[releventLoop]) loopRegs[releventLoop] = [];
+ loopRegs[releventLoop].push(reg);
}
}
return true;