| 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));
 | 
| +    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.
 | 
| 
 |