| Index: src/objects-visiting.h
|
| diff --git a/src/objects-visiting.h b/src/objects-visiting.h
|
| index e4e5910e468a4389c7ed825cad474965a117cb6f..ef99925c6746df8b6c868d4f948495fde124106b 100644
|
| --- a/src/objects-visiting.h
|
| +++ b/src/objects-visiting.h
|
| @@ -187,14 +187,15 @@ class VisitorDispatchTable {
|
| template<typename StaticVisitor>
|
| class BodyVisitorBase : public AllStatic {
|
| public:
|
| - static inline void IteratePointers(HeapObject* object,
|
| + static inline void IteratePointers(Heap* heap,
|
| + HeapObject* object,
|
| int start_offset,
|
| int end_offset) {
|
| Object** start_slot = reinterpret_cast<Object**>(object->address() +
|
| start_offset);
|
| Object** end_slot = reinterpret_cast<Object**>(object->address() +
|
| end_offset);
|
| - StaticVisitor::VisitPointers(start_slot, end_slot);
|
| + StaticVisitor::VisitPointers(heap, start_slot, end_slot);
|
| }
|
| };
|
|
|
| @@ -205,7 +206,10 @@ class FlexibleBodyVisitor : public BodyVisitorBase<StaticVisitor> {
|
| static inline ReturnType Visit(Map* map, HeapObject* object) {
|
| int object_size = BodyDescriptor::SizeOf(map, object);
|
| BodyVisitorBase<StaticVisitor>::IteratePointers(
|
| - object, BodyDescriptor::kStartOffset, object_size);
|
| + map->heap(),
|
| + object,
|
| + BodyDescriptor::kStartOffset,
|
| + object_size);
|
| return static_cast<ReturnType>(object_size);
|
| }
|
|
|
| @@ -213,7 +217,10 @@ class FlexibleBodyVisitor : public BodyVisitorBase<StaticVisitor> {
|
| static inline ReturnType VisitSpecialized(Map* map, HeapObject* object) {
|
| ASSERT(BodyDescriptor::SizeOf(map, object) == object_size);
|
| BodyVisitorBase<StaticVisitor>::IteratePointers(
|
| - object, BodyDescriptor::kStartOffset, object_size);
|
| + map->heap(),
|
| + object,
|
| + BodyDescriptor::kStartOffset,
|
| + object_size);
|
| return static_cast<ReturnType>(object_size);
|
| }
|
| };
|
| @@ -224,7 +231,10 @@ class FixedBodyVisitor : public BodyVisitorBase<StaticVisitor> {
|
| public:
|
| static inline ReturnType Visit(Map* map, HeapObject* object) {
|
| BodyVisitorBase<StaticVisitor>::IteratePointers(
|
| - object, BodyDescriptor::kStartOffset, BodyDescriptor::kEndOffset);
|
| + map->heap(),
|
| + object,
|
| + BodyDescriptor::kStartOffset,
|
| + BodyDescriptor::kEndOffset);
|
| return static_cast<ReturnType>(BodyDescriptor::kSize);
|
| }
|
| };
|
| @@ -295,8 +305,8 @@ class StaticNewSpaceVisitor : public StaticVisitorBase {
|
| return table_.GetVisitor(map)(map, obj);
|
| }
|
|
|
| - static inline void VisitPointers(Object** start, Object** end) {
|
| - for (Object** p = start; p < end; p++) StaticVisitor::VisitPointer(p);
|
| + static inline void VisitPointers(Heap* heap, Object** start, Object** end) {
|
| + for (Object** p = start; p < end; p++) StaticVisitor::VisitPointer(heap, p);
|
| }
|
|
|
| private:
|
| @@ -368,7 +378,7 @@ void Code::CodeIterateBody(ObjectVisitor* v) {
|
|
|
|
|
| template<typename StaticVisitor>
|
| -void Code::CodeIterateBody() {
|
| +void Code::CodeIterateBody(Heap* heap) {
|
| int mode_mask = RelocInfo::kCodeTargetMask |
|
| RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
|
| RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) |
|
| @@ -381,10 +391,11 @@ void Code::CodeIterateBody() {
|
| RelocIterator it(this, mode_mask);
|
|
|
| StaticVisitor::VisitPointer(
|
| + heap,
|
| reinterpret_cast<Object**>(this->address() + kRelocationInfoOffset));
|
|
|
| for (; !it.done(); it.next()) {
|
| - it.rinfo()->template Visit<StaticVisitor>();
|
| + it.rinfo()->template Visit<StaticVisitor>(heap);
|
| }
|
| }
|
|
|
|
|