Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index ddd321ca28906d5b0873741e639508f8b7f80cea..40fa3175ac81944c66058e080b6d1f2c77d4120e 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -1698,31 +1698,27 @@ MaybeObject* JSObject::GetElementsTransitionMap(Isolate* isolate, |
| } |
| -void JSObject::set_map_and_elements(Map* new_map, |
| - FixedArrayBase* value, |
| - WriteBarrierMode mode) { |
| - ASSERT(value->HasValidElements()); |
| - 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_smi_or_object_elements() || |
| - (value == GetHeap()->empty_fixed_array())) == |
| - (value->map() == GetHeap()->fixed_array_map() || |
| - value->map() == GetHeap()->fixed_cow_array_map())); |
| - ASSERT((value == GetHeap()->empty_fixed_array()) || |
| - (map()->has_fast_double_elements() == value->IsFixedDoubleArray())); |
| - WRITE_FIELD(this, kElementsOffset, value); |
| - CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kElementsOffset, value, mode); |
| +void JSObject::SetMapAndElements(Handle<JSObject> object, |
| + Handle<Map> new_map, |
| + Handle<FixedArrayBase> value) { |
| + JSObject::MigrateToMap(object, new_map); |
| + ASSERT((object->map()->has_fast_smi_or_object_elements() || |
| + (*value == object->GetHeap()->empty_fixed_array())) == |
| + (value->map() == object->GetHeap()->fixed_array_map() || |
| + value->map() == object->GetHeap()->fixed_cow_array_map())); |
| + ASSERT((*value == object->GetHeap()->empty_fixed_array()) || |
| + (object->map()->has_fast_double_elements() == |
| + value->IsFixedDoubleArray())); |
| + JSObject* obj = *object; |
| + FixedArrayBase* val = *value; |
| + WRITE_FIELD(obj, kElementsOffset, val); |
| + WRITE_BARRIER(obj->GetHeap(), obj, kElementsOffset, val); |
|
Igor Sheludko
2014/03/31 12:35:46
What about calling object->set_elements(*value); h
Toon Verwaest
2014/03/31 12:37:51
That makes more sense indeed :)
On 2014/03/31 12:
|
| } |
| void JSObject::set_elements(FixedArrayBase* value, WriteBarrierMode mode) { |
| - set_map_and_elements(NULL, value, mode); |
| + WRITE_FIELD(this, kElementsOffset, value); |
| + CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kElementsOffset, value, mode); |
| } |