OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "platform/assert.h" | 5 #include "platform/assert.h" |
6 | 6 |
7 #include "vm/dart_api_impl.h" | 7 #include "vm/dart_api_impl.h" |
8 #include "vm/dart_api_state.h" | 8 #include "vm/dart_api_state.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 #include "vm/profiler.h" | 10 #include "vm/profiler.h" |
(...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 EXPECT_EQ(50000, profile.sample_count()); | 1528 EXPECT_EQ(50000, profile.sample_count()); |
1529 ProfileTrieWalker walker(&profile); | 1529 ProfileTrieWalker walker(&profile); |
1530 // We have two code objects: mainA and B.boo. | 1530 // We have two code objects: mainA and B.boo. |
1531 walker.Reset(Profile::kExclusiveCode); | 1531 walker.Reset(Profile::kExclusiveCode); |
1532 EXPECT(walker.Down()); | 1532 EXPECT(walker.Down()); |
1533 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); | 1533 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); |
1534 EXPECT(walker.Down()); | 1534 EXPECT(walker.Down()); |
1535 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); | 1535 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); |
1536 EXPECT_EQ(50000, walker.CurrentExclusiveTicks()); | 1536 EXPECT_EQ(50000, walker.CurrentExclusiveTicks()); |
1537 EXPECT(walker.Down()); | 1537 EXPECT(walker.Down()); |
1538 EXPECT_STREQ("B.boo", walker.CurrentName()); | 1538 EXPECT_STREQ("*B.boo", walker.CurrentName()); |
1539 EXPECT_EQ(1, walker.SiblingCount()); | 1539 EXPECT_EQ(1, walker.SiblingCount()); |
1540 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); | 1540 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); |
1541 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); | 1541 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); |
1542 EXPECT(walker.Down()); | 1542 EXPECT(walker.Down()); |
1543 EXPECT_STREQ("mainA", walker.CurrentName()); | 1543 EXPECT_STREQ("mainA", walker.CurrentName()); |
1544 EXPECT_EQ(1, walker.SiblingCount()); | 1544 EXPECT_EQ(1, walker.SiblingCount()); |
1545 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); | 1545 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); |
1546 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); | 1546 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); |
1547 EXPECT_EQ(0, walker.CurrentExclusiveTicks()); | 1547 EXPECT_EQ(0, walker.CurrentExclusiveTicks()); |
1548 EXPECT(!walker.Down()); | 1548 EXPECT(!walker.Down()); |
1549 // We have two code objects: mainA and B.boo. | 1549 // We have two code objects: mainA and B.boo. |
1550 walker.Reset(Profile::kInclusiveCode); | 1550 walker.Reset(Profile::kInclusiveCode); |
1551 EXPECT(walker.Down()); | 1551 EXPECT(walker.Down()); |
1552 EXPECT_STREQ("mainA", walker.CurrentName()); | 1552 EXPECT_STREQ("mainA", walker.CurrentName()); |
1553 EXPECT_EQ(1, walker.SiblingCount()); | 1553 EXPECT_EQ(1, walker.SiblingCount()); |
1554 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); | 1554 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); |
1555 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); | 1555 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); |
1556 EXPECT_EQ(0, walker.CurrentExclusiveTicks()); | 1556 EXPECT_EQ(0, walker.CurrentExclusiveTicks()); |
1557 EXPECT(walker.Down()); | 1557 EXPECT(walker.Down()); |
1558 EXPECT_STREQ("B.boo", walker.CurrentName()); | 1558 EXPECT_STREQ("*B.boo", walker.CurrentName()); |
1559 EXPECT_EQ(1, walker.SiblingCount()); | 1559 EXPECT_EQ(1, walker.SiblingCount()); |
1560 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); | 1560 EXPECT_EQ(50000, walker.CurrentNodeTickCount()); |
1561 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); | 1561 EXPECT_EQ(50000, walker.CurrentInclusiveTicks()); |
1562 EXPECT(walker.Down()); | 1562 EXPECT(walker.Down()); |
1563 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); | 1563 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); |
1564 EXPECT_EQ(50000, walker.CurrentExclusiveTicks()); | 1564 EXPECT_EQ(50000, walker.CurrentExclusiveTicks()); |
1565 EXPECT(walker.Down()); | 1565 EXPECT(walker.Down()); |
1566 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); | 1566 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); |
1567 EXPECT(!walker.Down()); | 1567 EXPECT(!walker.Down()); |
1568 | 1568 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 ProfileTrieWalker walker(&profile); | 1648 ProfileTrieWalker walker(&profile); |
1649 // We have two code objects: mainA and B.boo. | 1649 // We have two code objects: mainA and B.boo. |
1650 walker.Reset(Profile::kExclusiveCode); | 1650 walker.Reset(Profile::kExclusiveCode); |
1651 EXPECT(walker.Down()); | 1651 EXPECT(walker.Down()); |
1652 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); | 1652 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); |
1653 EXPECT(walker.Down()); | 1653 EXPECT(walker.Down()); |
1654 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); | 1654 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); |
1655 EXPECT(walker.Down()); | 1655 EXPECT(walker.Down()); |
1656 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); | 1656 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); |
1657 EXPECT(walker.Down()); | 1657 EXPECT(walker.Down()); |
1658 EXPECT_STREQ("B.boo", walker.CurrentName()); | 1658 EXPECT_STREQ("*B.boo", walker.CurrentName()); |
1659 EXPECT(walker.Down()); | 1659 EXPECT(walker.Down()); |
1660 EXPECT_STREQ("[Optimized Code]", walker.CurrentName()); | 1660 EXPECT_STREQ("[Optimized Code]", walker.CurrentName()); |
1661 EXPECT(walker.Down()); | 1661 EXPECT(walker.Down()); |
1662 EXPECT_STREQ("mainA", walker.CurrentName()); | 1662 EXPECT_STREQ("mainA", walker.CurrentName()); |
1663 EXPECT(walker.Down()); | 1663 EXPECT(walker.Down()); |
1664 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); | 1664 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); |
1665 EXPECT(!walker.Down()); | 1665 EXPECT(!walker.Down()); |
1666 // We have two code objects: mainA and B.boo. | 1666 // We have two code objects: mainA and B.boo. |
1667 walker.Reset(Profile::kInclusiveCode); | 1667 walker.Reset(Profile::kInclusiveCode); |
1668 EXPECT(walker.Down()); | 1668 EXPECT(walker.Down()); |
1669 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); | 1669 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); |
1670 EXPECT(walker.Down()); | 1670 EXPECT(walker.Down()); |
1671 EXPECT_STREQ("mainA", walker.CurrentName()); | 1671 EXPECT_STREQ("mainA", walker.CurrentName()); |
1672 EXPECT(walker.Down()); | 1672 EXPECT(walker.Down()); |
1673 EXPECT_STREQ("[Optimized Code]", walker.CurrentName()); | 1673 EXPECT_STREQ("[Optimized Code]", walker.CurrentName()); |
1674 EXPECT(walker.Down()); | 1674 EXPECT(walker.Down()); |
1675 EXPECT_STREQ("B.boo", walker.CurrentName()); | 1675 EXPECT_STREQ("*B.boo", walker.CurrentName()); |
1676 EXPECT(walker.Down()); | 1676 EXPECT(walker.Down()); |
1677 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); | 1677 EXPECT_STREQ("[Unoptimized Code]", walker.CurrentName()); |
1678 EXPECT(walker.Down()); | 1678 EXPECT(walker.Down()); |
1679 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); | 1679 EXPECT_STREQ("[Stub] Allocate A", walker.CurrentName()); |
1680 EXPECT(walker.Down()); | 1680 EXPECT(walker.Down()); |
1681 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); | 1681 EXPECT_STREQ("DRT_AllocateObject", walker.CurrentName()); |
1682 EXPECT(!walker.Down()); | 1682 EXPECT(!walker.Down()); |
1683 | 1683 |
1684 // Inline expansion should show us the complete call chain: | 1684 // Inline expansion should show us the complete call chain: |
1685 // mainA -> B.boo -> B.foo -> B.choo. | 1685 // mainA -> B.boo -> B.foo -> B.choo. |
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2805 EXPECT_SUBSTRING("\"positions\":[\"TempMove\",39]", js.ToCString()); | 2805 EXPECT_SUBSTRING("\"positions\":[\"TempMove\",39]", js.ToCString()); |
2806 // Verify exclusive ticks in main. | 2806 // Verify exclusive ticks in main. |
2807 EXPECT_SUBSTRING("\"exclusiveTicks\":[1,0]", js.ToCString()); | 2807 EXPECT_SUBSTRING("\"exclusiveTicks\":[1,0]", js.ToCString()); |
2808 // Verify inclusive ticks in main. | 2808 // Verify inclusive ticks in main. |
2809 EXPECT_SUBSTRING("\"inclusiveTicks\":[1,2]", js.ToCString()); | 2809 EXPECT_SUBSTRING("\"inclusiveTicks\":[1,2]", js.ToCString()); |
2810 } | 2810 } |
2811 | 2811 |
2812 #endif // !PRODUCT | 2812 #endif // !PRODUCT |
2813 | 2813 |
2814 } // namespace dart | 2814 } // namespace dart |
OLD | NEW |