| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #if V8_TARGET_ARCH_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
| 6 | 6 |
| 7 // Note on Mips implementation: | 7 // Note on Mips implementation: |
| 8 // | 8 // |
| 9 // The result_register() for mips is the 'v0' register, which is defined | 9 // The result_register() for mips is the 'v0' register, which is defined |
| 10 // by the ABI to contain function return values. However, the first | 10 // by the ABI to contain function return values. However, the first |
| (...skipping 1781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1792 if (CompileTimeValue::IsCompileTimeValue(subexpr)) continue; | 1792 if (CompileTimeValue::IsCompileTimeValue(subexpr)) continue; |
| 1793 | 1793 |
| 1794 if (!result_saved) { | 1794 if (!result_saved) { |
| 1795 __ push(v0); // array literal | 1795 __ push(v0); // array literal |
| 1796 __ Push(Smi::FromInt(expr->literal_index())); | 1796 __ Push(Smi::FromInt(expr->literal_index())); |
| 1797 result_saved = true; | 1797 result_saved = true; |
| 1798 } | 1798 } |
| 1799 | 1799 |
| 1800 VisitForAccumulatorValue(subexpr); | 1800 VisitForAccumulatorValue(subexpr); |
| 1801 | 1801 |
| 1802 if (has_fast_elements) { | 1802 if (FLAG_vector_stores) { |
| 1803 __ li(StoreDescriptor::NameRegister(), |
| 1804 Operand(Smi::FromInt(array_index))); |
| 1805 __ ld(StoreDescriptor::ReceiverRegister(), MemOperand(sp, kPointerSize)); |
| 1806 __ mov(StoreDescriptor::ValueRegister(), result_register()); |
| 1807 EmitLoadStoreICSlot(expr->LiteralFeedbackSlot()); |
| 1808 Handle<Code> ic = |
| 1809 CodeFactory::KeyedStoreIC(isolate(), language_mode()).code(); |
| 1810 CallIC(ic); |
| 1811 } else if (has_fast_elements) { |
| 1803 int offset = FixedArray::kHeaderSize + (array_index * kPointerSize); | 1812 int offset = FixedArray::kHeaderSize + (array_index * kPointerSize); |
| 1804 __ ld(a6, MemOperand(sp, kPointerSize)); // Copy of array literal. | 1813 __ ld(a6, MemOperand(sp, kPointerSize)); // Copy of array literal. |
| 1805 __ ld(a1, FieldMemOperand(a6, JSObject::kElementsOffset)); | 1814 __ ld(a1, FieldMemOperand(a6, JSObject::kElementsOffset)); |
| 1806 __ sd(result_register(), FieldMemOperand(a1, offset)); | 1815 __ sd(result_register(), FieldMemOperand(a1, offset)); |
| 1807 // Update the write barrier for the array store. | 1816 // Update the write barrier for the array store. |
| 1808 __ RecordWriteField(a1, offset, result_register(), a2, | 1817 __ RecordWriteField(a1, offset, result_register(), a2, |
| 1809 kRAHasBeenSaved, kDontSaveFPRegs, | 1818 kRAHasBeenSaved, kDontSaveFPRegs, |
| 1810 EMIT_REMEMBERED_SET, INLINE_SMI_CHECK); | 1819 EMIT_REMEMBERED_SET, INLINE_SMI_CHECK); |
| 1811 } else { | 1820 } else { |
| 1812 __ li(a3, Operand(Smi::FromInt(array_index))); | 1821 __ li(a3, Operand(Smi::FromInt(array_index))); |
| (...skipping 3443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5256 reinterpret_cast<uint64_t>( | 5265 reinterpret_cast<uint64_t>( |
| 5257 isolate->builtins()->OsrAfterStackCheck()->entry())); | 5266 isolate->builtins()->OsrAfterStackCheck()->entry())); |
| 5258 return OSR_AFTER_STACK_CHECK; | 5267 return OSR_AFTER_STACK_CHECK; |
| 5259 } | 5268 } |
| 5260 | 5269 |
| 5261 | 5270 |
| 5262 } // namespace internal | 5271 } // namespace internal |
| 5263 } // namespace v8 | 5272 } // namespace v8 |
| 5264 | 5273 |
| 5265 #endif // V8_TARGET_ARCH_MIPS64 | 5274 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |