Chromium Code Reviews| Index: src/hydrogen.cc |
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
| index 74434cd528b9dbc95bdb7e7f17fd1acbe57981dd..e96207f44362467d6e70e214f3f50fd8ff07ccea 100644 |
| --- a/src/hydrogen.cc |
| +++ b/src/hydrogen.cc |
| @@ -6989,16 +6989,23 @@ HInstruction* HOptimizedGraphBuilder::BuildKeyedGeneric( |
| LoadKeyedHoleMode HOptimizedGraphBuilder::BuildKeyedHoleMode(Handle<Map> map) { |
| // Loads from a "stock" fast holey double arrays can elide the hole check. |
| + // Loads from a "stock" fast holey array can convert the hole to undefined |
| + // with impunity. |
| LoadKeyedHoleMode load_mode = NEVER_RETURN_HOLE; |
| - if (*map == isolate()->get_initial_js_array_map(FAST_HOLEY_DOUBLE_ELEMENTS) && |
| + Map* holey_double_elements = |
|
Jakob Kummerow
2015/04/23 13:40:00
Suggestion: "bool holey_double_elements = *map ==
mvstanton
2015/04/27 07:57:12
Done.
|
| + isolate()->get_initial_js_array_map(FAST_HOLEY_DOUBLE_ELEMENTS); |
| + Map* holey_elements = |
| + isolate()->get_initial_js_array_map(FAST_HOLEY_ELEMENTS); |
| + if ((*map == holey_double_elements || *map == holey_elements) && |
| isolate()->IsFastArrayConstructorPrototypeChainIntact()) { |
| + load_mode = *map == holey_double_elements ? ALLOW_RETURN_HOLE |
| + : CONVERT_HOLE_TO_UNDEFINED; |
| + |
| Handle<JSObject> prototype(JSObject::cast(map->prototype()), isolate()); |
| Handle<JSObject> object_prototype = isolate()->initial_object_prototype(); |
| BuildCheckPrototypeMaps(prototype, object_prototype); |
| - load_mode = ALLOW_RETURN_HOLE; |
| graph()->MarkDependsOnEmptyArrayProtoElements(); |
| } |
| - |
| return load_mode; |
| } |