diff --git a/src/ast.cc b/src/ast.cc index fa01be016c..0922d85056 100644 --- a/src/ast.cc +++ b/src/ast.cc @@ -239,12 +239,19 @@ void ObjectLiteral::CalculateEmitStore() { HashMap* table; void* key; uint32_t index; + Smi* smi_key_location; if (handle->IsSymbol()) { Handle name(String::cast(*handle)); - ASSERT(!name->AsArrayIndex(&index)); - key = name.location(); - hash = name->Hash(); - table = &properties; + if (name->AsArrayIndex(&index)) { + smi_key_location = Smi::FromInt(index); + key = &smi_key_location; + hash = index; + table = &elements; + } else { + key = name.location(); + hash = name->Hash(); + table = &properties; + } } else if (handle->ToArrayIndex(&index)) { key = handle.location(); hash = index;