| Index: src/mips/assembler-mips.h
|
| diff --git a/src/mips/assembler-mips.h b/src/mips/assembler-mips.h
|
| index 50a140bd7648d715c487e35d55742428c6a05ef1..b3726d12b53d4df881f24f41ff1ecc8e137f774a 100644
|
| --- a/src/mips/assembler-mips.h
|
| +++ b/src/mips/assembler-mips.h
|
| @@ -1083,6 +1083,7 @@ class Assembler : public AssemblerBase {
|
| static bool IsBnezc(Instr instr);
|
| static bool IsBeqc(Instr instr);
|
| static bool IsBnec(Instr instr);
|
| + static bool IsJicOrJialc(Instr instr);
|
|
|
| static bool IsJump(Instr instr);
|
| static bool IsJ(Instr instr);
|
| @@ -1122,12 +1123,20 @@ class Assembler : public AssemblerBase {
|
| static int32_t GetBranchOffset(Instr instr);
|
| static bool IsLw(Instr instr);
|
| static int16_t GetLwOffset(Instr instr);
|
| + static int16_t GetJicOrJialcOffset(Instr instr);
|
| + static int16_t GetLuiOffset(Instr instr);
|
| static Instr SetLwOffset(Instr instr, int16_t offset);
|
|
|
| static bool IsSw(Instr instr);
|
| static Instr SetSwOffset(Instr instr, int16_t offset);
|
| static bool IsAddImmediate(Instr instr);
|
| static Instr SetAddImmediateOffset(Instr instr, int16_t offset);
|
| + static uint32_t CreateTargetAddress(Instr instr_lui, Instr instr_jic);
|
| + static void UnpackTargetAddress(uint32_t address, int16_t& lui_offset,
|
| + int16_t& jic_offset);
|
| + static void UnpackTargetAddressUnsigned(uint32_t address,
|
| + uint32_t& lui_offset,
|
| + uint32_t& jic_offset);
|
|
|
| static bool IsAndImmediate(Instr instr);
|
| static bool IsEmittedConstant(Instr instr);
|
| @@ -1214,6 +1223,8 @@ class Assembler : public AssemblerBase {
|
|
|
| inline void CheckTrampolinePoolQuick(int extra_instructions = 0);
|
|
|
| + inline void CheckBuffer();
|
| +
|
| private:
|
| inline static void set_target_internal_reference_encoded_at(Address pc,
|
| Address target);
|
| @@ -1260,7 +1271,6 @@ class Assembler : public AssemblerBase {
|
| enum class CompactBranchType : bool { NO = false, COMPACT_BRANCH = true };
|
|
|
| // Code emission.
|
| - inline void CheckBuffer();
|
| void GrowBuffer();
|
| inline void emit(Instr x,
|
| CompactBranchType is_compact_branch = CompactBranchType::NO);
|
| @@ -1407,7 +1417,11 @@ class Assembler : public AssemblerBase {
|
| // branch instruction generation, where we use jump instructions rather
|
| // than regular branch instructions.
|
| bool trampoline_emitted_;
|
| +#ifdef _MIPS_ARCH_MIPS32R6
|
| + static const int kTrampolineSlotsSize = 2 * kInstrSize;
|
| +#else
|
| static const int kTrampolineSlotsSize = 4 * kInstrSize;
|
| +#endif
|
| static const int kMaxBranchOffset = (1 << (18 - 1)) - 1;
|
| static const int kMaxCompactBranchOffset = (1 << (28 - 1)) - 1;
|
| static const int kInvalidSlotPos = -1;
|
|
|