Index: src/mips64/macro-assembler-mips64.h |
diff --git a/src/mips64/macro-assembler-mips64.h b/src/mips64/macro-assembler-mips64.h |
index e0dac29af068356724c13e97fefb92e1ca822694..57848572f8c82c983fe30a0eaaae81805c48f2ec 100644 |
--- a/src/mips64/macro-assembler-mips64.h |
+++ b/src/mips64/macro-assembler-mips64.h |
@@ -188,9 +188,9 @@ class MacroAssembler: public Assembler { |
Name(target, COND_ARGS, bd); \ |
} |
-#define DECLARE_BRANCH_PROTOTYPES(Name) \ |
+#define DECLARE_BRANCH_PROTOTYPES(Name) \ |
DECLARE_NORELOC_PROTOTYPE(Name, Label*) \ |
- DECLARE_NORELOC_PROTOTYPE(Name, int16_t) |
+ DECLARE_NORELOC_PROTOTYPE(Name, int32_t) |
DECLARE_BRANCH_PROTOTYPES(Branch) |
DECLARE_BRANCH_PROTOTYPES(BranchAndLink) |
@@ -227,6 +227,8 @@ class MacroAssembler: public Assembler { |
Ret(cond, rs, rt, bd); |
} |
+ bool IsNear(Label* L, Condition cond, int rs_reg); |
+ |
void Branch(Label* L, |
Condition cond, |
Register rs, |
@@ -1772,16 +1774,32 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT |
int num_reg_arguments, |
int num_double_arguments); |
- void BranchAndLinkShort(int16_t offset, BranchDelaySlot bdslot = PROTECT); |
- void BranchAndLinkShort(int16_t offset, Condition cond, Register rs, |
- const Operand& rt, |
- BranchDelaySlot bdslot = PROTECT); |
+ inline Register GetRtAsRegisterHelper(const Operand& rt, Register scratch); |
+ inline int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits); |
+ void BranchShortHelperR6(int32_t offset, Label* L); |
+ void BranchShortHelper(int16_t offset, Label* L, BranchDelaySlot bdslot); |
+ bool BranchShortHelperR6(int32_t offset, Label* L, Condition cond, |
+ Register rs, const Operand& rt); |
+ bool BranchShortHelper(int16_t offset, Label* L, Condition cond, Register rs, |
+ const Operand& rt, BranchDelaySlot bdslot); |
+ bool BranchShortCheck(int32_t offset, Label* L, Condition cond, Register rs, |
+ const Operand& rt, BranchDelaySlot bdslot); |
+ |
+ void BranchAndLinkShortHelperR6(int32_t offset, Label* L); |
+ void BranchAndLinkShortHelper(int16_t offset, Label* L, |
+ BranchDelaySlot bdslot); |
+ void BranchAndLinkShort(int32_t offset, BranchDelaySlot bdslot = PROTECT); |
void BranchAndLinkShort(Label* L, BranchDelaySlot bdslot = PROTECT); |
- void BranchAndLinkShort(Label* L, Condition cond, Register rs, |
- const Operand& rt, |
- BranchDelaySlot bdslot = PROTECT); |
- void J(Label* L, BranchDelaySlot bdslot); |
- void Jal(Label* L, BranchDelaySlot bdslot); |
+ bool BranchAndLinkShortHelperR6(int32_t offset, Label* L, Condition cond, |
+ Register rs, const Operand& rt); |
+ bool BranchAndLinkShortHelper(int16_t offset, Label* L, Condition cond, |
+ Register rs, const Operand& rt, |
+ BranchDelaySlot bdslot); |
+ bool BranchAndLinkShortCheck(int32_t offset, Label* L, Condition cond, |
+ Register rs, const Operand& rt, |
+ BranchDelaySlot bdslot); |
+ void BranchLong(Label* L, BranchDelaySlot bdslot); |
+ void BranchAndLinkLong(Label* L, BranchDelaySlot bdslot); |
void Jr(Label* L, BranchDelaySlot bdslot); |
void Jalr(Label* L, BranchDelaySlot bdslot); |
@@ -1866,7 +1884,7 @@ class CodePatcher { |
// Change the condition part of an instruction leaving the rest of the current |
// instruction unchanged. |
- void ChangeBranchCondition(Condition cond); |
+ void ChangeBranchCondition(Instr current_instr, uint32_t new_opcode); |
private: |
byte* address_; // The address of the code being patched. |