| Index: src/mips/full-codegen-mips.cc
|
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
|
| index 0407f01c084e1b742173c7d6d397d1c9d73b4b58..3ce2ab5f19c5dacf0d30e580318db6809d8dac92 100644
|
| --- a/src/mips/full-codegen-mips.cc
|
| +++ b/src/mips/full-codegen-mips.cc
|
| @@ -631,11 +631,13 @@ void FullCodeGenerator::StackValueContext::Plug(
|
| Label done;
|
| __ bind(materialize_true);
|
| __ LoadRoot(at, Heap::kTrueValueRootIndex);
|
| + // Push the value as the following branch can clobber at in long branch mode.
|
| + __ push(at);
|
| __ Branch(&done);
|
| __ bind(materialize_false);
|
| __ LoadRoot(at, Heap::kFalseValueRootIndex);
|
| - __ bind(&done);
|
| __ push(at);
|
| + __ bind(&done);
|
| }
|
|
|
|
|
| @@ -2317,7 +2319,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
| patch_site.EmitJumpIfSmi(scratch1, &smi_case);
|
|
|
| __ bind(&stub_call);
|
| - BinaryOpStub stub(op, mode);
|
| + BinaryOpICStub stub(op, mode);
|
| CallIC(stub.GetCode(isolate()), RelocInfo::CODE_TARGET,
|
| expr->BinaryOperationFeedbackId());
|
| patch_site.EmitPatchInfo();
|
| @@ -2326,7 +2328,6 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
| __ bind(&smi_case);
|
| // Smi case. This code works the same way as the smi-smi case in the type
|
| // recording binary operation stub, see
|
| - // BinaryOpStub::GenerateSmiSmiOperation for comments.
|
| switch (op) {
|
| case Token::SAR:
|
| __ Branch(&stub_call);
|
| @@ -2400,7 +2401,7 @@ void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr,
|
| OverwriteMode mode) {
|
| __ mov(a0, result_register());
|
| __ pop(a1);
|
| - BinaryOpStub stub(op, mode);
|
| + BinaryOpICStub stub(op, mode);
|
| JumpPatchSite patch_site(masm_); // unbound, signals no inlined smi code.
|
| CallIC(stub.GetCode(isolate()), RelocInfo::CODE_TARGET,
|
| expr->BinaryOperationFeedbackId());
|
| @@ -3734,6 +3735,7 @@ void FullCodeGenerator::EmitStringAdd(CallRuntime* expr) {
|
| VisitForAccumulatorValue(args->at(1));
|
|
|
| __ pop(a1);
|
| + __ mov(a0, result_register()); // NewStringAddStub requires args in a0, a1.
|
| NewStringAddStub stub(STRING_ADD_CHECK_BOTH, NOT_TENURED);
|
| __ CallStub(&stub);
|
| } else {
|
| @@ -4471,7 +4473,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
| // Record position before stub call.
|
| SetSourcePosition(expr->position());
|
|
|
| - BinaryOpStub stub(Token::ADD, NO_OVERWRITE);
|
| + BinaryOpICStub stub(Token::ADD, NO_OVERWRITE);
|
| CallIC(stub.GetCode(isolate()),
|
| RelocInfo::CODE_TARGET,
|
| expr->CountBinOpFeedbackId());
|
|
|