Index: src/ast.cc |
diff --git a/src/ast.cc b/src/ast.cc |
index 5f085d358812bde87e35eb8411ff9d0f76d06979..25893b8683bbe7d747f5c3ddcf65fced47ec4651 100644 |
--- a/src/ast.cc |
+++ b/src/ast.cc |
@@ -638,7 +638,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()); |
@@ -665,6 +665,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); |
+ } |
} |
} |