diff options
Diffstat (limited to 'deps/v8/src/mips64/assembler-mips64.h')
-rw-r--r-- | deps/v8/src/mips64/assembler-mips64.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/deps/v8/src/mips64/assembler-mips64.h b/deps/v8/src/mips64/assembler-mips64.h index 056cc425f9..e3786a7e8c 100644 --- a/deps/v8/src/mips64/assembler-mips64.h +++ b/deps/v8/src/mips64/assembler-mips64.h @@ -559,6 +559,13 @@ class Assembler : public AssemblerBase { static const int kDebugBreakSlotLength = kDebugBreakSlotInstructions * kInstrSize; + // Max offset for instructions with 16-bit offset field + static const int kMaxBranchOffset = (1 << (18 - 1)) - 1; + + // Max offset for compact branch instructions with 26-bit offset field + static const int kMaxCompactBranchOffset = (1 << (28 - 1)) - 1; + + static const int kTrampolineSlotsSize = 2 * kInstrSize; // --------------------------------------------------------------------------- // Code generation. @@ -1091,9 +1098,6 @@ class Assembler : public AssemblerBase { // Debugging. - // Mark generator continuation. - void RecordGeneratorContinuation(); - // Mark address of a debug break slot. void RecordDebugBreakSlot(RelocInfo::Mode mode); @@ -1226,6 +1230,7 @@ class Assembler : public AssemblerBase { } bool IsPrevInstrCompactBranch() { return prev_instr_compact_branch_; } + static bool IsCompactBranchSupported() { return kArchVariant == kMips64r6; } inline int UnboundLabelsCount() { return unbound_labels_count_; } @@ -1236,6 +1241,7 @@ class Assembler : public AssemblerBase { // Helpers. void LoadRegPlusOffsetToAt(const MemOperand& src); + int32_t LoadRegPlusUpperOffsetPartToAt(const MemOperand& src); // Relocation for a type-recording IC has the AST id added to it. This // member variable is a way to pass the information from the call site to @@ -1497,14 +1503,15 @@ class Assembler : public AssemblerBase { // branch instruction generation, where we use jump instructions rather // than regular branch instructions. bool trampoline_emitted_; - static const int kTrampolineSlotsSize = 2 * kInstrSize; - static const int kMaxBranchOffset = (1 << (18 - 1)) - 1; - static const int kMaxCompactBranchOffset = (1 << (28 - 1)) - 1; static const int kInvalidSlotPos = -1; // Internal reference positions, required for unbounded internal reference // labels. std::set<int64_t> internal_reference_positions_; + bool is_internal_reference(Label* L) { + return internal_reference_positions_.find(L->pos()) != + internal_reference_positions_.end(); + } void EmittedCompactBranchInstruction() { prev_instr_compact_branch_ = true; } void ClearCompactBranchState() { prev_instr_compact_branch_ = false; } |