| Index: src/arm/lithium-arm.h
 | 
| ===================================================================
 | 
| --- src/arm/lithium-arm.h	(revision 9808)
 | 
| +++ src/arm/lithium-arm.h	(working copy)
 | 
| @@ -162,6 +162,7 @@
 | 
|    V(ThisFunction)                               \
 | 
|    V(Throw)                                      \
 | 
|    V(ToFastProperties)                           \
 | 
| +  V(TransitionElementsKind)                     \
 | 
|    V(Typeof)                                     \
 | 
|    V(TypeofIsAndBranch)                          \
 | 
|    V(UnaryMathOperation)                         \
 | 
| @@ -1260,7 +1261,6 @@
 | 
|    LOperand* context() { return InputAt(0); }
 | 
|    LOperand* value() { return InputAt(1); }
 | 
|    int slot_index() { return hydrogen()->slot_index(); }
 | 
| -  int needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
 | 
|  
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  };
 | 
| @@ -1277,7 +1277,9 @@
 | 
|  
 | 
|  
 | 
|  class LThisFunction: public LTemplateInstruction<1, 0, 0> {
 | 
| + public:
 | 
|    DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(ThisFunction)
 | 
|  };
 | 
|  
 | 
|  
 | 
| @@ -1561,7 +1563,6 @@
 | 
|    Handle<Object> name() const { return hydrogen()->name(); }
 | 
|    bool is_in_object() { return hydrogen()->is_in_object(); }
 | 
|    int offset() { return hydrogen()->offset(); }
 | 
| -  bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
 | 
|    Handle<Map> transition() const { return hydrogen()->transition(); }
 | 
|  };
 | 
|  
 | 
| @@ -1581,7 +1582,8 @@
 | 
|    LOperand* object() { return inputs_[0]; }
 | 
|    LOperand* value() { return inputs_[1]; }
 | 
|    Handle<Object> name() const { return hydrogen()->name(); }
 | 
| -  bool strict_mode() { return hydrogen()->strict_mode(); }
 | 
| +  StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
 | 
| +  bool strict_mode() { return strict_mode_flag() == kStrictMode; }
 | 
|  };
 | 
|  
 | 
|  
 | 
| @@ -1669,6 +1671,30 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| +class LTransitionElementsKind: public LTemplateInstruction<1, 1, 2> {
 | 
| + public:
 | 
| +  LTransitionElementsKind(LOperand* object,
 | 
| +                          LOperand* new_map_temp,
 | 
| +                          LOperand* temp_reg) {
 | 
| +    inputs_[0] = object;
 | 
| +    temps_[0] = new_map_temp;
 | 
| +    temps_[1] = temp_reg;
 | 
| +  }
 | 
| +
 | 
| +  DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
 | 
| +                               "transition-elements-kind")
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
 | 
| +
 | 
| +  virtual void PrintDataTo(StringStream* stream);
 | 
| +
 | 
| +  LOperand* object() { return inputs_[0]; }
 | 
| +  LOperand* new_map_reg() { return temps_[0]; }
 | 
| +  LOperand* temp_reg() { return temps_[1]; }
 | 
| +  Handle<Map> original_map() { return hydrogen()->original_map(); }
 | 
| +  Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
 | 
| +};
 | 
| +
 | 
| +
 | 
|  class LStringAdd: public LTemplateInstruction<1, 2, 0> {
 | 
|   public:
 | 
|    LStringAdd(LOperand* left, LOperand* right) {
 | 
| 
 |