Reviewers: ,

Message:
I'm helping out with building Chrome using Clang and this broke the build when
we rolled in a new V8 version the other day.

Description:
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.

Please review this at http://codereview.chromium.org/3119026/show

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
  M     src/objects-visiting.h


Index: src/objects-visiting.h
===================================================================
--- src/objects-visiting.h      (revision 5302)
+++ src/objects-visiting.h      (working copy)
@@ -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
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to