| Index: src/ic.h | 
| diff --git a/src/ic.h b/src/ic.h | 
| index 409ad3806d81b2b7b30a3d02df16b516b3da4c1b..3b10d064f6878ff4852f26e630fd8f1dbb540f22 100644 | 
| --- a/src/ic.h | 
| +++ b/src/ic.h | 
| @@ -398,9 +398,16 @@ class KeyedLoadIC: public IC { | 
|  | 
| class StoreIC: public IC { | 
| public: | 
| + | 
| +  enum StoreICStrictMode { | 
| +    kStoreICNonStrict = kNonStrictMode, | 
| +    kStoreICStrict = kStrictMode | 
| +  }; | 
| + | 
| StoreIC() : IC(NO_EXTRA_FRAME) { ASSERT(target()->is_store_stub()); } | 
|  | 
| MUST_USE_RESULT MaybeObject* Store(State state, | 
| +                                     Code::ExtraICState extra_ic_state, | 
| Handle<Object> object, | 
| Handle<String> name, | 
| Handle<Object> value); | 
| @@ -408,7 +415,8 @@ class StoreIC: public IC { | 
| // Code generators for stub routines. Only called once at startup. | 
| static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } | 
| static void GenerateMiss(MacroAssembler* masm); | 
| -  static void GenerateMegamorphic(MacroAssembler* masm); | 
| +  static void GenerateMegamorphic(MacroAssembler* masm, | 
| +                                  Code::ExtraICState extra_ic_state); | 
| static void GenerateArrayLength(MacroAssembler* masm); | 
| static void GenerateNormal(MacroAssembler* masm); | 
| static void GenerateGlobalProxy(MacroAssembler* masm); | 
| @@ -424,7 +432,9 @@ class StoreIC: public IC { | 
| // Update the inline cache and the global stub cache based on the | 
| // lookup result. | 
| void UpdateCaches(LookupResult* lookup, | 
| -                    State state, Handle<JSObject> receiver, | 
| +                    State state, | 
| +                    Code::ExtraICState extra_ic_state, | 
| +                    Handle<JSObject> receiver, | 
| Handle<String> name, | 
| Handle<Object> value); | 
|  | 
| @@ -432,12 +442,21 @@ class StoreIC: public IC { | 
| static Code* megamorphic_stub() { | 
| return Builtins::builtin(Builtins::StoreIC_Megamorphic); | 
| } | 
| +  static Code* megamorphic_stub_strict() { | 
| +    return Builtins::builtin(Builtins::StoreIC_Megamorphic_Strict); | 
| +  } | 
| static Code* initialize_stub() { | 
| return Builtins::builtin(Builtins::StoreIC_Initialize); | 
| } | 
| +  static Code* initialize_stub_strict() { | 
| +    return Builtins::builtin(Builtins::StoreIC_Initialize_Strict); | 
| +  } | 
| static Code* global_proxy_stub() { | 
| return Builtins::builtin(Builtins::StoreIC_GlobalProxy); | 
| } | 
| +  static Code* global_proxy_stub_strict() { | 
| +    return Builtins::builtin(Builtins::StoreIC_GlobalProxy_Strict); | 
| +  } | 
|  | 
| static void Clear(Address address, Code* target); | 
|  | 
|  |