Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index bdfa23cde59d32626192b08ec182f5e2784550e6..94a29febb1cf897fae97a168dc893fa2405c78ee 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -4857,28 +4857,13 @@ void JSObject::TransformToFastProperties(Handle<JSObject> object, |
void JSObject::ResetElements(Handle<JSObject> object) { |
- if (object->map()->is_observed()) { |
- // Maintain invariant that observed elements are always in dictionary mode. |
- Isolate* isolate = object->GetIsolate(); |
- Factory* factory = isolate->factory(); |
- Handle<SeededNumberDictionary> dictionary = |
- SeededNumberDictionary::New(isolate, 0); |
- if (object->map() == *factory->sloppy_arguments_elements_map()) { |
- FixedArray::cast(object->elements())->set(1, *dictionary); |
- } else { |
- object->set_elements(*dictionary); |
- } |
- return; |
- } |
- |
- ElementsKind elements_kind = GetInitialFastElementsKind(); |
- if (!FLAG_smi_only_arrays) { |
- elements_kind = FastSmiToObjectElementsKind(elements_kind); |
+ Heap* heap = object->GetIsolate()->heap(); |
+ if (object->map() == heap->sloppy_arguments_elements_map()) { |
Toon Verwaest
2014/06/12 21:58:03
Are you sure this can ever happen? We never handle
Jakob Kummerow
2014/06/13 11:56:18
Agreed, I don't see how this can happen, and it do
|
+ FixedArray::cast(object->elements())->set( |
+ 1, heap->empty_slow_element_dictionary()); |
+ } else { |
+ object->set_elements(object->map()->GetInitialElements()); |
} |
- Handle<Map> map = JSObject::GetElementsTransitionMap(object, elements_kind); |
- DisallowHeapAllocation no_gc; |
- Handle<FixedArrayBase> elements(map->GetInitialElements()); |
- JSObject::SetMapAndElements(object, map, elements); |
} |