| Index: src/ic/handler-compiler.cc
|
| diff --git a/src/ic/handler-compiler.cc b/src/ic/handler-compiler.cc
|
| index bd3f0a566bfadbf22990fa1048c6e0c5c9257bdb..c434ce515eba39fc814e29e2715225c8a7c3f155 100644
|
| --- a/src/ic/handler-compiler.cc
|
| +++ b/src/ic/handler-compiler.cc
|
| @@ -536,6 +536,13 @@ void ElementHandlerCompiler::CompileElementHandlers(
|
| } else {
|
| bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE;
|
| ElementsKind elements_kind = receiver_map->elements_kind();
|
| +
|
| + // No need to check for an elements-free prototype chain here, the
|
| + // generated stub code needs to check that dynamically anyway.
|
| + bool convert_hole_to_undefined =
|
| + is_js_array && elements_kind == FAST_HOLEY_ELEMENTS &&
|
| + *receiver_map == isolate()->get_initial_js_array_map(elements_kind);
|
| +
|
| if (receiver_map->has_indexed_interceptor()) {
|
| cached_stub = LoadIndexedInterceptorStub(isolate()).GetCode();
|
| } else if (IsSloppyArgumentsElements(elements_kind)) {
|
| @@ -543,8 +550,8 @@ void ElementHandlerCompiler::CompileElementHandlers(
|
| } else if (IsFastElementsKind(elements_kind) ||
|
| IsExternalArrayElementsKind(elements_kind) ||
|
| IsFixedTypedArrayElementsKind(elements_kind)) {
|
| - cached_stub = LoadFastElementStub(isolate(), is_js_array, elements_kind)
|
| - .GetCode();
|
| + cached_stub = LoadFastElementStub(isolate(), is_js_array, elements_kind,
|
| + convert_hole_to_undefined).GetCode();
|
| } else {
|
| DCHECK(elements_kind == DICTIONARY_ELEMENTS);
|
| cached_stub = LoadDictionaryElementStub(isolate()).GetCode();
|
|
|