diff options
Diffstat (limited to 'deps/v8/src/codegen/ia32/assembler-ia32-inl.h')
-rw-r--r-- | deps/v8/src/codegen/ia32/assembler-ia32-inl.h | 14 |
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); |