Index: src/ast.cc |
diff --git a/src/ast.cc b/src/ast.cc |
index 9deb71d0afeb9667a586c0600756d01be9db983c..adf0fb8703dc68800cf8b34fbf1624d71a70383f 100644 |
--- a/src/ast.cc |
+++ b/src/ast.cc |
@@ -776,7 +776,7 @@ void Call::RecordTypeFeedback(TypeFeedbackOracle* oracle, |
if (property == NULL) { |
// Function call. Specialize for monomorphic calls. |
if (is_monomorphic_) target_ = oracle->GetCallTarget(this); |
- } else { |
+ } else if (property->key()->IsPropertyName()) { |
// Method call. Specialize for the receiver types seen at runtime. |
Literal* key = property->key()->AsLiteral(); |
ASSERT(key != NULL && key->value()->IsString()); |
@@ -803,6 +803,10 @@ void Call::RecordTypeFeedback(TypeFeedbackOracle* oracle, |
Handle<Map> map = receiver_types_.first(); |
is_monomorphic_ = ComputeTarget(map, name); |
} |
+ } else { |
+ if (is_monomorphic_) { |
+ keyed_array_call_is_holey_ = oracle->KeyedArrayCallIsHoley(this); |
+ } |
} |
} |