Chromium Code Reviews| Index: src/ast.cc |
| diff --git a/src/ast.cc b/src/ast.cc |
| index 03df229963ec00771500449589e04640e657c2df..18412df9d6abb1f266a970b88232adcb59fde528 100644 |
| --- a/src/ast.cc |
| +++ b/src/ast.cc |
| @@ -607,6 +607,10 @@ void Property::RecordTypeFeedback(TypeFeedbackOracle* oracle) { |
| is_string_access_ = true; |
| } else if (is_monomorphic_) { |
| monomorphic_receiver_type_ = oracle->LoadMonomorphicReceiverType(this); |
| + } else if (oracle->LoadIsMegamorphicWithTypeInfo(this)) { |
| + // TODO(jkummerow): use constant instead of "4". |
|
fschneider
2011/06/17 08:59:34
You could use sth. like kMaxKeyedLoadPolymorphism.
Jakob Kummerow
2011/06/17 17:43:14
Done.
|
| + receiver_types_ = new ZoneMapList(4); |
| + oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_); |
| } |
| } |
| @@ -622,8 +626,12 @@ void Assignment::RecordTypeFeedback(TypeFeedbackOracle* oracle) { |
| ZoneMapList* types = oracle->StoreReceiverTypes(this, name); |
| receiver_types_ = types; |
| } else if (is_monomorphic_) { |
| - // Record receiver type for monomorphic keyed loads. |
| + // Record receiver type for monomorphic keyed stores. |
| monomorphic_receiver_type_ = oracle->StoreMonomorphicReceiverType(this); |
| + } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) { |
| + // TODO(jkummerow): use constant instead of "4". |
| + receiver_types_ = new ZoneMapList(4); |
| + oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_); |
| } |
| } |
| @@ -631,8 +639,12 @@ void Assignment::RecordTypeFeedback(TypeFeedbackOracle* oracle) { |
| void CountOperation::RecordTypeFeedback(TypeFeedbackOracle* oracle) { |
| is_monomorphic_ = oracle->StoreIsMonomorphicNormal(this); |
| if (is_monomorphic_) { |
| - // Record receiver type for monomorphic keyed loads. |
| + // Record receiver type for monomorphic keyed stores. |
| monomorphic_receiver_type_ = oracle->StoreMonomorphicReceiverType(this); |
| + } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) { |
| + // TODO(jkummerow): use constant instead of "4". |
| + receiver_types_ = new ZoneMapList(4); |
| + oracle->CollectKeyedReceiverTypes(this->id(), receiver_types_); |
| } |
| } |