Chromium Code Reviews| Index: src/heap/heap-inl.h |
| diff --git a/src/heap/heap-inl.h b/src/heap/heap-inl.h |
| index 7b2f5ead9b9a3ff53617f12212ebdfe253f99eac..df9072e78020dc07f3658f4a50ff1febb4b7d049 100644 |
| --- a/src/heap/heap-inl.h |
| +++ b/src/heap/heap-inl.h |
| @@ -399,9 +399,20 @@ void Heap::RecordWrite(Object* object, int offset, Object* o) { |
| if (!InNewSpace(o) || !object->IsHeapObject() || InNewSpace(object)) { |
| return; |
| } |
| - Page* page = Page::FromAddress(reinterpret_cast<Address>(object)); |
| - Address slot = HeapObject::cast(object)->address() + offset; |
| - RememberedSet<OLD_TO_NEW>::Insert(page, slot); |
| + RememberedSet<OLD_TO_NEW>::Insert( |
| + Page::FromAddress(reinterpret_cast<Address>(object)), |
| + HeapObject::cast(object)->address() + offset); |
| +} |
| + |
| +void Heap::RecordFixedArrayElements(FixedArray* array, int offset, int length) { |
| + if (InNewSpace(array)) return; |
| + Page* page = Page::FromAddress(reinterpret_cast<Address>(array)); |
| + for (int i = 0; i < length; i++) { |
| + if (!InNewSpace(array->get(i))) continue; |
|
ulan
2016/04/11 12:49:23
This should be if (!InNewSpace(array->get(offset +
|
| + RememberedSet<OLD_TO_NEW>::Insert( |
| + page, |
| + reinterpret_cast<Address>(array->RawFieldOfElementAt(offset + i))); |
| + } |
| } |