Reviewers: danno,

Description:
Simplify object stats tracker a bit.

[email protected]


Please review this at https://chromiumcodereview.appspot.com/10802032/

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

Affected files:
  M src/mark-compact.cc


Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 4bf00aa031eff05a831f8c328c866f0ba5b1b758..e6a168827918d81abbf5353409d3cf7b27ec355c 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -944,12 +944,6 @@ class StaticMarkingVisitor : public StaticVisitorBase {
     table_.GetVisitor(map)(map, obj);
   }

-  template<int id>
-  class ObjectStatsTracker {
-   public:
-    static inline void Visit(Map* map, HeapObject* obj);
-  };
-
   static void Initialize();

   INLINE(static void VisitPointer(Heap* heap, Object** p)) {
@@ -1088,6 +1082,9 @@ class StaticMarkingVisitor : public StaticVisitorBase {
                               StructBodyDescriptor,
                               void> StructObjectVisitor;

+  template<int id>
+  static inline void TrackObjectStatsAndVisit(Map* map, HeapObject* obj);
+
   static void VisitJSWeakMap(Map* map, HeapObject* object) {
MarkCompactCollector* collector = map->GetHeap()->mark_compact_collector();
     JSWeakMap* weak_map = reinterpret_cast<JSWeakMap*>(object);
@@ -1500,8 +1497,7 @@ class StaticMarkingVisitor : public StaticVisitorBase {


 template<int id>
-void StaticMarkingVisitor::ObjectStatsTracker<id>::Visit(
-    Map* map, HeapObject* obj) {
+void StaticMarkingVisitor::TrackObjectStatsAndVisit(Map* map, HeapObject* obj) {
   Heap* heap = map->GetHeap();
   int object_size = obj->Size();
   heap->RecordObjectStats(map->instance_type(), -1, object_size);
@@ -1510,19 +1506,15 @@ void StaticMarkingVisitor::ObjectStatsTracker<id>::Visit(


 template<>
-class StaticMarkingVisitor::ObjectStatsTracker<
-  StaticMarkingVisitor::kVisitCode> {
- public:
-  static inline void Visit(Map* map, HeapObject* obj) {
-    Heap* heap = map->GetHeap();
-    int object_size = obj->Size();
-    ASSERT(map->instance_type() == CODE_TYPE);
-    heap->RecordObjectStats(CODE_TYPE, -1, object_size);
- heap->RecordObjectStats(CODE_TYPE, Code::cast(obj)->kind(), object_size);
-    non_count_table_.GetVisitorById(
-        static_cast<VisitorId>(kVisitCode))(map, obj);
-  }
-};
+void StaticMarkingVisitor::TrackObjectStatsAndVisit<
+    StaticMarkingVisitor::kVisitCode>(Map* map, HeapObject* obj) {
+  Heap* heap = map->GetHeap();
+  int object_size = obj->Size();
+  ASSERT(map->instance_type() == CODE_TYPE);
+  heap->RecordObjectStats(CODE_TYPE, -1, object_size);
+  heap->RecordObjectStats(CODE_TYPE, Code::cast(obj)->kind(), object_size);
+ non_count_table_.GetVisitorById(static_cast<VisitorId>(kVisitCode))(map, obj);
+}


 void StaticMarkingVisitor::Initialize() {
@@ -1598,7 +1590,7 @@ void StaticMarkingVisitor::Initialize() {
     // Copy the visitor table to make call-through possible.
     non_count_table_.CopyFrom(&table_);
 #define VISITOR_ID_COUNT_FUNCTION(id)                                   \
-    table_.Register(kVisit##id, ObjectStatsTracker<kVisit##id>::Visit);
+    table_.Register(kVisit##id, TrackObjectStatsAndVisit<kVisit##id>);
     VISITOR_ID_LIST(VISITOR_ID_COUNT_FUNCTION)
 #undef VISITOR_ID_COUNT_FUNCTION
   }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to