| 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 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 HANDLESCOPE(thread); | 653 HANDLESCOPE(thread); |
| 654 Profile profile(isolate); | 654 Profile profile(isolate); |
| 655 AllocationFilter filter(isolate, double_class.id()); | 655 AllocationFilter filter(isolate, double_class.id()); |
| 656 profile.Build(thread, &filter, Profile::kNoTags); | 656 profile.Build(thread, &filter, Profile::kNoTags); |
| 657 // We should have one allocation sample. | 657 // We should have one allocation sample. |
| 658 EXPECT_EQ(1, profile.sample_count()); | 658 EXPECT_EQ(1, profile.sample_count()); |
| 659 ProfileTrieWalker walker(&profile); | 659 ProfileTrieWalker walker(&profile); |
| 660 | 660 |
| 661 walker.Reset(Profile::kExclusiveCode); | 661 walker.Reset(Profile::kExclusiveCode); |
| 662 EXPECT(walker.Down()); | 662 EXPECT(walker.Down()); |
| 663 EXPECT_STREQ("_Double._add", walker.CurrentName()); | 663 EXPECT_STREQ("double._add", walker.CurrentName()); |
| 664 EXPECT(walker.Down()); | 664 EXPECT(walker.Down()); |
| 665 EXPECT_STREQ("_Double.+", walker.CurrentName()); | 665 EXPECT_STREQ("double.+", walker.CurrentName()); |
| 666 EXPECT(walker.Down()); | 666 EXPECT(walker.Down()); |
| 667 EXPECT_STREQ("foo", walker.CurrentName()); | 667 EXPECT_STREQ("foo", walker.CurrentName()); |
| 668 EXPECT(!walker.Down()); | 668 EXPECT(!walker.Down()); |
| 669 } | 669 } |
| 670 | 670 |
| 671 double_class.SetTraceAllocation(false); | 671 double_class.SetTraceAllocation(false); |
| 672 result = Dart_Invoke(lib, NewString("foo"), 2, &args[0]); | 672 result = Dart_Invoke(lib, NewString("foo"), 2, &args[0]); |
| 673 EXPECT_VALID(result); | 673 EXPECT_VALID(result); |
| 674 | 674 |
| 675 { | 675 { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 HANDLESCOPE(thread); | 721 HANDLESCOPE(thread); |
| 722 Profile profile(isolate); | 722 Profile profile(isolate); |
| 723 AllocationFilter filter(isolate, array_class.id()); | 723 AllocationFilter filter(isolate, array_class.id()); |
| 724 profile.Build(thread, &filter, Profile::kNoTags); | 724 profile.Build(thread, &filter, Profile::kNoTags); |
| 725 // We should have one allocation sample. | 725 // We should have one allocation sample. |
| 726 EXPECT_EQ(1, profile.sample_count()); | 726 EXPECT_EQ(1, profile.sample_count()); |
| 727 ProfileTrieWalker walker(&profile); | 727 ProfileTrieWalker walker(&profile); |
| 728 | 728 |
| 729 walker.Reset(Profile::kExclusiveCode); | 729 walker.Reset(Profile::kExclusiveCode); |
| 730 EXPECT(walker.Down()); | 730 EXPECT(walker.Down()); |
| 731 EXPECT_STREQ("_List._List", walker.CurrentName()); | 731 EXPECT_STREQ("List._List", walker.CurrentName()); |
| 732 EXPECT(walker.Down()); | 732 EXPECT(walker.Down()); |
| 733 EXPECT_STREQ("List.List", walker.CurrentName()); | 733 EXPECT_STREQ("List.List", walker.CurrentName()); |
| 734 EXPECT(walker.Down()); | 734 EXPECT(walker.Down()); |
| 735 EXPECT_STREQ("foo", walker.CurrentName()); | 735 EXPECT_STREQ("foo", walker.CurrentName()); |
| 736 EXPECT(!walker.Down()); | 736 EXPECT(!walker.Down()); |
| 737 } | 737 } |
| 738 | 738 |
| 739 array_class.SetTraceAllocation(false); | 739 array_class.SetTraceAllocation(false); |
| 740 result = Dart_Invoke(lib, NewString("foo"), 0, NULL); | 740 result = Dart_Invoke(lib, NewString("foo"), 0, NULL); |
| 741 EXPECT_VALID(result); | 741 EXPECT_VALID(result); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 769 HANDLESCOPE(thread); | 769 HANDLESCOPE(thread); |
| 770 Profile profile(isolate); | 770 Profile profile(isolate); |
| 771 AllocationFilter filter(isolate, array_class.id()); | 771 AllocationFilter filter(isolate, array_class.id()); |
| 772 profile.Build(thread, &filter, Profile::kNoTags); | 772 profile.Build(thread, &filter, Profile::kNoTags); |
| 773 // We should still only have one allocation sample. | 773 // We should still only have one allocation sample. |
| 774 EXPECT_EQ(1, profile.sample_count()); | 774 EXPECT_EQ(1, profile.sample_count()); |
| 775 ProfileTrieWalker walker(&profile); | 775 ProfileTrieWalker walker(&profile); |
| 776 | 776 |
| 777 walker.Reset(Profile::kExclusiveCode); | 777 walker.Reset(Profile::kExclusiveCode); |
| 778 EXPECT(walker.Down()); | 778 EXPECT(walker.Down()); |
| 779 EXPECT_STREQ("_List._List", walker.CurrentName()); | 779 EXPECT_STREQ("List._List", walker.CurrentName()); |
| 780 EXPECT(walker.Down()); | 780 EXPECT(walker.Down()); |
| 781 EXPECT_STREQ("_GrowableList._GrowableList", walker.CurrentName()); | 781 EXPECT_STREQ("List._GrowableList", walker.CurrentName()); |
| 782 EXPECT(walker.Down()); | 782 EXPECT(walker.Down()); |
| 783 EXPECT_STREQ("List.List", walker.CurrentName()); | 783 EXPECT_STREQ("List.List", walker.CurrentName()); |
| 784 EXPECT(walker.Down()); | 784 EXPECT(walker.Down()); |
| 785 EXPECT_STREQ("bar", walker.CurrentName()); | 785 EXPECT_STREQ("bar", walker.CurrentName()); |
| 786 EXPECT(!walker.Down()); | 786 EXPECT(!walker.Down()); |
| 787 } | 787 } |
| 788 } | 788 } |
| 789 | 789 |
| 790 | 790 |
| 791 TEST_CASE(Profiler_ContextAllocation) { | 791 TEST_CASE(Profiler_ContextAllocation) { |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 HANDLESCOPE(thread); | 963 HANDLESCOPE(thread); |
| 964 Profile profile(isolate); | 964 Profile profile(isolate); |
| 965 AllocationFilter filter(isolate, float32_list_class.id()); | 965 AllocationFilter filter(isolate, float32_list_class.id()); |
| 966 profile.Build(thread, &filter, Profile::kNoTags); | 966 profile.Build(thread, &filter, Profile::kNoTags); |
| 967 // We should have one allocation sample. | 967 // We should have one allocation sample. |
| 968 EXPECT_EQ(1, profile.sample_count()); | 968 EXPECT_EQ(1, profile.sample_count()); |
| 969 ProfileTrieWalker walker(&profile); | 969 ProfileTrieWalker walker(&profile); |
| 970 | 970 |
| 971 walker.Reset(Profile::kExclusiveCode); | 971 walker.Reset(Profile::kExclusiveCode); |
| 972 EXPECT(walker.Down()); | 972 EXPECT(walker.Down()); |
| 973 EXPECT_STREQ("_Float32Array._new", walker.CurrentName()); | 973 EXPECT_STREQ("Float32List._new", walker.CurrentName()); |
| 974 EXPECT(walker.Down()); | 974 EXPECT(walker.Down()); |
| 975 EXPECT_STREQ("_Float32Array._Float32Array", walker.CurrentName()); | 975 EXPECT_STREQ("Float32List._Float32Array", walker.CurrentName()); |
| 976 EXPECT(walker.Down()); | 976 EXPECT(walker.Down()); |
| 977 EXPECT_STREQ("Float32List.Float32List", walker.CurrentName()); | 977 EXPECT_STREQ("Float32List.Float32List", walker.CurrentName()); |
| 978 EXPECT(walker.Down()); | 978 EXPECT(walker.Down()); |
| 979 EXPECT_STREQ("foo", walker.CurrentName()); | 979 EXPECT_STREQ("foo", walker.CurrentName()); |
| 980 EXPECT(!walker.Down()); | 980 EXPECT(!walker.Down()); |
| 981 } | 981 } |
| 982 | 982 |
| 983 float32_list_class.SetTraceAllocation(false); | 983 float32_list_class.SetTraceAllocation(false); |
| 984 result = Dart_Invoke(lib, NewString("foo"), 0, NULL); | 984 result = Dart_Invoke(lib, NewString("foo"), 0, NULL); |
| 985 EXPECT_VALID(result); | 985 EXPECT_VALID(result); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1127 HANDLESCOPE(thread); | 1127 HANDLESCOPE(thread); |
| 1128 Profile profile(isolate); | 1128 Profile profile(isolate); |
| 1129 AllocationFilter filter(isolate, one_byte_string_class.id()); | 1129 AllocationFilter filter(isolate, one_byte_string_class.id()); |
| 1130 profile.Build(thread, &filter, Profile::kNoTags); | 1130 profile.Build(thread, &filter, Profile::kNoTags); |
| 1131 // We should still only have one allocation sample. | 1131 // We should still only have one allocation sample. |
| 1132 EXPECT_EQ(1, profile.sample_count()); | 1132 EXPECT_EQ(1, profile.sample_count()); |
| 1133 ProfileTrieWalker walker(&profile); | 1133 ProfileTrieWalker walker(&profile); |
| 1134 | 1134 |
| 1135 walker.Reset(Profile::kExclusiveCode); | 1135 walker.Reset(Profile::kExclusiveCode); |
| 1136 EXPECT(walker.Down()); | 1136 EXPECT(walker.Down()); |
| 1137 EXPECT_STREQ("_OneByteString._allocate", walker.CurrentName()); | 1137 EXPECT_STREQ("String._allocate", walker.CurrentName()); |
| 1138 EXPECT(walker.Down()); | 1138 EXPECT(walker.Down()); |
| 1139 EXPECT_STREQ("_OneByteString._concatAll", walker.CurrentName()); | 1139 EXPECT_STREQ("String._concatAll", walker.CurrentName()); |
| 1140 EXPECT(walker.Down()); | 1140 EXPECT(walker.Down()); |
| 1141 EXPECT_STREQ("_StringBase._interpolate", walker.CurrentName()); | 1141 EXPECT_STREQ("_StringBase._interpolate", walker.CurrentName()); |
| 1142 EXPECT(walker.Down()); | 1142 EXPECT(walker.Down()); |
| 1143 EXPECT_STREQ("foo", walker.CurrentName()); | 1143 EXPECT_STREQ("foo", walker.CurrentName()); |
| 1144 EXPECT(!walker.Down()); | 1144 EXPECT(!walker.Down()); |
| 1145 } | 1145 } |
| 1146 | 1146 |
| 1147 one_byte_string_class.SetTraceAllocation(false); | 1147 one_byte_string_class.SetTraceAllocation(false); |
| 1148 result = Dart_Invoke(lib, NewString("foo"), 2, &args[0]); | 1148 result = Dart_Invoke(lib, NewString("foo"), 2, &args[0]); |
| 1149 EXPECT_VALID(result); | 1149 EXPECT_VALID(result); |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1655 EXPECT_STREQ("go", walker.CurrentName()); | 1655 EXPECT_STREQ("go", walker.CurrentName()); |
| 1656 EXPECT(walker.Down()); | 1656 EXPECT(walker.Down()); |
| 1657 EXPECT_STREQ("main", walker.CurrentName()); | 1657 EXPECT_STREQ("main", walker.CurrentName()); |
| 1658 EXPECT(!walker.Down()); | 1658 EXPECT(!walker.Down()); |
| 1659 } | 1659 } |
| 1660 } | 1660 } |
| 1661 | 1661 |
| 1662 #endif // !PRODUCT | 1662 #endif // !PRODUCT |
| 1663 | 1663 |
| 1664 } // namespace dart | 1664 } // namespace dart |
| OLD | NEW |