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; |