OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_ASSEMBLER_MIPS_H_ | 5 #ifndef VM_ASSEMBLER_MIPS_H_ |
6 #define VM_ASSEMBLER_MIPS_H_ | 6 #define VM_ASSEMBLER_MIPS_H_ |
7 | 7 |
8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
9 #error Do not include assembler_mips.h directly; use assembler.h instead. | 9 #error Do not include assembler_mips.h directly; use assembler.h instead. |
10 #endif | 10 #endif |
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 // None of rd, rs, rt, or ro may be TMP. | 898 // None of rd, rs, rt, or ro may be TMP. |
899 void SubImmediateDetectOverflow(Register rd, Register rs, int32_t imm, | 899 void SubImmediateDetectOverflow(Register rd, Register rs, int32_t imm, |
900 Register ro) { | 900 Register ro) { |
901 ASSERT(!in_delay_slot_); | 901 ASSERT(!in_delay_slot_); |
902 LoadImmediate(rd, imm); | 902 LoadImmediate(rd, imm); |
903 SubuDetectOverflow(rd, rs, rd, ro); | 903 SubuDetectOverflow(rd, rs, rd, ro); |
904 } | 904 } |
905 | 905 |
906 void Branch(const StubEntry& stub_entry, Register pp = PP); | 906 void Branch(const StubEntry& stub_entry, Register pp = PP); |
907 | 907 |
908 void BranchLink(const ExternalLabel* label, Patchability patchable); | |
909 | |
910 void BranchLink(const StubEntry& stub_entry, | 908 void BranchLink(const StubEntry& stub_entry, |
911 Patchability patchable = kNotPatchable); | 909 Patchability patchable = kNotPatchable); |
912 | 910 |
913 void BranchLinkPatchable(const StubEntry& stub_entry); | 911 void BranchLinkPatchable(const StubEntry& stub_entry); |
914 | 912 |
915 void Drop(intptr_t stack_elements) { | 913 void Drop(intptr_t stack_elements) { |
916 ASSERT(stack_elements >= 0); | 914 ASSERT(stack_elements >= 0); |
917 if (stack_elements > 0) { | 915 if (stack_elements > 0) { |
918 addiu(SP, SP, Immediate(stack_elements * kWordSize)); | 916 addiu(SP, SP, Immediate(stack_elements * kWordSize)); |
919 } | 917 } |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1505 void ReserveAlignedFrameSpace(intptr_t frame_space); | 1503 void ReserveAlignedFrameSpace(intptr_t frame_space); |
1506 | 1504 |
1507 // Create a frame for calling into runtime that preserves all volatile | 1505 // Create a frame for calling into runtime that preserves all volatile |
1508 // registers. Frame's SP is guaranteed to be correctly aligned and | 1506 // registers. Frame's SP is guaranteed to be correctly aligned and |
1509 // frame_space bytes are reserved under it. | 1507 // frame_space bytes are reserved under it. |
1510 void EnterCallRuntimeFrame(intptr_t frame_space); | 1508 void EnterCallRuntimeFrame(intptr_t frame_space); |
1511 void LeaveCallRuntimeFrame(); | 1509 void LeaveCallRuntimeFrame(); |
1512 | 1510 |
1513 void LoadObject(Register rd, const Object& object); | 1511 void LoadObject(Register rd, const Object& object); |
1514 void LoadUniqueObject(Register rd, const Object& object); | 1512 void LoadUniqueObject(Register rd, const Object& object); |
1515 void LoadExternalLabel(Register rd, | |
1516 const ExternalLabel* label, | |
1517 Patchability patchable); | |
1518 void LoadFunctionFromCalleePool(Register dst, | 1513 void LoadFunctionFromCalleePool(Register dst, |
1519 const Function& function, | 1514 const Function& function, |
1520 Register new_pp); | 1515 Register new_pp); |
1521 void LoadNativeEntry(Register rd, | 1516 void LoadNativeEntry(Register rd, |
1522 const ExternalLabel* label, | 1517 const ExternalLabel* label, |
1523 Patchability patchable); | 1518 Patchability patchable); |
1524 void PushObject(const Object& object); | 1519 void PushObject(const Object& object); |
1525 | 1520 |
1526 void LoadIsolate(Register result); | 1521 void LoadIsolate(Register result); |
1527 | 1522 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1737 Register value, | 1732 Register value, |
1738 Label* no_update); | 1733 Label* no_update); |
1739 | 1734 |
1740 DISALLOW_ALLOCATION(); | 1735 DISALLOW_ALLOCATION(); |
1741 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1736 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1742 }; | 1737 }; |
1743 | 1738 |
1744 } // namespace dart | 1739 } // namespace dart |
1745 | 1740 |
1746 #endif // VM_ASSEMBLER_MIPS_H_ | 1741 #endif // VM_ASSEMBLER_MIPS_H_ |
OLD | NEW |