Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Tests for heap profiler | 3 // Tests for heap profiler |
| 4 | 4 |
| 5 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "cctest.h" | 7 #include "cctest.h" |
| 8 #include "heap-profiler.h" | 8 #include "heap-profiler.h" |
| 9 #include "snapshot.h" | 9 #include "snapshot.h" |
| 10 #include "utils-inl.h" | 10 #include "utils-inl.h" |
| (...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 678 } | 678 } |
| 679 virtual ~TestRetainedObjectInfo() {} | 679 virtual ~TestRetainedObjectInfo() {} |
| 680 virtual void Dispose() { | 680 virtual void Dispose() { |
| 681 CHECK(!disposed_); | 681 CHECK(!disposed_); |
| 682 disposed_ = true; | 682 disposed_ = true; |
| 683 } | 683 } |
| 684 virtual bool IsEquivalent(RetainedObjectInfo* other) { | 684 virtual bool IsEquivalent(RetainedObjectInfo* other) { |
| 685 return GetHash() == other->GetHash(); | 685 return GetHash() == other->GetHash(); |
| 686 } | 686 } |
| 687 virtual intptr_t GetHash() { return hash_; } | 687 virtual intptr_t GetHash() { return hash_; } |
| 688 virtual const char* GetLabel() { return label_; } | 688 virtual const char* GetLabel() { return label_; } |
|
mnaganov (inactive)
2012/01/27 09:53:17
Perhaps you need to test usage of GetGroupLabel as
| |
| 689 virtual intptr_t GetElementCount() { return element_count_; } | 689 virtual intptr_t GetElementCount() { return element_count_; } |
| 690 virtual intptr_t GetSizeInBytes() { return size_; } | 690 virtual intptr_t GetSizeInBytes() { return size_; } |
| 691 bool disposed() { return disposed_; } | 691 bool disposed() { return disposed_; } |
| 692 | 692 |
| 693 static v8::RetainedObjectInfo* WrapperInfoCallback( | 693 static v8::RetainedObjectInfo* WrapperInfoCallback( |
| 694 uint16_t class_id, v8::Handle<v8::Value> wrapper) { | 694 uint16_t class_id, v8::Handle<v8::Value> wrapper) { |
| 695 if (class_id == 1) { | 695 if (class_id == 1) { |
| 696 if (wrapper->IsString()) { | 696 if (wrapper->IsString()) { |
| 697 v8::String::AsciiValue ascii(wrapper); | 697 v8::String::AsciiValue ascii(wrapper); |
| 698 if (strcmp(*ascii, "AAA") == 0) | 698 if (strcmp(*ascii, "AAA") == 0) |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 762 CHECK_EQ(0, TestRetainedObjectInfo::instances.length()); | 762 CHECK_EQ(0, TestRetainedObjectInfo::instances.length()); |
| 763 const v8::HeapSnapshot* snapshot = | 763 const v8::HeapSnapshot* snapshot = |
| 764 v8::HeapProfiler::TakeSnapshot(v8_str("retained")); | 764 v8::HeapProfiler::TakeSnapshot(v8_str("retained")); |
| 765 | 765 |
| 766 CHECK_EQ(3, TestRetainedObjectInfo::instances.length()); | 766 CHECK_EQ(3, TestRetainedObjectInfo::instances.length()); |
| 767 for (int i = 0; i < TestRetainedObjectInfo::instances.length(); ++i) { | 767 for (int i = 0; i < TestRetainedObjectInfo::instances.length(); ++i) { |
| 768 CHECK(TestRetainedObjectInfo::instances[i]->disposed()); | 768 CHECK(TestRetainedObjectInfo::instances[i]->disposed()); |
| 769 delete TestRetainedObjectInfo::instances[i]; | 769 delete TestRetainedObjectInfo::instances[i]; |
| 770 } | 770 } |
| 771 | 771 |
| 772 const v8::HeapGraphNode* natives = GetNode( | 772 const v8::HeapGraphNode* native_group_aaa = GetNode( |
| 773 snapshot->GetRoot(), v8::HeapGraphNode::kObject, "(Native objects)"); | 773 snapshot->GetRoot(), v8::HeapGraphNode::kNative, "aaa"); |
| 774 CHECK_NE(NULL, natives); | 774 CHECK_NE(NULL, native_group_aaa); |
| 775 CHECK_EQ(2, natives->GetChildrenCount()); | 775 CHECK_EQ(1, native_group_aaa->GetChildrenCount()); |
| 776 const v8::HeapGraphNode* aaa = GetNode( | 776 const v8::HeapGraphNode* aaa = GetNode( |
| 777 natives, v8::HeapGraphNode::kNative, "aaa / 100 entries"); | 777 native_group_aaa, v8::HeapGraphNode::kNative, "aaa / 100 entries"); |
| 778 CHECK_NE(NULL, aaa); | 778 CHECK_NE(NULL, aaa); |
| 779 CHECK_EQ(2, aaa->GetChildrenCount()); | |
| 780 | |
| 781 const v8::HeapGraphNode* native_group_ccc = GetNode( | |
| 782 snapshot->GetRoot(), v8::HeapGraphNode::kNative, "ccc"); | |
| 779 const v8::HeapGraphNode* ccc = GetNode( | 783 const v8::HeapGraphNode* ccc = GetNode( |
| 780 natives, v8::HeapGraphNode::kNative, "ccc"); | 784 native_group_ccc, v8::HeapGraphNode::kNative, "ccc"); |
| 781 CHECK_NE(NULL, ccc); | 785 CHECK_NE(NULL, ccc); |
| 782 | 786 |
| 783 CHECK_EQ(2, aaa->GetChildrenCount()); | |
| 784 const v8::HeapGraphNode* n_AAA = GetNode( | 787 const v8::HeapGraphNode* n_AAA = GetNode( |
| 785 aaa, v8::HeapGraphNode::kString, "AAA"); | 788 aaa, v8::HeapGraphNode::kString, "AAA"); |
| 786 CHECK_NE(NULL, n_AAA); | 789 CHECK_NE(NULL, n_AAA); |
| 787 const v8::HeapGraphNode* n_BBB = GetNode( | 790 const v8::HeapGraphNode* n_BBB = GetNode( |
| 788 aaa, v8::HeapGraphNode::kString, "BBB"); | 791 aaa, v8::HeapGraphNode::kString, "BBB"); |
| 789 CHECK_NE(NULL, n_BBB); | 792 CHECK_NE(NULL, n_BBB); |
| 790 CHECK_EQ(1, ccc->GetChildrenCount()); | 793 CHECK_EQ(1, ccc->GetChildrenCount()); |
| 791 const v8::HeapGraphNode* n_CCC = GetNode( | 794 const v8::HeapGraphNode* n_CCC = GetNode( |
| 792 ccc, v8::HeapGraphNode::kString, "CCC"); | 795 ccc, v8::HeapGraphNode::kString, "CCC"); |
| 793 CHECK_NE(NULL, n_CCC); | 796 CHECK_NE(NULL, n_CCC); |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1148 v8::HeapProfiler::TakeSnapshot(v8_str("fun")); | 1151 v8::HeapProfiler::TakeSnapshot(v8_str("fun")); |
| 1149 const v8::HeapGraphNode* global = GetGlobalObject(snapshot); | 1152 const v8::HeapGraphNode* global = GetGlobalObject(snapshot); |
| 1150 CHECK_NE(NULL, global); | 1153 CHECK_NE(NULL, global); |
| 1151 const v8::HeapGraphNode* fun = | 1154 const v8::HeapGraphNode* fun = |
| 1152 GetProperty(global, v8::HeapGraphEdge::kShortcut, "fun"); | 1155 GetProperty(global, v8::HeapGraphEdge::kShortcut, "fun"); |
| 1153 CHECK(HasWeakEdge(fun)); | 1156 CHECK(HasWeakEdge(fun)); |
| 1154 const v8::HeapGraphNode* shared = | 1157 const v8::HeapGraphNode* shared = |
| 1155 GetProperty(fun, v8::HeapGraphEdge::kInternal, "shared"); | 1158 GetProperty(fun, v8::HeapGraphEdge::kInternal, "shared"); |
| 1156 CHECK(HasWeakEdge(shared)); | 1159 CHECK(HasWeakEdge(shared)); |
| 1157 } | 1160 } |
| OLD | NEW |