| Index: src/hydrogen-instructions.h
 | 
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
 | 
| index fb45ee9d9f5133d7da803c33991da34b3ec78b77..b2bdeb061e2e5912e21e6cb5723f28593370f695 100644
 | 
| --- a/src/hydrogen-instructions.h
 | 
| +++ b/src/hydrogen-instructions.h
 | 
| @@ -148,7 +148,8 @@ class LChunkBuilder;
 | 
|    V(Simulate)                                  \
 | 
|    V(StackCheck)                                \
 | 
|    V(StoreContextSlot)                          \
 | 
| -  V(StoreGlobal)                               \
 | 
| +  V(StoreGlobalCell)                           \
 | 
| +  V(StoreGlobalGeneric)                        \
 | 
|    V(StoreKeyedFastElement)                     \
 | 
|    V(StoreKeyedSpecializedArrayElement)         \
 | 
|    V(StoreKeyedGeneric)                         \
 | 
| @@ -2878,11 +2879,11 @@ class HLoadGlobalGeneric: public HBinaryOperation {
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class HStoreGlobal: public HUnaryOperation {
 | 
| +class HStoreGlobalCell: public HUnaryOperation {
 | 
|   public:
 | 
| -  HStoreGlobal(HValue* value,
 | 
| -               Handle<JSGlobalPropertyCell> cell,
 | 
| -               bool check_hole_value)
 | 
| +  HStoreGlobalCell(HValue* value,
 | 
| +                   Handle<JSGlobalPropertyCell> cell,
 | 
| +                   bool check_hole_value)
 | 
|        : HUnaryOperation(value),
 | 
|          cell_(cell),
 | 
|          check_hole_value_(check_hole_value) {
 | 
| @@ -2897,7 +2898,7 @@ class HStoreGlobal: public HUnaryOperation {
 | 
|    }
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store_global")
 | 
| +  DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store_global_cell")
 | 
|  
 | 
|   private:
 | 
|    Handle<JSGlobalPropertyCell> cell_;
 | 
| @@ -2905,6 +2906,38 @@ class HStoreGlobal: public HUnaryOperation {
 | 
|  };
 | 
|  
 | 
|  
 | 
| +class HStoreGlobalGeneric: public HTemplateInstruction<3> {
 | 
| + public:
 | 
| +  HStoreGlobalGeneric(HValue* context,
 | 
| +                      HValue* global_object,
 | 
| +                      Handle<Object> name,
 | 
| +                      HValue* value)
 | 
| +      : name_(name) {
 | 
| +    SetOperandAt(0, context);
 | 
| +    SetOperandAt(1, global_object);
 | 
| +    SetOperandAt(2, value);
 | 
| +    set_representation(Representation::Tagged());
 | 
| +    SetAllSideEffects();
 | 
| +  }
 | 
| +
 | 
| +  HValue* context() { return OperandAt(0); }
 | 
| +  HValue* global_object() { return OperandAt(1); }
 | 
| +  Handle<Object> name() const { return name_; }
 | 
| +  HValue* value() { return OperandAt(2); }
 | 
| +
 | 
| +  virtual void PrintDataTo(StringStream* stream);
 | 
| +
 | 
| +  virtual Representation RequiredInputRepresentation(int index) const {
 | 
| +    return Representation::Tagged();
 | 
| +  }
 | 
| +
 | 
| +  DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store_global_generic")
 | 
| +
 | 
| + private:
 | 
| +  Handle<Object> name_;
 | 
| +};
 | 
| +
 | 
| +
 | 
|  class HLoadContextSlot: public HUnaryOperation {
 | 
|   public:
 | 
|    HLoadContextSlot(HValue* context , int slot_index)
 | 
| 
 |