| Index: src/ast.cc
|
| diff --git a/src/ast.cc b/src/ast.cc
|
| index e7f70c5010c2014ad7c196c23b63fffa8fa6b8b2..1cfa9a73c3b0618cf38673a9cc00f6c9c5ffe306 100644
|
| --- a/src/ast.cc
|
| +++ b/src/ast.cc
|
| @@ -434,7 +434,7 @@ void Property::RecordTypeFeedback(TypeFeedbackOracle* oracle,
|
| zone);
|
| } else if (oracle->LoadIsMegamorphicWithTypeInfo(this)) {
|
| receiver_types_.Reserve(kMaxKeyedPolymorphism, zone);
|
| - oracle->CollectKeyedReceiverTypes(this->id(), &receiver_types_);
|
| + oracle->CollectKeyedReceiverTypes(PropertyFeedbackId(), &receiver_types_);
|
| }
|
| }
|
|
|
| @@ -443,7 +443,8 @@ void Assignment::RecordTypeFeedback(TypeFeedbackOracle* oracle,
|
| Zone* zone) {
|
| Property* prop = target()->AsProperty();
|
| ASSERT(prop != NULL);
|
| - is_monomorphic_ = oracle->StoreIsMonomorphicNormal(this);
|
| + TypeFeedbackId id = AssignmentFeedbackId();
|
| + is_monomorphic_ = oracle->StoreIsMonomorphicNormal(id);
|
| receiver_types_.Clear();
|
| if (prop->key()->IsPropertyName()) {
|
| Literal* lit_key = prop->key()->AsLiteral();
|
| @@ -452,24 +453,26 @@ void Assignment::RecordTypeFeedback(TypeFeedbackOracle* oracle,
|
| oracle->StoreReceiverTypes(this, name, &receiver_types_);
|
| } else if (is_monomorphic_) {
|
| // Record receiver type for monomorphic keyed stores.
|
| - receiver_types_.Add(oracle->StoreMonomorphicReceiverType(this), zone);
|
| - } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) {
|
| + receiver_types_.Add(oracle->StoreMonomorphicReceiverType(id), zone);
|
| + } else if (oracle->StoreIsMegamorphicWithTypeInfo(id)) {
|
| receiver_types_.Reserve(kMaxKeyedPolymorphism, zone);
|
| - oracle->CollectKeyedReceiverTypes(this->id(), &receiver_types_);
|
| + oracle->CollectKeyedReceiverTypes(id, &receiver_types_);
|
| }
|
| }
|
|
|
|
|
| void CountOperation::RecordTypeFeedback(TypeFeedbackOracle* oracle,
|
| Zone* zone) {
|
| - is_monomorphic_ = oracle->StoreIsMonomorphicNormal(this);
|
| + TypeFeedbackId id = CountStoreFeedbackId();
|
| + is_monomorphic_ = oracle->StoreIsMonomorphicNormal(id);
|
| receiver_types_.Clear();
|
| if (is_monomorphic_) {
|
| // Record receiver type for monomorphic keyed stores.
|
| - receiver_types_.Add(oracle->StoreMonomorphicReceiverType(this), zone);
|
| - } else if (oracle->StoreIsMegamorphicWithTypeInfo(this)) {
|
| + receiver_types_.Add(
|
| + oracle->StoreMonomorphicReceiverType(id), zone);
|
| + } else if (oracle->StoreIsMegamorphicWithTypeInfo(id)) {
|
| receiver_types_.Reserve(kMaxKeyedPolymorphism, zone);
|
| - oracle->CollectKeyedReceiverTypes(this->id(), &receiver_types_);
|
| + oracle->CollectKeyedReceiverTypes(id, &receiver_types_);
|
| }
|
| }
|
|
|
|
|