summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/ia32/assembler-ia32-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/ia32/assembler-ia32-inl.h')
-rw-r--r--deps/v8/src/codegen/ia32/assembler-ia32-inl.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/deps/v8/src/codegen/ia32/assembler-ia32-inl.h b/deps/v8/src/codegen/ia32/assembler-ia32-inl.h
index f03b032ec2..d5040b8aa4 100644
--- a/deps/v8/src/codegen/ia32/assembler-ia32-inl.h
+++ b/deps/v8/src/codegen/ia32/assembler-ia32-inl.h
@@ -53,8 +53,10 @@ bool CpuFeatures::SupportsOptimizer() { return true; }
void RelocInfo::apply(intptr_t delta) {
DCHECK_EQ(kApplyMask, (RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
- RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET)));
- if (IsCodeTarget(rmode_) || IsOffHeapTarget(rmode_)) {
+ RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
+ RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL)));
+ if (IsCodeTarget(rmode_) || IsOffHeapTarget(rmode_) ||
+ IsWasmStubCall(rmode_)) {
base::WriteUnalignedValue(pc_,
base::ReadUnalignedValue<int32_t>(pc_) - delta);
} else if (IsInternalReference(rmode_)) {
@@ -65,7 +67,7 @@ void RelocInfo::apply(intptr_t delta) {
}
Address RelocInfo::target_address() {
- DCHECK(IsCodeTarget(rmode_) || IsWasmCall(rmode_));
+ DCHECK(IsCodeTarget(rmode_) || IsWasmCall(rmode_) || IsWasmStubCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
@@ -96,8 +98,8 @@ void RelocInfo::set_target_object(Heap* heap, HeapObject target,
if (icache_flush_mode != SKIP_ICACHE_FLUSH) {
FlushInstructionCache(pc_, sizeof(Address));
}
- if (!host().is_null() && !v8_flags.disable_write_barriers) {
- WriteBarrierForCode(host(), this, target, write_barrier_mode);
+ if (!instruction_stream().is_null() && !v8_flags.disable_write_barriers) {
+ WriteBarrierForCode(instruction_stream(), this, target, write_barrier_mode);
}
}
@@ -188,7 +190,7 @@ void Assembler::emit(const Immediate& x) {
void Assembler::emit_code_relative_offset(Label* label) {
if (label->is_bound()) {
int32_t pos;
- pos = label->pos() + Code::kHeaderSize - kHeapObjectTag;
+ pos = label->pos() + InstructionStream::kHeaderSize - kHeapObjectTag;
emit(pos);
} else {
emit_disp(label, Displacement::CODE_RELATIVE);