| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 7c7f0940067ad7500c80d1ed416f38c818e7f192..99a0bb08d29be6f9a4f80cd244e623dea297f3c8 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -1219,7 +1219,7 @@ void JSObject::ValidateSmiOnlyElements() {
|
| map != heap->free_space_map()) {
|
| for (int i = 0; i < fixed_array->length(); i++) {
|
| Object* current = fixed_array->get(i);
|
| - ASSERT(current->IsSmi() || current == heap->the_hole_value());
|
| + ASSERT(current->IsSmi() || current->IsTheHole());
|
| }
|
| }
|
| }
|
| @@ -1290,22 +1290,37 @@ MaybeObject* JSObject::EnsureCanContainElements(FixedArrayBase* elements,
|
| }
|
|
|
|
|
| -void JSObject::set_elements(FixedArrayBase* value, WriteBarrierMode mode) {
|
| +void JSObject::set_map_and_elements(Map* new_map,
|
| + FixedArrayBase* value,
|
| + WriteBarrierMode mode) {
|
| + ASSERT(value->HasValidElements());
|
| +#ifdef DEBUG
|
| + ValidateSmiOnlyElements();
|
| +#endif
|
| + if (new_map != NULL) {
|
| + if (mode == UPDATE_WRITE_BARRIER) {
|
| + set_map(new_map);
|
| + } else {
|
| + ASSERT(mode == SKIP_WRITE_BARRIER);
|
| + set_map_no_write_barrier(new_map);
|
| + }
|
| + }
|
| ASSERT((map()->has_fast_elements() ||
|
| map()->has_fast_smi_only_elements()) ==
|
| (value->map() == GetHeap()->fixed_array_map() ||
|
| value->map() == GetHeap()->fixed_cow_array_map()));
|
| ASSERT(map()->has_fast_double_elements() ==
|
| value->IsFixedDoubleArray());
|
| - ASSERT(value->HasValidElements());
|
| -#ifdef DEBUG
|
| - ValidateSmiOnlyElements();
|
| -#endif
|
| WRITE_FIELD(this, kElementsOffset, value);
|
| CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kElementsOffset, value, mode);
|
| }
|
|
|
|
|
| +void JSObject::set_elements(FixedArrayBase* value, WriteBarrierMode mode) {
|
| + set_map_and_elements(NULL, value, mode);
|
| +}
|
| +
|
| +
|
| void JSObject::initialize_properties() {
|
| ASSERT(!GetHeap()->InNewSpace(GetHeap()->empty_fixed_array()));
|
| WRITE_FIELD(this, kPropertiesOffset, GetHeap()->empty_fixed_array());
|
|
|