Index: src/type-info.cc |
diff --git a/src/type-info.cc b/src/type-info.cc |
index 5b9a71dcb9bae6dc5aed3cc78f301ba27cb08175..9f50a38509590511a94c2c9d7993329ecf2e5539 100644 |
--- a/src/type-info.cc |
+++ b/src/type-info.cc |
@@ -101,16 +101,21 @@ byte TypeFeedbackOracle::ForInType(int feedback_vector_slot) { |
} |
-KeyedAccessStoreMode TypeFeedbackOracle::GetStoreMode( |
- TypeFeedbackId ast_id) { |
+void TypeFeedbackOracle::GetStoreModeAndKeyType( |
+ TypeFeedbackId ast_id, KeyedAccessStoreMode* store_mode, |
+ IcCheckType* key_type) { |
Handle<Object> maybe_code = GetInfo(ast_id); |
if (maybe_code->IsCode()) { |
Handle<Code> code = Handle<Code>::cast(maybe_code); |
if (code->kind() == Code::KEYED_STORE_IC) { |
- return KeyedStoreIC::GetKeyedAccessStoreMode(code->extra_ic_state()); |
+ ExtraICState extra_ic_state = code->extra_ic_state(); |
+ *store_mode = KeyedStoreIC::GetKeyedAccessStoreMode(extra_ic_state); |
+ *key_type = KeyedStoreIC::GetKeyType(extra_ic_state); |
+ return; |
} |
} |
- return STANDARD_STORE; |
+ *store_mode = STANDARD_STORE; |
+ *key_type = ELEMENT; |
} |
@@ -271,10 +276,10 @@ void TypeFeedbackOracle::AssignmentReceiverTypes( |
void TypeFeedbackOracle::KeyedAssignmentReceiverTypes( |
TypeFeedbackId id, SmallMapList* receiver_types, |
- KeyedAccessStoreMode* store_mode) { |
+ KeyedAccessStoreMode* store_mode, IcCheckType* key_type) { |
receiver_types->Clear(); |
CollectReceiverTypes(id, receiver_types); |
- *store_mode = GetStoreMode(id); |
+ GetStoreModeAndKeyType(id, store_mode, key_type); |
} |