Chromium Code Reviews| Index: src/heap/objects-visiting.h |
| diff --git a/src/heap/objects-visiting.h b/src/heap/objects-visiting.h |
| index 30054f058afbfb413cac4336881f6f763aa01eda..69b68f7d6ec1b5380137946ebd4fc83faea183b0 100644 |
| --- a/src/heap/objects-visiting.h |
| +++ b/src/heap/objects-visiting.h |
| @@ -226,16 +226,15 @@ class BodyVisitorBase : public AllStatic { |
| DCHECK(IsAligned(start_offset, kPointerSize) && |
| IsAligned(end_offset, kPointerSize)); |
| - InobjectPropertiesHelper helper(object->map()); |
| + LayoutDescriptorHelper helper(object->map()); |
| DCHECK(!helper.all_fields_tagged()); |
| - |
| - for (int offset = start_offset; offset < end_offset; |
| - offset += kPointerSize) { |
| - // Visit tagged fields only. |
| - if (helper.IsTagged(offset)) { |
| - // TODO(ishell): call this once for contiguous region of tagged fields. |
| - IterateRawPointers(heap, object, offset, offset + kPointerSize); |
| + for (int offset = start_offset; offset < end_offset;) { |
| + int end_of_region_offset; |
| + if (helper.IsTagged(offset, end_offset, &end_of_region_offset)) { |
| + IterateRawPointers(heap, object, offset, end_of_region_offset); |
| } |
| + DCHECK(offset < end_of_region_offset); |
|
Hannes Payer (out of office)
2014/11/25 17:20:13
I think that DCHECK should be in the IsTagged func
Igor Sheludko
2014/12/10 18:22:04
Done.
|
| + offset = end_of_region_offset; |
| } |
| } |
| }; |