Index: src/mips/codegen-mips.cc |
diff --git a/src/mips/codegen-mips.cc b/src/mips/codegen-mips.cc |
index 2a144d990c8fe9591677ffcf5cb0fc16f07e638c..878ba3489a5d8be89221e605362a728ec581429c 100644 |
--- a/src/mips/codegen-mips.cc |
+++ b/src/mips/codegen-mips.cc |
@@ -767,8 +767,7 @@ void ElementsTransitionGenerator::GenerateSmiToDouble( |
__ Addu(scratch1, elements, |
Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
__ Addu(scratch3, array, Operand(FixedDoubleArray::kHeaderSize)); |
- __ sll(at, length, 2); |
- __ Addu(array_end, scratch3, at); |
+ __ Lsa(array_end, scratch3, length, 2); |
// Repurpose registers no longer in use. |
Register hole_lower = elements; |
@@ -899,8 +898,7 @@ void ElementsTransitionGenerator::GenerateDoubleToObject( |
FixedDoubleArray::kHeaderSize - kHeapObjectTag |
+ Register::kExponentOffset)); |
__ Addu(dst_elements, array, Operand(FixedArray::kHeaderSize)); |
- __ sll(dst_end, dst_end, 1); |
- __ Addu(dst_end, dst_elements, dst_end); |
+ __ Lsa(dst_end, dst_elements, dst_end, 1); |
// Allocating heap numbers in the loop below can fail and cause a jump to |
// gc_required. We can't leave a partly initialized FixedArray behind, |
@@ -1082,8 +1080,7 @@ void StringCharLoadGenerator::Generate(MacroAssembler* masm, |
__ And(at, result, Operand(kStringEncodingMask)); |
__ Branch(&one_byte, ne, at, Operand(zero_reg)); |
// Two-byte string. |
- __ sll(at, index, 1); |
- __ Addu(at, string, at); |
+ __ Lsa(at, string, index, 1); |
__ lhu(result, MemOperand(at)); |
__ jmp(&done); |
__ bind(&one_byte); |
@@ -1156,8 +1153,7 @@ void MathExpGenerator::EmitMathExp(MacroAssembler* masm, |
// Must not call ExpConstant() after overwriting temp3! |
__ li(temp3, Operand(ExternalReference::math_exp_log_table())); |
- __ sll(at, temp2, 3); |
- __ Addu(temp3, temp3, Operand(at)); |
+ __ Lsa(temp3, temp3, temp2, 3); |
__ lw(temp2, MemOperand(temp3, Register::kMantissaOffset)); |
__ lw(temp3, MemOperand(temp3, Register::kExponentOffset)); |
// The first word is loaded is the lower number register. |