| Index: src/mips/full-codegen-mips.cc
|
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
|
| index 8ce586ea0f202ea610635bc6531595c6200e91ab..4a7e50420ce30f347323c7b6a949524f4dced4f1 100644
|
| --- a/src/mips/full-codegen-mips.cc
|
| +++ b/src/mips/full-codegen-mips.cc
|
| @@ -1159,10 +1159,9 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| __ lw(a2, FieldMemOperand(a2, DescriptorArray::kEnumCacheBridgeCacheOffset));
|
|
|
| // Set up the four remaining stack slots.
|
| - __ push(v0); // Map.
|
| __ li(a0, Operand(Smi::FromInt(0)));
|
| - // Push enumeration cache, enumeration cache length (as smi) and zero.
|
| - __ Push(a2, a1, a0);
|
| + // Push map, enumeration cache, enumeration cache length (as smi) and zero.
|
| + __ Push(v0, a2, a1, a0);
|
| __ jmp(&loop);
|
|
|
| __ bind(&no_descriptors);
|
| @@ -1227,8 +1226,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| // Convert the entry to a string or (smi) 0 if it isn't a property
|
| // any more. If the property has been removed while iterating, we
|
| // just skip it.
|
| - __ push(a1); // Enumerable.
|
| - __ push(a3); // Current entry.
|
| + __ Push(a1, a3); // Enumerable and current entry.
|
| __ InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION);
|
| __ mov(a3, result_register());
|
| __ Branch(loop_statement.continue_label(), eq, a3, Operand(zero_reg));
|
| @@ -2506,19 +2504,17 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
| // able to drill a hole to that function context, even from inside a
|
| // 'with' context. We thus bypass the normal static scope lookup for
|
| // var->IsContextSlot().
|
| - __ push(v0);
|
| __ li(a0, Operand(var->name()));
|
| - __ Push(cp, a0); // Context and name.
|
| + __ Push(v0, cp, a0); // Context and name.
|
| __ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
| }
|
|
|
| } else if (var->mode() == LET && op != Token::INIT_LET) {
|
| // Non-initializing assignment to let variable needs a write barrier.
|
| if (var->IsLookupSlot()) {
|
| - __ push(v0); // Value.
|
| __ li(a1, Operand(var->name()));
|
| __ li(a0, Operand(Smi::FromInt(language_mode())));
|
| - __ Push(cp, a1, a0); // Context, name, strict mode.
|
| + __ Push(v0, cp, a1, a0); // Value, context, name, strict mode.
|
| __ CallRuntime(Runtime::kStoreContextSlot, 4);
|
| } else {
|
| ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| @@ -2563,10 +2559,9 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
| }
|
| } else {
|
| ASSERT(var->IsLookupSlot());
|
| - __ push(v0); // Value.
|
| __ li(a1, Operand(var->name()));
|
| __ li(a0, Operand(Smi::FromInt(language_mode())));
|
| - __ Push(cp, a1, a0); // Context, name, strict mode.
|
| + __ Push(v0, cp, a1, a0); // Value, context, name, strict mode.
|
| __ CallRuntime(Runtime::kStoreContextSlot, 4);
|
| }
|
| }
|
|
|