Chromium Code Reviews| Index: src/heap.cc |
| diff --git a/src/heap.cc b/src/heap.cc |
| index 3efcdf15dbf43c6d8f98a5971e1d7d7f49ec1f6b..ad57d2aa923a823d969710c3ba87aea6e08b02d5 100644 |
| --- a/src/heap.cc |
| +++ b/src/heap.cc |
| @@ -1605,7 +1605,9 @@ MaybeObject* Heap::AllocatePartialMap(InstanceType instance_type, |
| } |
| -MaybeObject* Heap::AllocateMap(InstanceType instance_type, int instance_size) { |
| +MaybeObject* Heap::AllocateMap(InstanceType instance_type, |
| + int instance_size, |
| + ElementsKind elements_kind) { |
| Object* result; |
| { MaybeObject* maybe_result = AllocateRawMap(); |
| if (!maybe_result->ToObject(&result)) return maybe_result; |
| @@ -1627,7 +1629,7 @@ MaybeObject* Heap::AllocateMap(InstanceType instance_type, int instance_size) { |
| map->set_unused_property_fields(0); |
| map->set_bit_field(0); |
| map->set_bit_field2(1 << Map::kIsExtensible); |
| - map->set_elements_kind(FAST_ELEMENTS); |
| + map->set_elements_kind(elements_kind); |
| // If the map object is aligned fill the padding area with Smi 0 objects. |
| if (Map::kPadStart < Map::kSize) { |
| @@ -2011,7 +2013,9 @@ bool Heap::CreateApiObjects() { |
| { MaybeObject* maybe_obj = AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); |
| if (!maybe_obj->ToObject(&obj)) return false; |
| } |
| - set_neander_map(Map::cast(obj)); |
| + Map* new_neander_map = Map::cast(obj); |
|
Rico
2011/09/16 09:40:10
Add comments why we don't wan't the smi optimizati
danno
2011/09/21 14:32:04
Done.
|
| + new_neander_map->set_elements_kind(FAST_ELEMENTS); |
| + set_neander_map(new_neander_map); |
| { MaybeObject* maybe_obj = AllocateJSObjectFromMap(neander_map()); |
| if (!maybe_obj->ToObject(&obj)) return false; |
| @@ -3377,7 +3381,8 @@ MaybeObject* Heap::AllocateJSObjectFromMap(Map* map, PretenureFlag pretenure) { |
| InitializeJSObjectFromMap(JSObject::cast(obj), |
| FixedArray::cast(properties), |
| map); |
| - ASSERT(JSObject::cast(obj)->HasFastElements()); |
| + ASSERT(JSObject::cast(obj)->HasFastSmiOnlyElements() || |
| + JSObject::cast(obj)->HasFastElements()); |
| return obj; |
| } |
| @@ -3534,6 +3539,7 @@ MaybeObject* Heap::CopyJSObject(JSObject* source) { |
| object_size); |
| } |
| + ASSERT(JSObject::cast(clone)->GetElementsKind() == source->GetElementsKind()); |
| FixedArrayBase* elements = FixedArrayBase::cast(source->elements()); |
| FixedArray* properties = FixedArray::cast(source->properties()); |
| // Update elements if necessary. |