Commit cb80ef31 authored by bmeurer's avatar bmeurer Committed by Commit bot

[turbofan] Fix deopt loop due to forgetting maps on Merge.

When we merge two NotFound access infos, we currently forgot to include
all the maps into the final PropertyAccessInfo, which results in a deopt
loop.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2625413003
Cr-Commit-Position: refs/heads/master@{#42332}
parent 83f19e7d
...@@ -146,9 +146,6 @@ bool PropertyAccessInfo::Merge(PropertyAccessInfo const* that) { ...@@ -146,9 +146,6 @@ bool PropertyAccessInfo::Merge(PropertyAccessInfo const* that) {
case kInvalid: case kInvalid:
break; break;
case kNotFound:
return true;
case kDataField: { case kDataField: {
// Check if we actually access the same field. // Check if we actually access the same field.
if (this->transition_map_.address() == that->transition_map_.address() && if (this->transition_map_.address() == that->transition_map_.address() &&
...@@ -175,6 +172,8 @@ bool PropertyAccessInfo::Merge(PropertyAccessInfo const* that) { ...@@ -175,6 +172,8 @@ bool PropertyAccessInfo::Merge(PropertyAccessInfo const* that) {
} }
return false; return false;
} }
case kNotFound:
case kGeneric: { case kGeneric: {
this->receiver_maps_.insert(this->receiver_maps_.end(), this->receiver_maps_.insert(this->receiver_maps_.end(),
that->receiver_maps_.begin(), that->receiver_maps_.begin(),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment