Index: src/ic/ic.h |
diff --git a/src/ic/ic.h b/src/ic/ic.h |
index 9223e7dce8e6e16d396c6bf006813fe8bf7f6e41..6002d9291383819645f1b97f46549c3e5a402372 100644 |
--- a/src/ic/ic.h |
+++ b/src/ic/ic.h |
@@ -122,6 +122,11 @@ class IC { |
// Configure the vector for POLYMORPHIC. |
void ConfigureVectorState(Handle<Name> name, MapHandleList* maps, |
CodeHandleList* handlers); |
+ // Configure the vector for POLYMORPHIC with transitions (only for element |
+ // keyed stores). |
+ void ConfigureVectorState(MapHandleList* maps, |
+ MapHandleList* transitioned_maps, |
+ CodeHandleList* handlers); |
char TransitionMarkFromState(IC::State state); |
void TraceIC(const char* type, Handle<Object> name); |
@@ -538,10 +543,17 @@ class KeyedStoreIC : public StoreIC { |
static KeyedAccessStoreMode GetKeyedAccessStoreMode( |
ExtraICState extra_state) { |
+ DCHECK(!FLAG_vector_stores); |
return ExtraICStateKeyedAccessStoreMode::decode(extra_state); |
} |
+ KeyedAccessStoreMode GetKeyedAccessStoreMode() { |
+ DCHECK(FLAG_vector_stores); |
+ return casted_nexus<KeyedStoreICNexus>()->GetKeyedAccessStoreMode(); |
+ } |
+ |
static IcCheckType GetKeyType(ExtraICState extra_state) { |
+ DCHECK(!FLAG_vector_stores); |
return IcCheckTypeField::decode(extra_state); |
} |
@@ -571,6 +583,8 @@ class KeyedStoreIC : public StoreIC { |
static Handle<Code> initialize_stub_in_optimized_code( |
Isolate* isolate, LanguageMode language_mode, State initialization_state); |
+ static Handle<Code> ChooseMegamorphicStub(Isolate* isolate, |
+ ExtraICState extra_state); |
static void Clear(Isolate* isolate, Code* host, KeyedStoreICNexus* nexus); |