| Index: src/mips/full-codegen-mips.cc
|
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
|
| index b1b3d8410e826142ededf19646eb6484d4046121..022d0fd2e027cf5d27cd07485f980c80a5741875 100644
|
| --- a/src/mips/full-codegen-mips.cc
|
| +++ b/src/mips/full-codegen-mips.cc
|
| @@ -718,10 +718,14 @@ void FullCodeGenerator::EmitDeclaration(Variable* variable,
|
| // context.
|
| ASSERT_EQ(0, scope()->ContextChainLength(variable->scope()));
|
| if (FLAG_debug_code) {
|
| - // Check that we're not inside a 'with'.
|
| - __ lw(a1, ContextOperand(cp, Context::FCONTEXT_INDEX));
|
| - __ Check(eq, "Unexpected declaration in current context.",
|
| - a1, Operand(cp));
|
| + // Check that we're not inside a with or catch context.
|
| + __ lw(a1, FieldMemOperand(cp, HeapObject::kMapOffset));
|
| + __ LoadRoot(t0, Heap::kWithContextMapRootIndex);
|
| + __ Check(ne, "Declaration in with context.",
|
| + a1, Operand(t0));
|
| + __ LoadRoot(t0, Heap::kCatchContextMapRootIndex);
|
| + __ Check(ne, "Declaration in catch context.",
|
| + a1, Operand(t0));
|
| }
|
| if (mode == Variable::CONST) {
|
| __ LoadRoot(at, Heap::kTheHoleValueRootIndex);
|
| @@ -1879,17 +1883,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
| __ Branch(&skip, ne, a1, Operand(t0));
|
| __ sw(result_register(), MemOperand(fp, SlotOffset(slot)));
|
| break;
|
| - case Slot::CONTEXT: {
|
| - __ lw(a1, ContextOperand(cp, Context::FCONTEXT_INDEX));
|
| - __ lw(a2, ContextOperand(a1, slot->index()));
|
| - __ LoadRoot(t0, Heap::kTheHoleValueRootIndex);
|
| - __ Branch(&skip, ne, a2, Operand(t0));
|
| - __ sw(result_register(), ContextOperand(a1, slot->index()));
|
| - int offset = Context::SlotOffset(slot->index());
|
| - __ mov(a3, result_register()); // Preserve the stored value in v0.
|
| - __ RecordWrite(a1, Operand(offset), a3, a2);
|
| - break;
|
| - }
|
| + case Slot::CONTEXT:
|
| case Slot::LOOKUP:
|
| __ push(result_register());
|
| __ li(a0, Operand(slot->var()->name()));
|
|
|