Chromium Code Reviews| Index: src/x64/assembler-x64.h | 
| diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h | 
| index 0ce714db0915fa077e943853ede217ce6c69babc..f5f858e9e26e9501b8fb05f77d11d8f525f5e6e9 100644 | 
| --- a/src/x64/assembler-x64.h | 
| +++ b/src/x64/assembler-x64.h | 
| @@ -334,13 +334,20 @@ enum RoundingMode { | 
| class Immediate BASE_EMBEDDED { | 
| public: | 
| explicit Immediate(int32_t value) : value_(value) {} | 
| + explicit Immediate(Address value, RelocInfo::Mode rmode) { | 
| + value_ = static_cast<int32_t>(reinterpret_cast<intptr_t>(value)); | 
| 
 
Yang
2016/03/07 06:21:22
Is this useful at all? Any address that you pass i
 
titzer
2016/03/07 19:34:09
Yeah, I don't think we can allow addresses as imme
 
gdeepti1
2016/03/08 04:22:51
Fixed to not use Address - https://codereview.chro
 
 | 
| + rmode_ = rmode; | 
| + } | 
| explicit Immediate(Smi* value) { | 
| DCHECK(SmiValuesAre31Bits()); // Only available for 31-bit SMI. | 
| value_ = static_cast<int32_t>(reinterpret_cast<intptr_t>(value)); | 
| } | 
| + RelocInfo::Mode rmode() { return rmode_; } | 
| + | 
| private: | 
| int32_t value_; | 
| + RelocInfo::Mode rmode_ = RelocInfo::NONE32; | 
| friend class Assembler; | 
| }; | 
| @@ -699,8 +706,10 @@ class Assembler : public AssemblerBase { | 
| void movp(Register dst, void* ptr, RelocInfo::Mode rmode); | 
| // Loads a 64-bit immediate into a register. | 
| - void movq(Register dst, int64_t value); | 
| - void movq(Register dst, uint64_t value); | 
| + void movq(Register dst, int64_t value, | 
| + RelocInfo::Mode rmode = RelocInfo::NONE64); | 
| + void movq(Register dst, uint64_t value, | 
| + RelocInfo::Mode rmode = RelocInfo::NONE64); | 
| void movsxbl(Register dst, Register src); | 
| void movsxbl(Register dst, const Operand& src); | 
| @@ -1744,7 +1753,12 @@ class Assembler : public AssemblerBase { | 
| RelocInfo::Mode rmode, | 
| TypeFeedbackId ast_id = TypeFeedbackId::None()); | 
| inline void emit_runtime_entry(Address entry, RelocInfo::Mode rmode); | 
| - void emit(Immediate x) { emitl(x.value_); } | 
| + void emit(Immediate x) { | 
| + if (!RelocInfo::IsNone(x.rmode_)) { | 
| + RecordRelocInfo(x.rmode_); | 
| + } | 
| + emitl(x.value_); | 
| + } | 
| // Emits a REX prefix that encodes a 64-bit operand size and | 
| // the top bit of both register codes. |