Index: src/runtime/runtime-array.cc |
diff --git a/src/runtime/runtime-array.cc b/src/runtime/runtime-array.cc |
index e29ecd6c83727c57be00751bc2bac3cbdebbfa38..3e05f766ab8b3d1e473acab1cb7214bff83bbb97 100644 |
--- a/src/runtime/runtime-array.cc |
+++ b/src/runtime/runtime-array.cc |
@@ -154,8 +154,10 @@ class ArrayConcatVisitor { |
DCHECK(!fast_elements()); |
Handle<SeededNumberDictionary> dict( |
SeededNumberDictionary::cast(*storage_)); |
+ // The object holding this backing store has just been allocated, so |
+ // it cannot yet be used as a prototype. |
Handle<SeededNumberDictionary> result = |
- SeededNumberDictionary::AtNumberPut(dict, index, elm); |
+ SeededNumberDictionary::AtNumberPut(dict, index, elm, false); |
if (!result.is_identical_to(dict)) { |
// Dictionary needed to grow. |
clear_storage(); |
@@ -207,8 +209,11 @@ class ArrayConcatVisitor { |
HandleScope loop_scope(isolate_); |
Handle<Object> element(current_storage->get(i), isolate_); |
if (!element->IsTheHole()) { |
+ // The object holding this backing store has just been allocated, so |
+ // it cannot yet be used as a prototype. |
Handle<SeededNumberDictionary> new_storage = |
- SeededNumberDictionary::AtNumberPut(slow_storage, i, element); |
+ SeededNumberDictionary::AtNumberPut(slow_storage, i, element, |
+ false); |
if (!new_storage.is_identical_to(slow_storage)) { |
slow_storage = loop_scope.CloseAndEscape(new_storage); |
} |