| Index: src/ia32/macro-assembler-ia32.h
 | 
| diff --git a/src/ia32/macro-assembler-ia32.h b/src/ia32/macro-assembler-ia32.h
 | 
| index dd90650f6d588d63fa260a7f8bfd43399f64b63c..f57bdb7e866eb62bb23d76216f02e7c8b6b3ad21 100644
 | 
| --- a/src/ia32/macro-assembler-ia32.h
 | 
| +++ b/src/ia32/macro-assembler-ia32.h
 | 
| @@ -71,6 +71,16 @@ class MacroAssembler: public Assembler {
 | 
|    void Load(Register dst, const Operand& src, Representation r);
 | 
|    void Store(Register src, const Operand& dst, Representation r);
 | 
|  
 | 
| +  // Load a register with a long value as efficiently as possible.
 | 
| +  void Set(Register dst, int32_t x) {
 | 
| +    if (x == 0) {
 | 
| +      xor_(dst, dst);
 | 
| +    } else {
 | 
| +      mov(dst, Immediate(x));
 | 
| +    }
 | 
| +  }
 | 
| +  void Set(const Operand& dst, int32_t x) { mov(dst, Immediate(x)); }
 | 
| +
 | 
|    // Operations on roots in the root-array.
 | 
|    void LoadRoot(Register destination, Heap::RootListIndex index);
 | 
|    void StoreRoot(Register source, Register scratch, Heap::RootListIndex index);
 | 
| @@ -79,6 +89,22 @@ class MacroAssembler: public Assembler {
 | 
|    // and not in new space).
 | 
|    void CompareRoot(Register with, Heap::RootListIndex index);
 | 
|    void CompareRoot(const Operand& with, Heap::RootListIndex index);
 | 
| +  void PushRoot(Heap::RootListIndex index);
 | 
| +
 | 
| +  // Compare the object in a register to a value and jump if they are equal.
 | 
| +  void JumpIfRoot(Register with, Heap::RootListIndex index, Label* if_equal,
 | 
| +                  Label::Distance if_equal_distance = Label::kNear) {
 | 
| +    CompareRoot(with, index);
 | 
| +    j(equal, if_equal, if_equal_distance);
 | 
| +  }
 | 
| +
 | 
| +  // Compare the object in a register to a value and jump if they are not equal.
 | 
| +  void JumpIfNotRoot(Register with, Heap::RootListIndex index,
 | 
| +                     Label* if_not_equal,
 | 
| +                     Label::Distance if_not_equal_distance = Label::kNear) {
 | 
| +    CompareRoot(with, index);
 | 
| +    j(not_equal, if_not_equal, if_not_equal_distance);
 | 
| +  }
 | 
|  
 | 
|    // ---------------------------------------------------------------------------
 | 
|    // GC Support
 | 
| @@ -262,6 +288,9 @@ class MacroAssembler: public Assembler {
 | 
|    // Find the function context up the context chain.
 | 
|    void LoadContext(Register dst, int context_chain_length);
 | 
|  
 | 
| +  // Load the global proxy from the current context.
 | 
| +  void LoadGlobalProxy(Register dst);
 | 
| +
 | 
|    // Conditionally load the cached Array transitioned map of type
 | 
|    // transitioned_kind from the native context if the map in register
 | 
|    // map_in_out is the cached Array map in the native context of
 | 
| @@ -565,6 +594,9 @@ class MacroAssembler: public Assembler {
 | 
|    // Abort execution if argument is not a name, enabled via --debug-code.
 | 
|    void AssertName(Register object);
 | 
|  
 | 
| +  // Abort execution if argument is not a JSFunction, enabled via --debug-code.
 | 
| +  void AssertFunction(Register object);
 | 
| +
 | 
|    // Abort execution if argument is not undefined or an AllocationSite, enabled
 | 
|    // via --debug-code.
 | 
|    void AssertUndefinedOrAllocationSite(Register object);
 | 
| @@ -803,8 +835,14 @@ class MacroAssembler: public Assembler {
 | 
|    void Drop(int element_count);
 | 
|  
 | 
|    void Call(Label* target) { call(target); }
 | 
| +  void Call(Handle<Code> target, RelocInfo::Mode rmode) { call(target, rmode); }
 | 
| +  void Jump(Handle<Code> target, RelocInfo::Mode rmode) { jmp(target, rmode); }
 | 
|    void Push(Register src) { push(src); }
 | 
| +  void Push(const Operand& src) { push(src); }
 | 
| +  void Push(Immediate value) { push(value); }
 | 
|    void Pop(Register dst) { pop(dst); }
 | 
| +  void PushReturnAddressFrom(Register src) { push(src); }
 | 
| +  void PopReturnAddressTo(Register dst) { pop(dst); }
 | 
|  
 | 
|    // Non-SSE2 instructions.
 | 
|    void Pextrd(Register dst, XMMRegister src, int8_t imm8);
 | 
| 
 |