| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index e6fc951513ce89e4fc91cfbfa1c400309c67a52b..2b37d7b206af09d438e346557e327f5ae342e637 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -2998,6 +2998,8 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
| // From here on we cannot fail and we shouldn't GC anymore.
|
| DisallowHeapAllocation no_allocation;
|
|
|
| + Heap* heap = isolate->heap();
|
| +
|
| // Copy (real) inobject properties. If necessary, stop at number_of_fields to
|
| // avoid overwriting |one_pointer_filler_map|.
|
| int limit = Min(inobject, number_of_fields);
|
| @@ -3010,12 +3012,15 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
| DCHECK(value->IsMutableHeapNumber());
|
| object->RawFastDoublePropertyAtPut(index,
|
| HeapNumber::cast(value)->value());
|
| + if (i < old_number_of_fields && !old_map->IsUnboxedDoubleField(index)) {
|
| + // Transition from tagged to untagged slot.
|
| + heap->ClearRecordedSlot(HeapObject::RawField(*object, index.offset()));
|
| + }
|
| } else {
|
| object->RawFastPropertyAtPut(index, value);
|
| }
|
| }
|
|
|
| - Heap* heap = isolate->heap();
|
|
|
| // If there are properties in the new backing store, trim it to the correct
|
| // size and install the backing store into the object.
|
|
|