| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 1c1375b06b8d84b4f55b6b92169ec3112e265e97..503ff9a3ba0c6a4a082c987002cac3e63f372f45 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -5266,6 +5266,7 @@ HOptimizedGraphBuilder::LookupGlobalProperty(Variable* var, LookupIterator* it,
|
| case LookupIterator::ACCESSOR:
|
| case LookupIterator::ACCESS_CHECK:
|
| case LookupIterator::INTERCEPTOR:
|
| + case LookupIterator::INTEGER_INDEXED_EXOTIC:
|
| case LookupIterator::NOT_FOUND:
|
| return kUseGeneric;
|
| case LookupIterator::DATA:
|
| @@ -6071,6 +6072,12 @@ bool HOptimizedGraphBuilder::PropertyAccessInfo::LookupInPrototypes() {
|
| }
|
|
|
|
|
| +bool HOptimizedGraphBuilder::PropertyAccessInfo::IsIntegerIndexedExotic() {
|
| + InstanceType instance_type = map_->instance_type();
|
| + return instance_type == JS_TYPED_ARRAY_TYPE && IsNonArrayIndexInteger(*name_);
|
| +}
|
| +
|
| +
|
| bool HOptimizedGraphBuilder::PropertyAccessInfo::CanAccessMonomorphic() {
|
| if (!CanInlinePropertyAccess(map_)) return false;
|
| if (IsJSObjectFieldAccessor()) return IsLoad();
|
| @@ -6080,6 +6087,7 @@ bool HOptimizedGraphBuilder::PropertyAccessInfo::CanAccessMonomorphic() {
|
| }
|
| if (!LookupDescriptor()) return false;
|
| if (IsFound()) return IsLoad() || !IsReadOnly();
|
| + if (IsIntegerIndexedExotic()) return false;
|
| if (!LookupInPrototypes()) return false;
|
| if (IsLoad()) return true;
|
|
|
|
|