Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 85eb3f266ecdb135e0ac8081d2b0d08bdd330477..d1ddc8dc481a6778c878e05229344bef86bd22b5 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -950,7 +950,7 @@ class DictionaryElementsAccessor |
Handle<Object> value, |
PropertyAttributes attributes) { |
SeededNumberDictionary* dictionary = SeededNumberDictionary::cast(*store); |
- if (attributes != NONE) dictionary->set_requires_slow_elements(); |
+ if (attributes != NONE) object->RequireSlowElements(dictionary); |
dictionary->ValueAtPut(entry, *value); |
PropertyDetails details = dictionary->DetailsAt(entry); |
details = PropertyDetails(attributes, DATA, details.dictionary_index(), |
@@ -969,7 +969,7 @@ class DictionaryElementsAccessor |
Handle<SeededNumberDictionary> new_dictionary = |
SeededNumberDictionary::AddNumberEntry(dictionary, index, value, |
details); |
- if (attributes != NONE) new_dictionary->set_requires_slow_elements(); |
+ if (attributes != NONE) object->RequireSlowElements(*new_dictionary); |
if (dictionary.is_identical_to(new_dictionary)) return; |
object->set_elements(*new_dictionary); |
} |
@@ -1614,7 +1614,7 @@ class SlowSloppyArgumentsElementsAccessor |
Handle<SeededNumberDictionary> new_dictionary = |
SeededNumberDictionary::AddNumberEntry(dictionary, index, value, |
details); |
- if (attributes != NONE) new_dictionary->set_requires_slow_elements(); |
+ if (attributes != NONE) object->RequireSlowElements(*new_dictionary); |
if (*dictionary != *new_dictionary) { |
FixedArray::cast(object->elements())->set(1, *new_dictionary); |
} |
@@ -1647,6 +1647,10 @@ class SlowSloppyArgumentsElementsAccessor |
SeededNumberDictionary::cast(parameter_map->get(1))); |
arguments = SeededNumberDictionary::AddNumberEntry(arguments, entry, |
value, details); |
+ // If the attributes were NONE, we would have called set rather than |
+ // reconfigure. |
+ DCHECK_NE(NONE, attributes); |
+ object->RequireSlowElements(*arguments); |
parameter_map->set(1, *arguments); |
} else { |
Handle<FixedArrayBase> arguments( |