| Index: src/mips/lithium-mips.h | 
| diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h | 
| index 45754aa437ad14370e5a38081261614d83be94c7..738a46434ba3f0360fd7faf8b25b559207f04b78 100644 | 
| --- a/src/mips/lithium-mips.h | 
| +++ b/src/mips/lithium-mips.h | 
| @@ -50,6 +50,7 @@ class LCodeGen; | 
| V(AccessArgumentsAt)                          \ | 
| V(AddI)                                       \ | 
| V(AllocateObject)                             \ | 
| +  V(Allocate)                                   \ | 
| V(ApplyArguments)                             \ | 
| V(ArgumentsElements)                          \ | 
| V(ArgumentsLength)                            \ | 
| @@ -173,6 +174,7 @@ class LCodeGen; | 
| V(Throw)                                      \ | 
| V(ToFastProperties)                           \ | 
| V(TransitionElementsKind)                     \ | 
| +  V(TrapAllocationMemento)                      \ | 
| V(Typeof)                                     \ | 
| V(TypeofIsAndBranch)                          \ | 
| V(UnaryMathOperation)                         \ | 
| @@ -1583,6 +1585,7 @@ class LThisFunction: public LTemplateInstruction<1, 0, 0> { | 
| class LContext: public LTemplateInstruction<1, 0, 0> { | 
| public: | 
| DECLARE_CONCRETE_INSTRUCTION(Context, "context") | 
| +  DECLARE_HYDROGEN_ACCESSOR(Context) | 
| }; | 
|  | 
|  | 
| @@ -1816,6 +1819,7 @@ class LNumberTagD: public LTemplateInstruction<1, 1, 2> { | 
| LOperand* temp2() { return temps_[1]; } | 
|  | 
| DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") | 
| +  DECLARE_HYDROGEN_ACCESSOR(Change) | 
| }; | 
|  | 
|  | 
| @@ -2000,10 +2004,10 @@ class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> { | 
| public: | 
| LTransitionElementsKind(LOperand* object, | 
| LOperand* new_map_temp, | 
| -                          LOperand* temp) { | 
| +                          LOperand* fixed_object_temp) { | 
| inputs_[0] = object; | 
| temps_[0] = new_map_temp; | 
| -    temps_[1] = temp; | 
| +    temps_[1] = fixed_object_temp; | 
| } | 
|  | 
| LOperand* object() { return inputs_[0]; } | 
| @@ -2023,6 +2027,22 @@ class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> { | 
| }; | 
|  | 
|  | 
| +class LTrapAllocationMemento : public LTemplateInstruction<0, 1, 1> { | 
| + public: | 
| +  LTrapAllocationMemento(LOperand* object, | 
| +                         LOperand* temp) { | 
| +    inputs_[0] = object; | 
| +    temps_[0] = temp; | 
| +  } | 
| + | 
| +  LOperand* object() { return inputs_[0]; } | 
| +  LOperand* temp() { return temps_[0]; } | 
| + | 
| +  DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento, | 
| +                               "trap-allocation-memento") | 
| +}; | 
| + | 
| + | 
| class LStringAdd: public LTemplateInstruction<1, 2, 0> { | 
| public: | 
| LStringAdd(LOperand* left, LOperand* right) { | 
| @@ -2203,7 +2223,7 @@ class LClampTToUint8: public LTemplateInstruction<1, 1, 1> { | 
| }; | 
|  | 
|  | 
| -class LAllocateObject: public LTemplateInstruction<1, 0, 2> { | 
| +class LAllocateObject: public LTemplateInstruction<1, 1, 2> { | 
| public: | 
| LAllocateObject(LOperand* temp, LOperand* temp2) { | 
| temps_[0] = temp; | 
| @@ -2218,6 +2238,23 @@ class LAllocateObject: public LTemplateInstruction<1, 0, 2> { | 
| }; | 
|  | 
|  | 
| +class LAllocate: public LTemplateInstruction<1, 2, 2> { | 
| + public: | 
| +  LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) { | 
| +    inputs_[1] = size; | 
| +    temps_[0] = temp1; | 
| +    temps_[1] = temp2; | 
| +  } | 
| + | 
| +  LOperand* size() { return inputs_[1]; } | 
| +  LOperand* temp1() { return temps_[0]; } | 
| +  LOperand* temp2() { return temps_[1]; } | 
| + | 
| +  DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate") | 
| +  DECLARE_HYDROGEN_ACCESSOR(Allocate) | 
| +}; | 
| + | 
| + | 
| class LFastLiteral: public LTemplateInstruction<1, 0, 0> { | 
| public: | 
| DECLARE_CONCRETE_INSTRUCTION(FastLiteral, "fast-literal") | 
|  |