| 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);
|
|
|
|
|