diff options
Diffstat (limited to 'deps/v8/src/ic.h')
-rw-r--r-- | deps/v8/src/ic.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/deps/v8/src/ic.h b/deps/v8/src/ic.h index 409ad3806..3b10d064f 100644 --- a/deps/v8/src/ic.h +++ b/deps/v8/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); |