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