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 "string-stream.h" | 9 #include "string-stream.h" |
10 #include "cctest.h" | 10 #include "cctest.h" |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 | 315 |
316 RetainerHeapProfile ret_profile; | 316 RetainerHeapProfile ret_profile; |
317 i::AssertNoAllocation no_alloc; | 317 i::AssertNoAllocation no_alloc; |
318 i::HeapIterator iterator; | 318 i::HeapIterator iterator; |
319 while (iterator.has_next()) { | 319 while (iterator.has_next()) { |
320 i::HeapObject* obj = iterator.next(); | 320 i::HeapObject* obj = iterator.next(); |
321 ret_profile.CollectStats(obj); | 321 ret_profile.CollectStats(obj); |
322 } | 322 } |
323 RetainerProfilePrinter printer; | 323 RetainerProfilePrinter printer; |
324 ret_profile.DebugPrintStats(&printer); | 324 ret_profile.DebugPrintStats(&printer); |
325 CHECK_EQ("(global property);1,B;2,C;2", printer.GetRetainers("A")); | 325 const char* retainers_of_a = printer.GetRetainers("A"); |
| 326 // The order of retainers is unspecified, so we check string length, and |
| 327 // verify each retainer separately. |
| 328 CHECK_EQ(static_cast<int>(strlen("(global property);1,B;2,C;2")), |
| 329 static_cast<int>(strlen(retainers_of_a))); |
| 330 CHECK(strstr(retainers_of_a, "(global property);1") != NULL); |
| 331 CHECK(strstr(retainers_of_a, "B;2") != NULL); |
| 332 CHECK(strstr(retainers_of_a, "C;2") != NULL); |
326 CHECK_EQ("(global property);2", printer.GetRetainers("B")); | 333 CHECK_EQ("(global property);2", printer.GetRetainers("B")); |
327 CHECK_EQ("(global property);1", printer.GetRetainers("C")); | 334 CHECK_EQ("(global property);1", printer.GetRetainers("C")); |
328 } | 335 } |
329 | 336 |
330 #endif // ENABLE_LOGGING_AND_PROFILING | 337 #endif // ENABLE_LOGGING_AND_PROFILING |
OLD | NEW |