Index: src/mips64/assembler-mips64.h |
diff --git a/src/mips64/assembler-mips64.h b/src/mips64/assembler-mips64.h |
index a3664770a3f4771e444c325dd4ec8515e8ecf2c9..5ad98f6cd88135a43c282b42651f79fd184b26ef 100644 |
--- a/src/mips64/assembler-mips64.h |
+++ b/src/mips64/assembler-mips64.h |
@@ -37,6 +37,9 @@ |
#define V8_MIPS_ASSEMBLER_MIPS_H_ |
#include <stdio.h> |
+ |
+#include <set> |
+ |
#include "src/assembler.h" |
#include "src/mips64/constants-mips64.h" |
#include "src/serialize.h" |
@@ -1059,12 +1062,14 @@ class Assembler : public AssemblerBase { |
// Use --trace-deopt to enable. |
void RecordDeoptReason(const int reason, const int raw_position); |
- static int RelocateInternalReference(byte* pc, intptr_t pc_delta); |
+ static int RelocateInternalReference(RelocInfo::Mode rmode, byte* pc, |
+ intptr_t pc_delta); |
// Writes a single byte or word of data in the code stream. Used for |
// inline tables, e.g., jump-tables. |
void db(uint8_t data); |
void dd(uint32_t data); |
+ void dd(Label* label); |
// Emits the address of the code stub's first instruction. |
void emit_code_stub_address(Code* stub); |
@@ -1163,10 +1168,10 @@ class Assembler : public AssemblerBase { |
int64_t buffer_space() const { return reloc_info_writer.pos() - pc_; } |
// Decode branch instruction at pos and return branch target pos. |
- int64_t target_at(int64_t pos); |
+ int64_t target_at(int64_t pos, bool is_internal); |
// Patch branch instruction at pos to branch to given branch target pos. |
- void target_at_put(int64_t pos, int64_t target_pos); |
+ void target_at_put(int64_t pos, int64_t target_pos, bool is_internal); |
// Say if we need to relocate with this mode. |
bool MustUseReg(RelocInfo::Mode rmode); |
@@ -1336,7 +1341,7 @@ class Assembler : public AssemblerBase { |
// Labels. |
void print(Label* L); |
void bind_to(Label* L, int pos); |
- void next(Label* L); |
+ void next(Label* L, bool is_internal); |
// One trampoline consists of: |
// - space for trampoline slots, |
@@ -1401,6 +1406,10 @@ class Assembler : public AssemblerBase { |
static const int kMaxBranchOffset = (1 << (18 - 1)) - 1; |
static const int kInvalidSlotPos = -1; |
+ // Internal reference positions, required for unbounded internal reference |
+ // labels. |
+ std::set<int64_t> internal_reference_positions_; |
+ |
Trampoline trampoline_; |
bool internal_trampoline_exception_; |