Index: src/codegen-ia32.cc |
=================================================================== |
--- src/codegen-ia32.cc (revision 1298) |
+++ src/codegen-ia32.cc (working copy) |
@@ -455,16 +455,17 @@ |
Label* slow) { |
ASSERT(slot->type() == Slot::CONTEXT); |
int index = slot->index(); |
- __ mov(tmp, Operand(esi)); |
+ Register context = esi; |
for (Scope* s = scope(); s != slot->var()->scope(); s = s->outer_scope()) { |
if (s->num_heap_slots() > 0) { |
if (s->calls_eval()) { |
// Check that extension is NULL. |
- __ cmp(ContextOperand(tmp, Context::EXTENSION_INDEX), Immediate(0)); |
+ __ cmp(ContextOperand(context, Context::EXTENSION_INDEX), Immediate(0)); |
__ j(not_equal, slow, not_taken); |
} |
- __ mov(tmp, ContextOperand(tmp, Context::CLOSURE_INDEX)); |
+ __ mov(tmp, ContextOperand(context, Context::CLOSURE_INDEX)); |
__ mov(tmp, FieldOperand(tmp, JSFunction::kContextOffset)); |
+ context = tmp; |
} |
} |
// Check that last extension is NULL. |
@@ -2412,17 +2413,18 @@ |
Label* slow) { |
// Check that no extension objects have been created by calls to |
// eval from the current scope to the global scope. |
- __ mov(tmp, Operand(esi)); |
+ Register context = esi; |
for (Scope* s = scope(); s != NULL; s = s->outer_scope()) { |
if (s->num_heap_slots() > 0) { |
if (s->calls_eval()) { |
// Check that extension is NULL. |
- __ cmp(ContextOperand(tmp, Context::EXTENSION_INDEX), Immediate(0)); |
+ __ cmp(ContextOperand(context, Context::EXTENSION_INDEX), Immediate(0)); |
__ j(not_equal, slow, not_taken); |
} |
// Load next context in chain. |
- __ mov(tmp, ContextOperand(tmp, Context::CLOSURE_INDEX)); |
+ __ mov(tmp, ContextOperand(context, Context::CLOSURE_INDEX)); |
__ mov(tmp, FieldOperand(tmp, JSFunction::kContextOffset)); |
+ context = tmp; |
} |
// If no outer scope calls eval, we do not need to check more |
// context extensions. |