summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/ia32/assembler-ia32.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/ia32/assembler-ia32.cc')
-rw-r--r--deps/v8/src/codegen/ia32/assembler-ia32.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/deps/v8/src/codegen/ia32/assembler-ia32.cc b/deps/v8/src/codegen/ia32/assembler-ia32.cc
index ab9a895e9d..bb76c82a6f 100644
--- a/deps/v8/src/codegen/ia32/assembler-ia32.cc
+++ b/deps/v8/src/codegen/ia32/assembler-ia32.cc
@@ -204,7 +204,8 @@ void Displacement::init(Label* L, Type type) {
const int RelocInfo::kApplyMask =
RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
- RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET);
+ RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
+ RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL);
bool RelocInfo::IsCodedSpecially() {
// The deserializer needs to know whether a pointer is specially coded. Being
@@ -320,13 +321,13 @@ void Assembler::GetCode(Isolate* isolate, CodeDesc* desc,
SafepointTableBuilder* safepoint_table_builder,
int handler_table_offset) {
// As a crutch to avoid having to add manual Align calls wherever we use a
- // raw workflow to create Code objects (mostly in tests), add another Align
- // call here. It does no harm - the end of the Code object is aligned to the
- // (larger) kCodeAlignment anyways.
+ // raw workflow to create InstructionStream objects (mostly in tests), add
+ // another Align call here. It does no harm - the end of the InstructionStream
+ // object is aligned to the (larger) kCodeAlignment anyways.
// TODO(jgruber): Consider moving responsibility for proper alignment to
// metadata table builders (safepoint, handler, constant pool, code
// comments).
- DataAlign(Code::kMetadataAlignment);
+ DataAlign(InstructionStream::kMetadataAlignment);
const int code_comments_size = WriteCodeComments();
@@ -1537,8 +1538,9 @@ void Assembler::bind_to(Label* L, int pos) {
long_at_put(fixup_pos, reinterpret_cast<int>(buffer_start_ + pos));
internal_reference_positions_.push_back(fixup_pos);
} else if (disp.type() == Displacement::CODE_RELATIVE) {
- // Relative to Code heap object pointer.
- long_at_put(fixup_pos, pos + Code::kHeaderSize - kHeapObjectTag);
+ // Relative to InstructionStream heap object pointer.
+ long_at_put(fixup_pos,
+ pos + InstructionStream::kHeaderSize - kHeapObjectTag);
} else {
if (disp.type() == Displacement::UNCONDITIONAL_JUMP) {
DCHECK_EQ(byte_at(fixup_pos - 1), 0xE9); // jmp expected
@@ -1642,7 +1644,6 @@ void Assembler::call(Operand adr) {
void Assembler::call(Handle<Code> code, RelocInfo::Mode rmode) {
EnsureSpace ensure_space(this);
DCHECK(RelocInfo::IsCodeTarget(rmode));
- DCHECK(code->IsExecutable());
EMIT(0xE8);
emit(code, rmode);
}
@@ -3406,7 +3407,8 @@ void Assembler::dd(Label* label) {
void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
if (!ShouldRecordRelocInfo(rmode)) return;
- RelocInfo rinfo(reinterpret_cast<Address>(pc_), rmode, data, Code());
+ RelocInfo rinfo(reinterpret_cast<Address>(pc_), rmode, data, Code(),
+ InstructionStream());
reloc_info_writer.Write(&rinfo);
}