Index: src/ic/ia32/ic-compiler-ia32.cc |
diff --git a/src/ic/ia32/ic-compiler-ia32.cc b/src/ic/ia32/ic-compiler-ia32.cc |
index 6ad95a191f97cc9c98e192d7cfa4bcb09f585ae1..f43b641134d873e5af26eafedcaee4d9a93170ce 100644 |
--- a/src/ic/ia32/ic-compiler-ia32.cc |
+++ b/src/ic/ia32/ic-compiler-ia32.cc |
@@ -44,10 +44,13 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types, |
Label miss; |
if (check == PROPERTY && |
- (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) { |
- // In case we are compiling an IC for dictionary loads and stores, just |
+ (kind() == Code::KEYED_STORE_IC || kind() == Code::KEYED_LOAD_IC)) { |
+ // In case we are compiling an IC for dictionary loads or stores, just |
// check whether the name is unique. |
if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) { |
+ // Keyed loads with dictionaries shouldn't be here, they go generic. |
+ // The DCHECK is to protect assumptions when --vector-ics is on. |
+ DCHECK(kind() != Code::KEYED_LOAD_IC); |
Register tmp = scratch1(); |
__ JumpIfSmi(this->name(), &miss); |
__ mov(tmp, FieldOperand(this->name(), HeapObject::kMapOffset)); |