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