| 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_;
|
|
|
|
|