| Index: src/mips/full-codegen-mips.cc | 
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc | 
| index 31eaad46826c5ea986c012bfd425da651f064f23..639f57fd63da76d08dde2e871654326cda0c12b8 100644 | 
| --- a/src/mips/full-codegen-mips.cc | 
| +++ b/src/mips/full-codegen-mips.cc | 
| @@ -2369,9 +2369,12 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr, | 
| break; | 
| case Token::MUL: { | 
| __ SmiUntag(scratch1, right); | 
| -      __ Mul(scratch2, v0, left, scratch1); | 
| -      __ sra(scratch1, v0, 31); | 
| +      __ Mult(left, scratch1); | 
| +      __ mflo(scratch1); | 
| +      __ mfhi(scratch2); | 
| +      __ sra(scratch1, scratch1, 31); | 
| __ Branch(&stub_call, ne, scratch1, Operand(scratch2)); | 
| +      __ mflo(v0); | 
| __ Branch(&done, ne, v0, Operand(zero_reg)); | 
| __ Addu(scratch2, right, left); | 
| __ Branch(&stub_call, lt, scratch2, Operand(zero_reg)); | 
| @@ -3940,10 +3943,12 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { | 
| // smi but the other values are, so the result is a smi. | 
| __ lw(scratch1, FieldMemOperand(separator, SeqOneByteString::kLengthOffset)); | 
| __ Subu(string_length, string_length, Operand(scratch1)); | 
| -  __ Mul(scratch3, scratch2, array_length, scratch1); | 
| +  __ Mult(array_length, scratch1); | 
| // Check for smi overflow. No overflow if higher 33 bits of 64-bit result are | 
| // zero. | 
| -  __ Branch(&bailout, ne, scratch3, Operand(zero_reg)); | 
| +  __ mfhi(scratch2); | 
| +  __ Branch(&bailout, ne, scratch2, Operand(zero_reg)); | 
| +  __ mflo(scratch2); | 
| __ And(scratch3, scratch2, Operand(0x80000000)); | 
| __ Branch(&bailout, ne, scratch3, Operand(zero_reg)); | 
| __ AdduAndCheckForOverflow(string_length, string_length, scratch2, scratch3); | 
|  |