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_MIPS64 | 7 #if V8_TARGET_ARCH_MIPS64 |
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 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 __ Daddu(scratch1, elements, | 658 __ Daddu(scratch1, elements, |
659 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 659 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
660 __ Daddu(scratch3, array, Operand(FixedDoubleArray::kHeaderSize)); | 660 __ Daddu(scratch3, array, Operand(FixedDoubleArray::kHeaderSize)); |
661 __ SmiScale(array_end, length, kDoubleSizeLog2); | 661 __ SmiScale(array_end, length, kDoubleSizeLog2); |
662 __ Daddu(array_end, array_end, scratch3); | 662 __ Daddu(array_end, array_end, scratch3); |
663 | 663 |
664 // Repurpose registers no longer in use. | 664 // Repurpose registers no longer in use. |
665 Register hole_lower = elements; | 665 Register hole_lower = elements; |
666 Register hole_upper = length; | 666 Register hole_upper = length; |
667 __ li(hole_lower, Operand(kHoleNanLower32)); | 667 __ li(hole_lower, Operand(kHoleNanLower32)); |
| 668 __ li(hole_upper, Operand(kHoleNanUpper32)); |
| 669 |
668 // scratch1: begin of source FixedArray element fields, not tagged | 670 // scratch1: begin of source FixedArray element fields, not tagged |
669 // hole_lower: kHoleNanLower32 | 671 // hole_lower: kHoleNanLower32 |
670 // hole_upper: kHoleNanUpper32 | 672 // hole_upper: kHoleNanUpper32 |
671 // array_end: end of destination FixedDoubleArray, not tagged | 673 // array_end: end of destination FixedDoubleArray, not tagged |
672 // scratch3: begin of FixedDoubleArray element fields, not tagged | 674 // scratch3: begin of FixedDoubleArray element fields, not tagged |
673 __ Branch(USE_DELAY_SLOT, &entry); | 675 |
674 __ li(hole_upper, Operand(kHoleNanUpper32)); // In delay slot. | 676 __ Branch(&entry); |
675 | 677 |
676 __ bind(&only_change_map); | 678 __ bind(&only_change_map); |
677 __ sd(target_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 679 __ sd(target_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
678 __ RecordWriteField(receiver, | 680 __ RecordWriteField(receiver, |
679 HeapObject::kMapOffset, | 681 HeapObject::kMapOffset, |
680 target_map, | 682 target_map, |
681 scratch2, | 683 scratch2, |
682 kRAHasBeenSaved, | 684 kRAHasBeenSaved, |
683 kDontSaveFPRegs, | 685 kDontSaveFPRegs, |
684 OMIT_REMEMBERED_SET, | 686 OMIT_REMEMBERED_SET, |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1147 patcher.masm()->nop(); // Pad the empty space. | 1149 patcher.masm()->nop(); // Pad the empty space. |
1148 } | 1150 } |
1149 } | 1151 } |
1150 | 1152 |
1151 | 1153 |
1152 #undef __ | 1154 #undef __ |
1153 | 1155 |
1154 } } // namespace v8::internal | 1156 } } // namespace v8::internal |
1155 | 1157 |
1156 #endif // V8_TARGET_ARCH_MIPS64 | 1158 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |