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 | 5 |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_MIPS | 9 #if V8_TARGET_ARCH_MIPS |
10 | 10 |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 // If we ended up using the runtime, and we want a memento, then the | 609 // If we ended up using the runtime, and we want a memento, then the |
610 // runtime call made it for us, and we shouldn't do create count | 610 // runtime call made it for us, and we shouldn't do create count |
611 // increment. | 611 // increment. |
612 Label count_incremented; | 612 Label count_incremented; |
613 if (create_memento) { | 613 if (create_memento) { |
614 __ jmp(&count_incremented); | 614 __ jmp(&count_incremented); |
615 } | 615 } |
616 | 616 |
617 // Receiver for constructor call allocated. | 617 // Receiver for constructor call allocated. |
618 // t4: JSObject | 618 // t4: JSObject |
| 619 __ bind(&allocated); |
619 | 620 |
620 if (create_memento) { | 621 if (create_memento) { |
621 __ lw(a2, MemOperand(sp, kPointerSize * 2)); | 622 __ lw(a2, MemOperand(sp, kPointerSize * 2)); |
622 __ LoadRoot(t5, Heap::kUndefinedValueRootIndex); | 623 __ LoadRoot(t5, Heap::kUndefinedValueRootIndex); |
623 __ Branch(&count_incremented, eq, a2, Operand(t5)); | 624 __ Branch(&count_incremented, eq, a2, Operand(t5)); |
624 // a2 is an AllocationSite. We are creating a memento from it, so we | 625 // a2 is an AllocationSite. We are creating a memento from it, so we |
625 // need to increment the memento create count. | 626 // need to increment the memento create count. |
626 __ lw(a3, FieldMemOperand(a2, | 627 __ lw(a3, FieldMemOperand(a2, |
627 AllocationSite::kPretenureCreateCountOffset)); | 628 AllocationSite::kPretenureCreateCountOffset)); |
628 __ Addu(a3, a3, Operand(Smi::FromInt(1))); | 629 __ Addu(a3, a3, Operand(Smi::FromInt(1))); |
629 __ sw(a3, FieldMemOperand(a2, | 630 __ sw(a3, FieldMemOperand(a2, |
630 AllocationSite::kPretenureCreateCountOffset)); | 631 AllocationSite::kPretenureCreateCountOffset)); |
631 __ bind(&count_incremented); | 632 __ bind(&count_incremented); |
632 } | 633 } |
633 | 634 |
634 __ bind(&allocated); | |
635 __ Push(t4, t4); | 635 __ Push(t4, t4); |
636 | 636 |
637 // Reload the number of arguments from the stack. | 637 // Reload the number of arguments from the stack. |
638 // sp[0]: receiver | 638 // sp[0]: receiver |
639 // sp[1]: receiver | 639 // sp[1]: receiver |
640 // sp[2]: constructor function | 640 // sp[2]: constructor function |
641 // sp[3]: number of arguments (smi-tagged) | 641 // sp[3]: number of arguments (smi-tagged) |
642 __ lw(a1, MemOperand(sp, 2 * kPointerSize)); | 642 __ lw(a1, MemOperand(sp, 2 * kPointerSize)); |
643 __ lw(a3, MemOperand(sp, 3 * kPointerSize)); | 643 __ lw(a3, MemOperand(sp, 3 * kPointerSize)); |
644 | 644 |
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1571 __ break_(0xCC); | 1571 __ break_(0xCC); |
1572 } | 1572 } |
1573 } | 1573 } |
1574 | 1574 |
1575 | 1575 |
1576 #undef __ | 1576 #undef __ |
1577 | 1577 |
1578 } } // namespace v8::internal | 1578 } } // namespace v8::internal |
1579 | 1579 |
1580 #endif // V8_TARGET_ARCH_MIPS | 1580 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |