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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_MIPS | 7 #if V8_TARGET_ARCH_MIPS |
8 | 8 |
9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
10 #include "src/macro-assembler.h" | 10 #include "src/macro-assembler.h" |
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 // Prepare for conversion loop. | 764 // Prepare for conversion loop. |
765 __ Addu(scratch1, elements, | 765 __ Addu(scratch1, elements, |
766 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 766 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
767 __ Addu(scratch3, array, Operand(FixedDoubleArray::kHeaderSize)); | 767 __ Addu(scratch3, array, Operand(FixedDoubleArray::kHeaderSize)); |
768 __ sll(at, length, 2); | 768 __ sll(at, length, 2); |
769 __ Addu(array_end, scratch3, at); | 769 __ Addu(array_end, scratch3, at); |
770 | 770 |
771 // Repurpose registers no longer in use. | 771 // Repurpose registers no longer in use. |
772 Register hole_lower = elements; | 772 Register hole_lower = elements; |
773 Register hole_upper = length; | 773 Register hole_upper = length; |
| 774 __ li(hole_lower, Operand(kHoleNanLower32)); |
| 775 __ li(hole_upper, Operand(kHoleNanUpper32)); |
774 | 776 |
775 __ li(hole_lower, Operand(kHoleNanLower32)); | |
776 // scratch1: begin of source FixedArray element fields, not tagged | 777 // scratch1: begin of source FixedArray element fields, not tagged |
777 // hole_lower: kHoleNanLower32 | 778 // hole_lower: kHoleNanLower32 |
778 // hole_upper: kHoleNanUpper32 | 779 // hole_upper: kHoleNanUpper32 |
779 // array_end: end of destination FixedDoubleArray, not tagged | 780 // array_end: end of destination FixedDoubleArray, not tagged |
780 // scratch3: begin of FixedDoubleArray element fields, not tagged | 781 // scratch3: begin of FixedDoubleArray element fields, not tagged |
781 __ Branch(USE_DELAY_SLOT, &entry); | 782 |
782 __ li(hole_upper, Operand(kHoleNanUpper32)); // In delay slot. | 783 __ Branch(&entry); |
783 | 784 |
784 __ bind(&only_change_map); | 785 __ bind(&only_change_map); |
785 __ sw(target_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 786 __ sw(target_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
786 __ RecordWriteField(receiver, | 787 __ RecordWriteField(receiver, |
787 HeapObject::kMapOffset, | 788 HeapObject::kMapOffset, |
788 target_map, | 789 target_map, |
789 scratch2, | 790 scratch2, |
790 kRAHasBeenSaved, | 791 kRAHasBeenSaved, |
791 kDontSaveFPRegs, | 792 kDontSaveFPRegs, |
792 OMIT_REMEMBERED_SET, | 793 OMIT_REMEMBERED_SET, |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1257 patcher.masm()->nop(); // Pad the empty space. | 1258 patcher.masm()->nop(); // Pad the empty space. |
1258 } | 1259 } |
1259 } | 1260 } |
1260 | 1261 |
1261 | 1262 |
1262 #undef __ | 1263 #undef __ |
1263 | 1264 |
1264 } } // namespace v8::internal | 1265 } } // namespace v8::internal |
1265 | 1266 |
1266 #endif // V8_TARGET_ARCH_MIPS | 1267 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |