| Index: src/objects-visiting.h
|
| ===================================================================
|
| --- src/objects-visiting.h (revision 7563)
|
| +++ src/objects-visiting.h (working copy)
|
| @@ -193,14 +193,15 @@
|
| template<typename StaticVisitor>
|
| class BodyVisitorBase : public AllStatic {
|
| public:
|
| - INLINE(static void IteratePointers(HeapObject* object,
|
| + INLINE(static 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);
|
| }
|
| };
|
|
|
| @@ -211,7 +212,10 @@
|
| 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);
|
| }
|
|
|
| @@ -219,7 +223,10 @@
|
| 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);
|
| }
|
| };
|
| @@ -230,7 +237,10 @@
|
| 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);
|
| }
|
| };
|
| @@ -306,8 +316,8 @@
|
| 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:
|
| @@ -379,7 +389,7 @@
|
|
|
|
|
| template<typename StaticVisitor>
|
| -void Code::CodeIterateBody() {
|
| +void Code::CodeIterateBody(Heap* heap) {
|
| int mode_mask = RelocInfo::kCodeTargetMask |
|
| RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
|
| RelocInfo::ModeMask(RelocInfo::GLOBAL_PROPERTY_CELL) |
|
| @@ -393,12 +403,14 @@
|
| RelocIterator it(this, mode_mask);
|
|
|
| StaticVisitor::VisitPointer(
|
| + heap,
|
| reinterpret_cast<Object**>(this->address() + kRelocationInfoOffset));
|
| StaticVisitor::VisitPointer(
|
| + heap,
|
| reinterpret_cast<Object**>(this->address() + kDeoptimizationDataOffset));
|
|
|
| for (; !it.done(); it.next()) {
|
| - it.rinfo()->template Visit<StaticVisitor>();
|
| + it.rinfo()->template Visit<StaticVisitor>(heap);
|
| }
|
| }
|
|
|
|
|