Chromium Code Reviews| Index: src/lookup.cc |
| diff --git a/src/lookup.cc b/src/lookup.cc |
| index fa6d579122b618554de15db315a823262c5dfc52..82f615218238cca8437f9691fe79ab3057866e33 100644 |
| --- a/src/lookup.cc |
| +++ b/src/lookup.cc |
| @@ -194,6 +194,18 @@ void LookupIterator::InternalUpdateProtector() { |
| } else if (*name_ == heap()->has_instance_symbol()) { |
| if (!isolate_->IsHasInstanceLookupChainIntact()) return; |
| isolate_->InvalidateHasInstanceProtector(); |
| + } else if (*name_ == heap()->iterator_symbol()) { |
| + if (!isolate_->IsArrayIteratorLookupChainIntact()) return; |
| + if (holder_->IsJSArray()) { |
| + isolate_->InvalidateArrayIteratorProtector(); |
| + } |
| + } else if (*name_ == heap()->next_string()) { |
|
Benedikt Meurer
2016/11/10 12:32:59
As discussed offline, please check against the ini
|
| + if (!isolate_->IsArrayIteratorLookupChainIntact()) return; |
| + // Also invalidate the array iterator protector cell when the iterator |
| + // itself is changed. |
| + if (*holder_ == *isolate_->initial_array_iterator_prototype()) { |
| + isolate_->InvalidateArrayIteratorProtector(); |
| + } |
| } |
| } |