OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/tracked_objects.h" | 5 #include "base/tracked_objects.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 | 8 |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
758 | 758 |
759 default: | 759 default: |
760 break; | 760 break; |
761 } | 761 } |
762 } | 762 } |
763 if (tiebreaker_ && !use_tiebreaker_for_sort_only_) | 763 if (tiebreaker_ && !use_tiebreaker_for_sort_only_) |
764 return tiebreaker_->Acceptable(sample); | 764 return tiebreaker_->Acceptable(sample); |
765 return true; | 765 return true; |
766 } | 766 } |
767 | 767 |
768 void Comparator::SetTiebreaker(Selector selector, const std::string required) { | 768 void Comparator::SetTiebreaker(Selector selector, const std::string& required) { |
769 if (selector == selector_ || NIL == selector) | 769 if (selector == selector_ || NIL == selector) |
770 return; | 770 return; |
771 combined_selectors_ |= selector; | 771 combined_selectors_ |= selector; |
772 if (NIL == selector_) { | 772 if (NIL == selector_) { |
773 selector_ = selector; | 773 selector_ = selector; |
774 if (required.size()) | 774 if (required.size()) |
775 required_ = required; | 775 required_ = required; |
776 return; | 776 return; |
777 } | 777 } |
778 if (tiebreaker_) { | 778 if (tiebreaker_) { |
(...skipping 18 matching lines...) Expand all Loading... |
797 return; | 797 return; |
798 if (!tiebreaker_) { | 798 if (!tiebreaker_) { |
799 use_tiebreaker_for_sort_only_ = true; | 799 use_tiebreaker_for_sort_only_ = true; |
800 tiebreaker_ = new Comparator; | 800 tiebreaker_ = new Comparator; |
801 tiebreaker_->SetTiebreaker(selector, ""); | 801 tiebreaker_->SetTiebreaker(selector, ""); |
802 } else { | 802 } else { |
803 tiebreaker_->SetSubgroupTiebreaker(selector); | 803 tiebreaker_->SetSubgroupTiebreaker(selector); |
804 } | 804 } |
805 } | 805 } |
806 | 806 |
807 void Comparator::ParseKeyphrase(const std::string key_phrase) { | 807 void Comparator::ParseKeyphrase(const std::string& key_phrase) { |
808 static std::map<const std::string, Selector> key_map; | 808 static std::map<const std::string, Selector> key_map; |
809 static bool initialized = false; | 809 static bool initialized = false; |
810 if (!initialized) { | 810 if (!initialized) { |
811 initialized = true; | 811 initialized = true; |
812 key_map["count"] = COUNT; | 812 key_map["count"] = COUNT; |
813 key_map["duration"] = AVERAGE_DURATION; | 813 key_map["duration"] = AVERAGE_DURATION; |
814 key_map["birth"] = BIRTH_THREAD; | 814 key_map["birth"] = BIRTH_THREAD; |
815 key_map["death"] = DEATH_THREAD; | 815 key_map["death"] = DEATH_THREAD; |
816 key_map["file"] = BIRTH_FILE; | 816 key_map["file"] = BIRTH_FILE; |
817 key_map["function"] = BIRTH_FUNCTION; | 817 key_map["function"] = BIRTH_FUNCTION; |
818 key_map["line"] = BIRTH_LINE; | 818 key_map["line"] = BIRTH_LINE; |
819 } | 819 } |
820 | 820 |
821 std::string required; | 821 std::string required; |
822 size_t equal_offset = key_phrase.find('=', 0); | 822 size_t equal_offset = key_phrase.find('=', 0); |
823 if (key_phrase.npos != equal_offset) | 823 if (key_phrase.npos != equal_offset) |
824 required = key_phrase.substr(equal_offset + 1, key_phrase.npos); | 824 required = key_phrase.substr(equal_offset + 1, key_phrase.npos); |
825 std::string keyword(key_phrase.substr(0, equal_offset)); | 825 std::string keyword(key_phrase.substr(0, equal_offset)); |
826 keyword = StringToLowerASCII(keyword); | 826 keyword = StringToLowerASCII(keyword); |
827 if (key_map.end() == key_map.find(keyword)) | 827 if (key_map.end() == key_map.find(keyword)) |
828 return; | 828 return; |
829 SetTiebreaker(key_map[keyword], required); | 829 SetTiebreaker(key_map[keyword], required); |
830 } | 830 } |
831 | 831 |
832 bool Comparator::ParseQuery(const std::string query) { | 832 bool Comparator::ParseQuery(const std::string& query) { |
833 for (size_t i = 0; i < query.size();) { | 833 for (size_t i = 0; i < query.size();) { |
834 size_t slash_offset = query.find('/', i); | 834 size_t slash_offset = query.find('/', i); |
835 ParseKeyphrase(query.substr(i, slash_offset - i)); | 835 ParseKeyphrase(query.substr(i, slash_offset - i)); |
836 if (query.npos == slash_offset) | 836 if (query.npos == slash_offset) |
837 break; | 837 break; |
838 i = slash_offset + 1; | 838 i = slash_offset + 1; |
839 } | 839 } |
840 | 840 |
841 // Select subgroup ordering (if we want to display the subgroup) | 841 // Select subgroup ordering (if we want to display the subgroup) |
842 SetSubgroupTiebreaker(COUNT); | 842 SetSubgroupTiebreaker(COUNT); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 (combined_selectors_ & BIRTH_THREAD) ? "*" : | 898 (combined_selectors_ & BIRTH_THREAD) ? "*" : |
899 sample.birth().birth_thread()->ThreadName().c_str(), | 899 sample.birth().birth_thread()->ThreadName().c_str(), |
900 (combined_selectors_ & DEATH_THREAD) ? "*" : | 900 (combined_selectors_ & DEATH_THREAD) ? "*" : |
901 sample.DeathThreadName().c_str()); | 901 sample.DeathThreadName().c_str()); |
902 sample.birth().location().Write(!(combined_selectors_ & BIRTH_FILE), | 902 sample.birth().location().Write(!(combined_selectors_ & BIRTH_FILE), |
903 !(combined_selectors_ & BIRTH_FUNCTION), | 903 !(combined_selectors_ & BIRTH_FUNCTION), |
904 output); | 904 output); |
905 } | 905 } |
906 | 906 |
907 } // namespace tracked_objects | 907 } // namespace tracked_objects |
OLD | NEW |