Revision: 5303
Author: vego...@chromium.org
Date: Wed Aug 18 08:24:52 2010
Log: Fix two-phase lookup problem in FlexibleBodyVisitor and
FixedBodyVisitor.
In FlexibleBodyVisitor and FixedBodyVisitor, the calls to IteratePointers,
which lives in the base class BodyVisitorBase<StaticVisitor>, needs to be
qualified with the dependent base class to be able to be bound during
two-phase lookup.
Review URL: http://codereview.chromium.org/3119026
http://code.google.com/p/v8/source/detail?r=5303
Modified:
/branches/bleeding_edge/src/objects-visiting.h
=======================================
--- /branches/bleeding_edge/src/objects-visiting.h Tue Aug 17 04:44:01 2010
+++ /branches/bleeding_edge/src/objects-visiting.h Wed Aug 18 08:24:52 2010
@@ -199,14 +199,16 @@
public:
static inline ReturnType Visit(Map* map, HeapObject* object) {
int object_size = BodyDescriptor::SizeOf(map, object);
- IteratePointers(object, BodyDescriptor::kStartOffset, object_size);
+ BodyVisitorBase<StaticVisitor>::IteratePointers(
+ object, BodyDescriptor::kStartOffset, object_size);
return static_cast<ReturnType>(object_size);
}
template<int object_size>
static inline ReturnType VisitSpecialized(Map* map, HeapObject* object) {
ASSERT(BodyDescriptor::SizeOf(map, object) == object_size);
- IteratePointers(object, BodyDescriptor::kStartOffset, object_size);
+ BodyVisitorBase<StaticVisitor>::IteratePointers(
+ object, BodyDescriptor::kStartOffset, object_size);
return static_cast<ReturnType>(object_size);
}
};
@@ -216,9 +218,8 @@
class FixedBodyVisitor : public BodyVisitorBase<StaticVisitor> {
public:
static inline ReturnType Visit(Map* map, HeapObject* object) {
- IteratePointers(object,
- BodyDescriptor::kStartOffset,
- BodyDescriptor::kEndOffset);
+ BodyVisitorBase<StaticVisitor>::IteratePointers(
+ object, BodyDescriptor::kStartOffset, BodyDescriptor::kEndOffset);
return static_cast<ReturnType>(BodyDescriptor::kSize);
}
};
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev