| Index: base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
|
| diff --git a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
|
| index 05c60c722c317cca7bf6e52453a5faba1d7b1903..a39700e4fff4171d6701883d83d6a8ef98a85cdd 100644
|
| --- a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
|
| +++ b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc
|
| @@ -33,7 +33,7 @@ void AssertBacktraceEquals(const StackFrame(&expected_backtrace)[N]) {
|
| ->GetContextSnapshot();
|
|
|
| auto actual = std::begin(ctx.backtrace.frames);
|
| - auto actual_bottom = std::end(ctx.backtrace.frames);
|
| + auto actual_bottom = actual + ctx.backtrace.frame_count;
|
| auto expected = std::begin(expected_backtrace);
|
| auto expected_bottom = std::end(expected_backtrace);
|
|
|
| @@ -53,8 +53,7 @@ void AssertBacktraceEmpty() {
|
| AllocationContextTracker::GetInstanceForCurrentThread()
|
| ->GetContextSnapshot();
|
|
|
| - for (StackFrame frame : ctx.backtrace.frames)
|
| - ASSERT_EQ(nullptr, frame);
|
| + ASSERT_EQ(0u, ctx.backtrace.frame_count);
|
| }
|
|
|
| class AllocationContextTrackerTest : public testing::Test {
|
| @@ -72,24 +71,22 @@ class AllocationContextTrackerTest : public testing::Test {
|
| };
|
|
|
| // Check that |TRACE_EVENT| macros push and pop to the pseudo stack correctly.
|
| -// Also check that |GetContextSnapshot| fills the backtrace with null pointers
|
| -// when the pseudo stack height is less than the capacity.
|
| TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) {
|
| - StackFrame c = kCupcake;
|
| - StackFrame d = kDonut;
|
| - StackFrame e = kEclair;
|
| - StackFrame f = kFroyo;
|
| + StackFrame c = StackFrame::FromTraceEventName(kCupcake);
|
| + StackFrame d = StackFrame::FromTraceEventName(kDonut);
|
| + StackFrame e = StackFrame::FromTraceEventName(kEclair);
|
| + StackFrame f = StackFrame::FromTraceEventName(kFroyo);
|
|
|
| AssertBacktraceEmpty();
|
|
|
| {
|
| TRACE_EVENT0("Testing", kCupcake);
|
| - StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_c[] = {c};
|
| AssertBacktraceEquals(frame_c);
|
|
|
| {
|
| TRACE_EVENT0("Testing", kDonut);
|
| - StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_cd[] = {c, d};
|
| AssertBacktraceEquals(frame_cd);
|
| }
|
|
|
| @@ -97,7 +94,7 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) {
|
|
|
| {
|
| TRACE_EVENT0("Testing", kEclair);
|
| - StackFrame frame_ce[] = {c, e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_ce[] = {c, e};
|
| AssertBacktraceEquals(frame_ce);
|
| }
|
|
|
| @@ -108,7 +105,7 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) {
|
|
|
| {
|
| TRACE_EVENT0("Testing", kFroyo);
|
| - StackFrame frame_f[] = {f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_f[] = {f};
|
| AssertBacktraceEquals(frame_f);
|
| }
|
|
|
| @@ -118,15 +115,15 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) {
|
| // Same as |PseudoStackScopedTrace|, but now test the |TRACE_EVENT_BEGIN| and
|
| // |TRACE_EVENT_END| macros.
|
| TEST_F(AllocationContextTrackerTest, PseudoStackBeginEndTrace) {
|
| - StackFrame c = kCupcake;
|
| - StackFrame d = kDonut;
|
| - StackFrame e = kEclair;
|
| - StackFrame f = kFroyo;
|
| + StackFrame c = StackFrame::FromTraceEventName(kCupcake);
|
| + StackFrame d = StackFrame::FromTraceEventName(kDonut);
|
| + StackFrame e = StackFrame::FromTraceEventName(kEclair);
|
| + StackFrame f = StackFrame::FromTraceEventName(kFroyo);
|
|
|
| - StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_ce[] = {c, e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_f[] = {f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_c[] = {c};
|
| + StackFrame frame_cd[] = {c, d};
|
| + StackFrame frame_ce[] = {c, e};
|
| + StackFrame frame_f[] = {f};
|
|
|
| AssertBacktraceEmpty();
|
|
|
| @@ -156,15 +153,15 @@ TEST_F(AllocationContextTrackerTest, PseudoStackBeginEndTrace) {
|
| }
|
|
|
| TEST_F(AllocationContextTrackerTest, PseudoStackMixedTrace) {
|
| - StackFrame c = kCupcake;
|
| - StackFrame d = kDonut;
|
| - StackFrame e = kEclair;
|
| - StackFrame f = kFroyo;
|
| + StackFrame c = StackFrame::FromTraceEventName(kCupcake);
|
| + StackFrame d = StackFrame::FromTraceEventName(kDonut);
|
| + StackFrame e = StackFrame::FromTraceEventName(kEclair);
|
| + StackFrame f = StackFrame::FromTraceEventName(kFroyo);
|
|
|
| - StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_e[] = {e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| - StackFrame frame_ef[] = {e, f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| + StackFrame frame_c[] = {c};
|
| + StackFrame frame_cd[] = {c, d};
|
| + StackFrame frame_e[] = {e};
|
| + StackFrame frame_ef[] = {e, f};
|
|
|
| AssertBacktraceEmpty();
|
|
|
| @@ -194,6 +191,9 @@ TEST_F(AllocationContextTrackerTest, PseudoStackMixedTrace) {
|
| }
|
|
|
| TEST_F(AllocationContextTrackerTest, BacktraceTakesTop) {
|
| + StackFrame c = StackFrame::FromTraceEventName(kCupcake);
|
| + StackFrame f = StackFrame::FromTraceEventName(kFroyo);
|
| +
|
| // Push 12 events onto the pseudo stack.
|
| TRACE_EVENT0("Testing", kCupcake);
|
| TRACE_EVENT0("Testing", kCupcake);
|
| @@ -217,16 +217,16 @@ TEST_F(AllocationContextTrackerTest, BacktraceTakesTop) {
|
| ->GetContextSnapshot();
|
|
|
| // The pseudo stack relies on pointer equality, not deep string comparisons.
|
| - ASSERT_EQ(kCupcake, ctx.backtrace.frames[0]);
|
| - ASSERT_EQ(kFroyo, ctx.backtrace.frames[11]);
|
| + ASSERT_EQ(c, ctx.backtrace.frames[0]);
|
| + ASSERT_EQ(f, ctx.backtrace.frames[11]);
|
| }
|
|
|
| {
|
| AllocationContext ctx =
|
| AllocationContextTracker::GetInstanceForCurrentThread()
|
| ->GetContextSnapshot();
|
| - ASSERT_EQ(kCupcake, ctx.backtrace.frames[0]);
|
| - ASSERT_EQ(kFroyo, ctx.backtrace.frames[11]);
|
| + ASSERT_EQ(c, ctx.backtrace.frames[0]);
|
| + ASSERT_EQ(f, ctx.backtrace.frames[11]);
|
| }
|
| }
|
|
|
| @@ -239,8 +239,8 @@ TEST_F(AllocationContextTrackerTest, SetCurrentThreadName) {
|
| AllocationContext ctx1 =
|
| AllocationContextTracker::GetInstanceForCurrentThread()
|
| ->GetContextSnapshot();
|
| - ASSERT_EQ(kThread1, ctx1.backtrace.frames[0]);
|
| - ASSERT_EQ(kCupcake, ctx1.backtrace.frames[1]);
|
| + ASSERT_EQ(StackFrame::FromThreadName(kThread1), ctx1.backtrace.frames[0]);
|
| + ASSERT_EQ(StackFrame::FromTraceEventName(kCupcake), ctx1.backtrace.frames[1]);
|
|
|
| // Test if the thread name is reset.
|
| const char kThread2[] = "thread2";
|
| @@ -248,8 +248,8 @@ TEST_F(AllocationContextTrackerTest, SetCurrentThreadName) {
|
| AllocationContext ctx2 =
|
| AllocationContextTracker::GetInstanceForCurrentThread()
|
| ->GetContextSnapshot();
|
| - ASSERT_EQ(kThread2, ctx2.backtrace.frames[0]);
|
| - ASSERT_EQ(kCupcake, ctx2.backtrace.frames[1]);
|
| + ASSERT_EQ(StackFrame::FromThreadName(kThread2), ctx2.backtrace.frames[0]);
|
| + ASSERT_EQ(StackFrame::FromTraceEventName(kCupcake), ctx2.backtrace.frames[1]);
|
| }
|
|
|
| TEST_F(AllocationContextTrackerTest, TrackTaskContext) {
|
|
|