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 891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
902 | 902 |
903 const v8::HeapSnapshot* snapshot = | 903 const v8::HeapSnapshot* snapshot = |
904 v8::HeapProfiler::TakeSnapshot(v8_str("id")); | 904 v8::HeapProfiler::TakeSnapshot(v8_str("id")); |
905 const v8::HeapGraphNode* root = snapshot->GetRoot(); | 905 const v8::HeapGraphNode* root = snapshot->GetRoot(); |
906 CheckChildrenIds(snapshot, root, 0, 3); | 906 CheckChildrenIds(snapshot, root, 0, 3); |
907 // Check a big id, which should not exist yet. | 907 // Check a big id, which should not exist yet. |
908 CHECK_EQ(NULL, snapshot->GetNodeById(0x1000000UL)); | 908 CHECK_EQ(NULL, snapshot->GetNodeById(0x1000000UL)); |
909 } | 909 } |
910 | 910 |
911 | 911 |
| 912 TEST(HeapSnapshotGetSnapshotObjectId) { |
| 913 v8::HandleScope scope; |
| 914 LocalContext env; |
| 915 CompileRun("globalObject = {};\n"); |
| 916 const v8::HeapSnapshot* snapshot = |
| 917 v8::HeapProfiler::TakeSnapshot(v8_str("get_snapshot_object_id")); |
| 918 const v8::HeapGraphNode* global = GetGlobalObject(snapshot); |
| 919 const v8::HeapGraphNode* global_object = |
| 920 GetProperty(global, v8::HeapGraphEdge::kProperty, "globalObject"); |
| 921 CHECK(global_object); |
| 922 |
| 923 v8::Local<v8::Value> globalObjectHandle = |
| 924 env->Global()->Get(v8::String::New("globalObject")); |
| 925 CHECK(!globalObjectHandle.IsEmpty()); |
| 926 CHECK(globalObjectHandle->IsObject()); |
| 927 |
| 928 v8::SnapshotObjectId id = |
| 929 v8::HeapProfiler::GetSnapshotObjectId(globalObjectHandle); |
| 930 CHECK_NE(static_cast<int>(v8::HeapProfiler::kUnknownObjectId), |
| 931 id); |
| 932 CHECK_EQ(static_cast<int>(id), global_object->GetId()); |
| 933 } |
| 934 |
| 935 |
| 936 TEST(HeapSnapshotUnknownSnapshotObjectId) { |
| 937 v8::HandleScope scope; |
| 938 LocalContext env; |
| 939 CompileRun("globalObject = {};\n"); |
| 940 const v8::HeapSnapshot* snapshot = |
| 941 v8::HeapProfiler::TakeSnapshot(v8_str("unknown_object_id")); |
| 942 const v8::HeapGraphNode* node = |
| 943 snapshot->GetNodeById(v8::HeapProfiler::kUnknownObjectId); |
| 944 CHECK_EQ(NULL, node); |
| 945 } |
| 946 |
| 947 |
912 namespace { | 948 namespace { |
913 | 949 |
914 class TestActivityControl : public v8::ActivityControl { | 950 class TestActivityControl : public v8::ActivityControl { |
915 public: | 951 public: |
916 explicit TestActivityControl(int abort_count) | 952 explicit TestActivityControl(int abort_count) |
917 : done_(0), total_(0), abort_count_(abort_count) {} | 953 : done_(0), total_(0), abort_count_(abort_count) {} |
918 ControlOption ReportProgressValue(int done, int total) { | 954 ControlOption ReportProgressValue(int done, int total) { |
919 done_ = done; | 955 done_ = done; |
920 total_ = total; | 956 total_ = total; |
921 return --abort_count_ != 0 ? kContinue : kAbort; | 957 return --abort_count_ != 0 ? kContinue : kAbort; |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1552 // Dipose the persistent handles in a different order. | 1588 // Dipose the persistent handles in a different order. |
1553 p_AAA.Dispose(); | 1589 p_AAA.Dispose(); |
1554 CHECK_EQ(global_handle_count + 2, | 1590 CHECK_EQ(global_handle_count + 2, |
1555 v8::HeapProfiler::GetPersistentHandleCount()); | 1591 v8::HeapProfiler::GetPersistentHandleCount()); |
1556 p_CCC.Dispose(); | 1592 p_CCC.Dispose(); |
1557 CHECK_EQ(global_handle_count + 1, | 1593 CHECK_EQ(global_handle_count + 1, |
1558 v8::HeapProfiler::GetPersistentHandleCount()); | 1594 v8::HeapProfiler::GetPersistentHandleCount()); |
1559 p_BBB.Dispose(); | 1595 p_BBB.Dispose(); |
1560 CHECK_EQ(global_handle_count, v8::HeapProfiler::GetPersistentHandleCount()); | 1596 CHECK_EQ(global_handle_count, v8::HeapProfiler::GetPersistentHandleCount()); |
1561 } | 1597 } |
OLD | NEW |