OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // | 2 // |
3 // Tests for heap profiler | 3 // Tests for heap profiler |
4 | 4 |
5 #ifdef ENABLE_LOGGING_AND_PROFILING | 5 #ifdef ENABLE_LOGGING_AND_PROFILING |
6 | 6 |
7 #include "v8.h" | 7 #include "v8.h" |
8 #include "heap-profiler.h" | 8 #include "heap-profiler.h" |
9 #include "snapshot.h" | 9 #include "snapshot.h" |
10 #include "string-stream.h" | 10 #include "string-stream.h" |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 CHECK_EQ(v8::HeapGraphNode::kClosure, lazy->GetType()); | 567 CHECK_EQ(v8::HeapGraphNode::kClosure, lazy->GetType()); |
568 const v8::HeapGraphNode* anonymous = | 568 const v8::HeapGraphNode* anonymous = |
569 GetProperty(global, v8::HeapGraphEdge::kShortcut, "anonymous"); | 569 GetProperty(global, v8::HeapGraphEdge::kShortcut, "anonymous"); |
570 CHECK_NE(NULL, anonymous); | 570 CHECK_NE(NULL, anonymous); |
571 CHECK_EQ(v8::HeapGraphNode::kClosure, anonymous->GetType()); | 571 CHECK_EQ(v8::HeapGraphNode::kClosure, anonymous->GetType()); |
572 v8::String::AsciiValue anonymous_name(anonymous->GetName()); | 572 v8::String::AsciiValue anonymous_name(anonymous->GetName()); |
573 CHECK_EQ("", *anonymous_name); | 573 CHECK_EQ("", *anonymous_name); |
574 | 574 |
575 // Find references to code. | 575 // Find references to code. |
576 const v8::HeapGraphNode* compiled_code = | 576 const v8::HeapGraphNode* compiled_code = |
577 GetProperty(compiled, v8::HeapGraphEdge::kInternal, "code"); | 577 GetProperty(compiled, v8::HeapGraphEdge::kInternal, "shared"); |
578 CHECK_NE(NULL, compiled_code); | 578 CHECK_NE(NULL, compiled_code); |
579 const v8::HeapGraphNode* lazy_code = | 579 const v8::HeapGraphNode* lazy_code = |
580 GetProperty(lazy, v8::HeapGraphEdge::kInternal, "code"); | 580 GetProperty(lazy, v8::HeapGraphEdge::kInternal, "shared"); |
581 CHECK_NE(NULL, lazy_code); | 581 CHECK_NE(NULL, lazy_code); |
582 | 582 |
583 // Verify that non-compiled code doesn't contain references to "x" | 583 // Verify that non-compiled code doesn't contain references to "x" |
584 // literal, while compiled code does. The scope info is stored in FixedArray | 584 // literal, while compiled code does. The scope info is stored in FixedArray |
585 // objects attached to the SharedFunctionInfo. | 585 // objects attached to the SharedFunctionInfo. |
586 bool compiled_references_x = false, lazy_references_x = false; | 586 bool compiled_references_x = false, lazy_references_x = false; |
587 for (int i = 0, count = compiled_code->GetChildrenCount(); i < count; ++i) { | 587 for (int i = 0, count = compiled_code->GetChildrenCount(); i < count; ++i) { |
588 const v8::HeapGraphEdge* prop = compiled_code->GetChild(i); | 588 const v8::HeapGraphEdge* prop = compiled_code->GetChild(i); |
589 const v8::HeapGraphNode* node = prop->GetToNode(); | 589 const v8::HeapGraphNode* node = prop->GetToNode(); |
590 if (node->GetType() == v8::HeapGraphNode::kArray) { | 590 if (node->GetType() == v8::HeapGraphNode::kArray) { |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1250 aaa, v8::HeapGraphNode::kString, "AAA"); | 1250 aaa, v8::HeapGraphNode::kString, "AAA"); |
1251 CHECK_NE(NULL, n_AAA); | 1251 CHECK_NE(NULL, n_AAA); |
1252 const v8::HeapGraphNode* n_BBB = GetNode( | 1252 const v8::HeapGraphNode* n_BBB = GetNode( |
1253 aaa, v8::HeapGraphNode::kString, "BBB"); | 1253 aaa, v8::HeapGraphNode::kString, "BBB"); |
1254 CHECK_NE(NULL, n_BBB); | 1254 CHECK_NE(NULL, n_BBB); |
1255 CHECK_EQ(1, ccc->GetChildrenCount()); | 1255 CHECK_EQ(1, ccc->GetChildrenCount()); |
1256 const v8::HeapGraphNode* n_CCC = GetNode( | 1256 const v8::HeapGraphNode* n_CCC = GetNode( |
1257 ccc, v8::HeapGraphNode::kString, "CCC"); | 1257 ccc, v8::HeapGraphNode::kString, "CCC"); |
1258 CHECK_NE(NULL, n_CCC); | 1258 CHECK_NE(NULL, n_CCC); |
1259 | 1259 |
1260 CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "Native")); | 1260 CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "native")); |
1261 CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "Native")); | 1261 CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "native")); |
1262 CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "Native")); | 1262 CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "native")); |
1263 } | 1263 } |
1264 | 1264 |
1265 | 1265 |
1266 TEST(DeleteAllHeapSnapshots) { | 1266 TEST(DeleteAllHeapSnapshots) { |
1267 v8::HandleScope scope; | 1267 v8::HandleScope scope; |
1268 LocalContext env; | 1268 LocalContext env; |
1269 | 1269 |
1270 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); | 1270 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); |
1271 v8::HeapProfiler::DeleteAllSnapshots(); | 1271 v8::HeapProfiler::DeleteAllSnapshots(); |
1272 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); | 1272 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1314 const_cast<v8::HeapSnapshot*>(s2)->Delete(); | 1314 const_cast<v8::HeapSnapshot*>(s2)->Delete(); |
1315 CHECK_EQ(1, v8::HeapProfiler::GetSnapshotsCount()); | 1315 CHECK_EQ(1, v8::HeapProfiler::GetSnapshotsCount()); |
1316 CHECK_EQ(NULL, v8::HeapProfiler::FindSnapshot(uid2)); | 1316 CHECK_EQ(NULL, v8::HeapProfiler::FindSnapshot(uid2)); |
1317 CHECK_EQ(s3, v8::HeapProfiler::FindSnapshot(uid3)); | 1317 CHECK_EQ(s3, v8::HeapProfiler::FindSnapshot(uid3)); |
1318 const_cast<v8::HeapSnapshot*>(s3)->Delete(); | 1318 const_cast<v8::HeapSnapshot*>(s3)->Delete(); |
1319 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); | 1319 CHECK_EQ(0, v8::HeapProfiler::GetSnapshotsCount()); |
1320 CHECK_EQ(NULL, v8::HeapProfiler::FindSnapshot(uid3)); | 1320 CHECK_EQ(NULL, v8::HeapProfiler::FindSnapshot(uid3)); |
1321 } | 1321 } |
1322 | 1322 |
1323 #endif // ENABLE_LOGGING_AND_PROFILING | 1323 #endif // ENABLE_LOGGING_AND_PROFILING |
OLD | NEW |