| Index: src/ic/mips/ic-mips.cc
|
| diff --git a/src/ic/mips/ic-mips.cc b/src/ic/mips/ic-mips.cc
|
| index a27d6b56f7ecd698eafea2edb04e479d08206214..8bfb70af29f700c08e2b0ac5e8a75697c2e4ee9b 100644
|
| --- a/src/ic/mips/ic-mips.cc
|
| +++ b/src/ic/mips/ic-mips.cc
|
| @@ -230,8 +230,7 @@ static void GenerateFastArrayLoad(MacroAssembler* masm, Register receiver,
|
| Operand(FixedArray::kHeaderSize - kHeapObjectTag));
|
| // The key is a smi.
|
| STATIC_ASSERT(kSmiTag == 0 && kSmiTagSize < kPointerSizeLog2);
|
| - __ sll(at, key, kPointerSizeLog2 - kSmiTagSize);
|
| - __ addu(at, at, scratch1);
|
| + __ Lsa(at, scratch1, key, kPointerSizeLog2 - kSmiTagSize);
|
| __ lw(scratch2, MemOperand(at));
|
|
|
| __ LoadRoot(at, Heap::kTheHoleValueRootIndex);
|
| @@ -491,8 +490,7 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| // there may be a callback on the element.
|
| Label holecheck_passed1;
|
| __ Addu(address, elements, FixedArray::kHeaderSize - kHeapObjectTag);
|
| - __ sll(at, key, kPointerSizeLog2 - kSmiTagSize);
|
| - __ addu(address, address, at);
|
| + __ Lsa(address, address, key, kPointerSizeLog2 - kSmiTagSize);
|
| __ lw(scratch, MemOperand(address));
|
| __ Branch(&holecheck_passed1, ne, scratch,
|
| Operand(masm->isolate()->factory()->the_hole_value()));
|
| @@ -511,8 +509,7 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| }
|
| // It's irrelevant whether array is smi-only or not when writing a smi.
|
| __ Addu(address, elements, Operand(FixedArray::kHeaderSize - kHeapObjectTag));
|
| - __ sll(scratch, key, kPointerSizeLog2 - kSmiTagSize);
|
| - __ Addu(address, address, scratch);
|
| + __ Lsa(address, address, key, kPointerSizeLog2 - kSmiTagSize);
|
| __ sw(value, MemOperand(address));
|
| __ Ret();
|
|
|
| @@ -528,8 +525,7 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| __ sw(scratch, FieldMemOperand(receiver, JSArray::kLengthOffset));
|
| }
|
| __ Addu(address, elements, Operand(FixedArray::kHeaderSize - kHeapObjectTag));
|
| - __ sll(scratch, key, kPointerSizeLog2 - kSmiTagSize);
|
| - __ Addu(address, address, scratch);
|
| + __ Lsa(address, address, key, kPointerSizeLog2 - kSmiTagSize);
|
| __ sw(value, MemOperand(address));
|
| // Update write barrier for the elements array address.
|
| __ mov(scratch, value); // Preserve the value which is returned.
|
| @@ -550,8 +546,7 @@ static void KeyedStoreGenerateMegamorphicHelper(
|
| // go to the runtime.
|
| __ Addu(address, elements, Operand(FixedDoubleArray::kHeaderSize +
|
| kHoleNanUpper32Offset - kHeapObjectTag));
|
| - __ sll(at, key, kPointerSizeLog2);
|
| - __ addu(address, address, at);
|
| + __ Lsa(address, address, key, kPointerSizeLog2);
|
| __ lw(scratch, MemOperand(address));
|
| __ Branch(&fast_double_without_map_check, ne, scratch,
|
| Operand(kHoleNanUpper32));
|
|
|