| Index: src/x64/assembler-x64.h | 
| =================================================================== | 
| --- src/x64/assembler-x64.h	(revision 2088) | 
| +++ src/x64/assembler-x64.h	(working copy) | 
| @@ -294,11 +294,11 @@ | 
| static void Probe(); | 
| // Check whether a feature is supported by the target CPU. | 
| static bool IsSupported(Feature f) { | 
| -    return (supported_ & (static_cast<uint64_t>(1) << f)) != 0; | 
| +    return (supported_ & (V8_UINT64_C(1) << f)) != 0; | 
| } | 
| // Check whether a feature is currently enabled. | 
| static bool IsEnabled(Feature f) { | 
| -    return (enabled_ & (static_cast<uint64_t>(1) << f)) != 0; | 
| +    return (enabled_ & (V8_UINT64_C(1) << f)) != 0; | 
| } | 
| // Enable a specified feature within a scope. | 
| class Scope BASE_EMBEDDED { | 
| @@ -307,7 +307,7 @@ | 
| explicit Scope(Feature f) { | 
| ASSERT(CpuFeatures::IsSupported(f)); | 
| old_enabled_ = CpuFeatures::enabled_; | 
| -      CpuFeatures::enabled_ |= (static_cast<uint64_t>(1) << f); | 
| +      CpuFeatures::enabled_ |= (V8_UINT64_C(1) << f); | 
| } | 
| ~Scope() { CpuFeatures::enabled_ = old_enabled_; } | 
| private: | 
| @@ -355,8 +355,9 @@ | 
| void GetCode(CodeDesc* desc); | 
|  | 
| // Read/Modify the code target in the branch/call instruction at pc. | 
| -  inline static Address target_address_at(Address pc); | 
| -  inline static void set_target_address_at(Address pc, Address target); | 
| +  // On the x64 architecture, the address is absolute, not relative. | 
| +  static inline Address target_address_at(Address pc); | 
| +  static inline void set_target_address_at(Address pc, Address target); | 
|  | 
| // Distance between the address of the code target in the call instruction | 
| // and the return address | 
| @@ -387,13 +388,10 @@ | 
| void Align(int m); | 
|  | 
| // Stack | 
| -  void pushad(); | 
| -  void popad(); | 
| +  void pushfq(); | 
| +  void popfq(); | 
|  | 
| -  void pushfd(); | 
| -  void popfd(); | 
| - | 
| -  void push(const Immediate& x); | 
| +  void push(Immediate value); | 
| void push(Register src); | 
| void push(const Operand& src); | 
| void push(Label* label, RelocInfo::Mode relocation_mode); | 
| @@ -401,7 +399,7 @@ | 
| void pop(Register dst); | 
| void pop(const Operand& dst); | 
|  | 
| -  void enter(const Immediate& size); | 
| +  void enter(Immediate size); | 
| void leave(); | 
|  | 
| // Moves | 
| @@ -409,6 +407,10 @@ | 
| void movb(const Operand& dst, int8_t imm8); | 
| void movb(const Operand& dst, Register src); | 
|  | 
| +  void movl(Register dst, Register src); | 
| +  void movl(Register dst, const Operand& src); | 
| +  void movl(const Operand& dst, Register src); | 
| + | 
| void movq(Register dst, int32_t imm32); | 
| void movq(Register dst, Immediate x); | 
| void movq(Register dst, const Operand& src); | 
| @@ -515,7 +517,8 @@ | 
| void dec(Register dst); | 
| void dec(const Operand& dst); | 
|  | 
| -  void cdq(); | 
| +  // Sign-extends rax into rdx:rax. | 
| +  void cqo(); | 
|  | 
| void idiv(Register src); | 
|  | 
| @@ -830,6 +833,7 @@ | 
| inline void emitl(uint32_t x); | 
| inline void emit(Handle<Object> handle); | 
| inline void emitq(uint64_t x, RelocInfo::Mode rmode); | 
| +  inline void emitw(uint16_t x); | 
| void emit(Immediate x) { emitl(x.value_); } | 
|  | 
| // Emits a REX prefix that encodes a 64-bit operand size and | 
| @@ -858,6 +862,9 @@ | 
| // REX.W is set and REX.R clear. | 
| inline void emit_rex_64(const Operand& op); | 
|  | 
| +  // Emit a REX prefix that only sets REX.W to choose a 64-bit operand size. | 
| +  void emit_rex_64() { emit(0x48); } | 
| + | 
| // High bit of reg goes to REX.R, high bit of rm_reg goes to REX.B. | 
| // REX.W is clear. | 
| inline void emit_rex_32(Register reg, Register rm_reg); | 
|  |