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