Chromium Code Reviews| Index: test/cctest/test-heap-profiler.cc |
| diff --git a/test/cctest/test-heap-profiler.cc b/test/cctest/test-heap-profiler.cc |
| index 7e48a87a7ee10e7d015543da3a6a4e80cdc1f69d..0de30598451024dafba31696ee0c71189b4d04a4 100644 |
| --- a/test/cctest/test-heap-profiler.cc |
| +++ b/test/cctest/test-heap-profiler.cc |
| @@ -704,6 +704,7 @@ class TestStatsStream : public v8::OutputStream { |
| : eos_signaled_(0), |
| numbers_written_(0), |
| entries_count_(0), |
| + entries_size_(0), |
| intervals_count_(0), |
| first_interval_index_(-1) { } |
| TestStatsStream(const TestStatsStream& stream) |
| @@ -711,6 +712,7 @@ class TestStatsStream : public v8::OutputStream { |
| eos_signaled_(stream.eos_signaled_), |
| numbers_written_(stream.numbers_written_), |
| entries_count_(stream.entries_count_), |
| + entries_size_(stream.entries_size_), |
| intervals_count_(stream.intervals_count_), |
| first_interval_index_(stream.first_interval_index_) { } |
| virtual ~TestStatsStream() {} |
| @@ -726,14 +728,17 @@ class TestStatsStream : public v8::OutputStream { |
| entries_count_ = 0; |
| if (first_interval_index_ == -1 && numbers_written != 0) |
| first_interval_index_ = buffer[0]; |
| - for (int i = 1; i < numbers_written; i += 2) |
| - entries_count_ += buffer[i]; |
| + for (int i = 0; i < numbers_written; i += 3) { |
| + entries_count_ += buffer[i+1]; |
| + entries_size_ += buffer[i+2]; |
| + } |
| return kContinue; |
| } |
| int eos_signaled() { return eos_signaled_; } |
| int numbers_written() { return numbers_written_; } |
| uint32_t entries_count() const { return entries_count_; } |
| + uint32_t entries_size() const { return entries_size_; } |
| int intervals_count() const { return intervals_count_; } |
| int first_interval_index() const { return first_interval_index_; } |
| @@ -741,6 +746,7 @@ class TestStatsStream : public v8::OutputStream { |
| int eos_signaled_; |
| int numbers_written_; |
| uint32_t entries_count_; |
| + uint32_t entries_size_; |
| int intervals_count_; |
| int first_interval_index_; |
| }; |
| @@ -770,7 +776,8 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data expected in update. Initial data. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_LT(0, stats_update.entries_size()); |
| CHECK_EQ(0, stats_update.first_interval_index()); |
| } |
| @@ -783,7 +790,8 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data with one new entry expected in update. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_LT(0, stats_update.entries_size()); |
| CHECK_EQ(1, stats_update.entries_count()); |
| CHECK_EQ(2, stats_update.first_interval_index()); |
| } |
| @@ -795,6 +803,7 @@ TEST(HeapSnapshotObjectsStats) { |
| v8::HandleScope inner_scope_2; |
| v8::Local<v8::String> string2 = v8_str("string2"); |
| + uint32_t entries_size; |
| { |
| v8::HandleScope inner_scope_3; |
| v8::Handle<v8::String> string3 = v8::String::New("string3"); |
| @@ -804,7 +813,9 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data with three new entries expected in update. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_LT(0, stats_update.entries_size()); |
| + entries_size = stats_update.entries_size(); |
|
mnaganov (inactive)
2012/04/16 08:13:54
I'd transpose these two lines to reuse entries_siz
|
| CHECK_EQ(3, stats_update.entries_count()); |
| CHECK_EQ(4, stats_update.first_interval_index()); |
| } |
| @@ -814,7 +825,8 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data with two left entries expected in update. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_LT(stats_update.entries_size(), entries_size); |
|
mnaganov (inactive)
2012/04/16 08:13:54
Transpose arguments, CHECK_LT -> CHECK_GT
|
| CHECK_EQ(1, stats_update.entries_count()); |
| // Two strings from forth interval were released. |
| CHECK_EQ(4, stats_update.first_interval_index()); |
| @@ -825,7 +837,8 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data with 0 left entries expected in update. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_EQ(0, stats_update.entries_size()); |
| CHECK_EQ(0, stats_update.entries_count()); |
| // The last string from forth interval was released. |
| CHECK_EQ(4, stats_update.first_interval_index()); |
| @@ -835,12 +848,46 @@ TEST(HeapSnapshotObjectsStats) { |
| // Single chunk of data with 0 left entries expected in update. |
| TestStatsStream stats_update = GetHeapStatsUpdate(); |
| CHECK_EQ(1, stats_update.intervals_count()); |
| - CHECK_EQ(2, stats_update.numbers_written()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_EQ(0, stats_update.entries_size()); |
| CHECK_EQ(0, stats_update.entries_count()); |
| // The only string from the second interval was released. |
| CHECK_EQ(2, stats_update.first_interval_index()); |
| } |
| + v8::Local<v8::Array> array = v8::Array::New(); |
| + CHECK_EQ(0, array->Length()); |
| + // Force array's buffer allocation. |
| + array->Set(2, v8_num(7)); |
| + |
| + uint32_t entries_size; |
| + { |
| + // Single chunk of data with 2 entries expected in update. |
| + TestStatsStream stats_update = GetHeapStatsUpdate(); |
| + CHECK_EQ(1, stats_update.intervals_count()); |
| + CHECK_EQ(3, stats_update.numbers_written()); |
| + CHECK_LT(0, stats_update.entries_size()); |
| + entries_size = stats_update.entries_size(); |
|
mnaganov (inactive)
2012/04/16 08:13:54
Also transpose lines
|
| + // It were the array and it's buffer. |
|
mnaganov (inactive)
2012/04/16 08:13:54
nit: "It were" -> "There are", "it's" -> "its"
|
| + CHECK_EQ(2, stats_update.entries_count()); |
| + CHECK_EQ(8, stats_update.first_interval_index()); |
| + } |
| + |
| + for (int i = 0; i < 100; ++i) |
| + array->Set(i, v8_num(i)); |
| + |
| + { |
| + // Single chunk of data with 1 entry expected in update. |
| + TestStatsStream stats_update = GetHeapStatsUpdate(); |
| + CHECK_EQ(1, stats_update.intervals_count()); |
| + // The first interval was changed because old buffer was collected. |
| + // The second interval was changed because new buffer was allocated. |
| + CHECK_EQ(6, stats_update.numbers_written()); |
| + CHECK_LT(entries_size, stats_update.entries_size()); |
| + CHECK_EQ(2, stats_update.entries_count()); |
| + CHECK_EQ(8, stats_update.first_interval_index()); |
| + } |
| + |
| v8::HeapProfiler::StopHeapObjectsTracking(); |
| } |