| Index: test/cctest/test-heap-profiler.cc
|
| diff --git a/test/cctest/test-heap-profiler.cc b/test/cctest/test-heap-profiler.cc
|
| index 1c3df0311a514557ad883f748c7dc9e60364c4f1..00304c03b44643f79cc3cde5224ba146311f02ba 100644
|
| --- a/test/cctest/test-heap-profiler.cc
|
| +++ b/test/cctest/test-heap-profiler.cc
|
| @@ -2506,3 +2506,62 @@ TEST(BoxObject) {
|
| GetProperty(box_node, v8::HeapGraphEdge::kInternal, "value");
|
| CHECK_NE(NULL, box_value);
|
| }
|
| +
|
| +
|
| +static inline i::Address ToAddress(int n) {
|
| + return reinterpret_cast<i::Address>(n);
|
| +}
|
| +
|
| +
|
| +TEST(AddressToTraceMap) {
|
| + i::AddressToTraceMap map;
|
| +
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(150)));
|
| +
|
| + // [100, 200)
|
| + map.AddRange(ToAddress(100), 100, 1U);
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(50)));
|
| + CHECK_EQ(1, map.GetTraceNodeId(ToAddress(100)));
|
| + CHECK_EQ(1, map.GetTraceNodeId(ToAddress(150)));
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(100 + 100)));
|
| + CHECK_EQ(1, map.size());
|
| +
|
| + // [100, 200), [200, 300)
|
| + map.AddRange(ToAddress(200), 100, 2U);
|
| + CHECK_EQ(2, map.GetTraceNodeId(ToAddress(250)));
|
| + CHECK_EQ(2, map.size());
|
| +
|
| + // [100, 150), [150, 250), [250, 300)
|
| + map.AddRange(ToAddress(150), 100, 3U);
|
| + CHECK_EQ(1, map.GetTraceNodeId(ToAddress(149)));
|
| + CHECK_EQ(2, map.GetTraceNodeId(ToAddress(250)));
|
| + CHECK_EQ(3, map.GetTraceNodeId(ToAddress(150)));
|
| + CHECK_EQ(3, map.size());
|
| +
|
| + // [100, 150), [150, 250), [250, 300), [400, 500)
|
| + map.AddRange(ToAddress(400), 100, 4U);
|
| + CHECK_EQ(1, map.GetTraceNodeId(ToAddress(149)));
|
| + CHECK_EQ(2, map.GetTraceNodeId(ToAddress(250)));
|
| + CHECK_EQ(3, map.GetTraceNodeId(ToAddress(150)));
|
| + CHECK_EQ(4, map.GetTraceNodeId(ToAddress(450)));
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(500)));
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(350)));
|
| + CHECK_EQ(4, map.size());
|
| +
|
| + // [100, 150), [150, 200), [200, 600)
|
| + map.AddRange(ToAddress(200), 400, 5U);
|
| + CHECK_EQ(5, map.GetTraceNodeId(ToAddress(200)));
|
| + CHECK_EQ(5, map.GetTraceNodeId(ToAddress(400)));
|
| + CHECK_EQ(3, map.size());
|
| +
|
| + // [100, 150), [150, 200), [200, 600)
|
| + map.AddRange(ToAddress(150), 50, 6U);
|
| + map.AddRange(ToAddress(150), 50, 7U);
|
| + CHECK_EQ(7, map.GetTraceNodeId(ToAddress(150)));
|
| + CHECK_EQ(5, map.GetTraceNodeId(ToAddress(200)));
|
| + CHECK_EQ(3, map.size());
|
| +
|
| + map.Clear();
|
| + CHECK_EQ(0, map.size());
|
| + CHECK_EQ(0, map.GetTraceNodeId(ToAddress(400)));
|
| +}
|
|
|