Index: src/x64/assembler-x64-inl.h |
diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h |
index caf7af6ec94368b5140b485fc7caa06469ad2c2c..64c71cfaee9afca8ef3d87d44fcb0b2c7c637413 100644 |
--- a/src/x64/assembler-x64-inl.h |
+++ b/src/x64/assembler-x64-inl.h |
@@ -292,7 +292,7 @@ void RelocInfo::apply(intptr_t delta, ICacheFlushMode icache_flush_mode) { |
bool flush_icache = icache_flush_mode != SKIP_ICACHE_FLUSH; |
if (IsInternalReference(rmode_)) { |
// absolute code pointer inside code object moves with the code object. |
- Memory::Address_at(pc_) += static_cast<int32_t>(delta); |
+ Memory::Address_at(pc_) += delta; |
if (flush_icache) CpuFeatures::FlushICache(pc_, sizeof(Address)); |
} else if (IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)) { |
Memory::int32_at(pc_) -= static_cast<int32_t>(delta); |
@@ -621,7 +621,12 @@ void Operand::set_disp32(int disp) { |
len_ += sizeof(int32_t); |
} |
- |
+void Operand::set_disp64(int64_t disp) { |
+ DCHECK_EQ(1, len_); |
+ int64_t* p = reinterpret_cast<int64_t*>(&buf_[len_]); |
+ *p = disp; |
+ len_ += sizeof(disp); |
+} |
} } // namespace v8::internal |
#endif // V8_X64_ASSEMBLER_X64_INL_H_ |