Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: runtime/vm/profiler_test.cc

Issue 2803013004: Mark optimized code for the crash handler and disassembler output. (Closed)
Patch Set: . Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/stack_frame.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/stack_frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698