| Index: src/ic/ic.h
|
| diff --git a/src/ic/ic.h b/src/ic/ic.h
|
| index 06ac716fd1b1936d7f6bca4f282ed34d62fc9b9c..743459c54d0d19aa6fd2885c87c1fc2387595f18 100644
|
| --- a/src/ic/ic.h
|
| +++ b/src/ic/ic.h
|
| @@ -114,7 +114,9 @@ class IC {
|
|
|
| static bool ICUseVector(Code::Kind kind) {
|
| return kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC ||
|
| - kind == Code::CALL_IC;
|
| + kind == Code::CALL_IC ||
|
| + (FLAG_vector_stores &&
|
| + (kind == Code::STORE_IC || kind == Code::KEYED_STORE_IC));
|
| }
|
|
|
| protected:
|
| @@ -497,7 +499,8 @@ class StoreIC : public IC {
|
| return StoreICState(flag).GetExtraICState();
|
| }
|
|
|
| - StoreIC(FrameDepth depth, Isolate* isolate) : IC(depth, isolate) {
|
| + StoreIC(FrameDepth depth, Isolate* isolate, FeedbackNexus* nexus = NULL)
|
| + : IC(depth, isolate, nexus) {
|
| DCHECK(IsStoreStub());
|
| }
|
|
|
| @@ -531,6 +534,8 @@ class StoreIC : public IC {
|
| bool LookupForWrite(LookupIterator* it, Handle<Object> value,
|
| JSReceiver::StoreFromKeyed store_mode);
|
|
|
| + static void Clear(Isolate* isolate, Code* host, StoreICNexus* nexus);
|
| +
|
| protected:
|
| // Stub accessors.
|
| Handle<Code> megamorphic_stub() override;
|
| @@ -594,7 +599,9 @@ class KeyedStoreIC : public StoreIC {
|
| return IcCheckTypeField::decode(extra_state);
|
| }
|
|
|
| - KeyedStoreIC(FrameDepth depth, Isolate* isolate) : StoreIC(depth, isolate) {
|
| + KeyedStoreIC(FrameDepth depth, Isolate* isolate,
|
| + KeyedStoreICNexus* nexus = NULL)
|
| + : StoreIC(depth, isolate, nexus) {
|
| DCHECK(target()->is_keyed_store_stub());
|
| }
|
|
|
| @@ -619,6 +626,8 @@ class KeyedStoreIC : public StoreIC {
|
| static Handle<Code> initialize_stub_in_optimized_code(
|
| Isolate* isolate, LanguageMode language_mode, State initialization_state);
|
|
|
| + static void Clear(Isolate* isolate, Code* host, KeyedStoreICNexus* nexus);
|
| +
|
| protected:
|
| virtual Handle<Code> pre_monomorphic_stub() const {
|
| return pre_monomorphic_stub(isolate(), language_mode());
|
|
|