Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index ddd321ca28906d5b0873741e639508f8b7f80cea..ebdbfad08238040453a54167c5619ce7a1eec7ef 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -1698,31 +1698,24 @@ 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())); |
+ object->set_elements(*value); |
} |
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); |
} |