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