| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 | 176 |
| 177 size_t StringsStorage::GetUsedMemorySize() const { | 177 size_t StringsStorage::GetUsedMemorySize() const { |
| 178 size_t size = sizeof(*this); | 178 size_t size = sizeof(*this); |
| 179 size += sizeof(HashMap::Entry) * names_.capacity(); | 179 size += sizeof(HashMap::Entry) * names_.capacity(); |
| 180 for (HashMap::Entry* p = names_.Start(); p != NULL; p = names_.Next(p)) { | 180 for (HashMap::Entry* p = names_.Start(); p != NULL; p = names_.Next(p)) { |
| 181 size += strlen(reinterpret_cast<const char*>(p->value)) + 1; | 181 size += strlen(reinterpret_cast<const char*>(p->value)) + 1; |
| 182 } | 182 } |
| 183 return size; | 183 return size; |
| 184 } | 184 } |
| 185 | 185 |
| 186 |
| 186 const char* const CodeEntry::kEmptyNamePrefix = ""; | 187 const char* const CodeEntry::kEmptyNamePrefix = ""; |
| 188 const char* const CodeEntry::kEmptyResourceName = ""; |
| 187 | 189 |
| 188 | 190 |
| 189 CodeEntry::~CodeEntry() { | 191 CodeEntry::~CodeEntry() { |
| 190 delete no_frame_ranges_; | 192 delete no_frame_ranges_; |
| 191 } | 193 } |
| 192 | 194 |
| 193 | 195 |
| 194 void CodeEntry::CopyData(const CodeEntry& source) { | 196 void CodeEntry::CopyData(const CodeEntry& source) { |
| 195 tag_ = source.tag_; | 197 tag_ = source.tag_; |
| 196 name_prefix_ = source.name_prefix_; | 198 name_prefix_ = source.name_prefix_; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 | 291 |
| 290 void AfterAllChildrenTraversed(ProfileNode* node) { | 292 void AfterAllChildrenTraversed(ProfileNode* node) { |
| 291 delete node; | 293 delete node; |
| 292 } | 294 } |
| 293 | 295 |
| 294 void AfterChildTraversed(ProfileNode*, ProfileNode*) { } | 296 void AfterChildTraversed(ProfileNode*, ProfileNode*) { } |
| 295 }; | 297 }; |
| 296 | 298 |
| 297 | 299 |
| 298 ProfileTree::ProfileTree() | 300 ProfileTree::ProfileTree() |
| 299 : root_entry_(Logger::FUNCTION_TAG, | 301 : root_entry_(Logger::FUNCTION_TAG, "", "(root)"), |
| 300 "", | |
| 301 "(root)", | |
| 302 "", | |
| 303 0, | |
| 304 TokenEnumerator::kNoSecurityToken), | |
| 305 next_node_id_(1), | 302 next_node_id_(1), |
| 306 root_(new ProfileNode(this, &root_entry_)) { | 303 root_(new ProfileNode(this, &root_entry_)) { |
| 307 } | 304 } |
| 308 | 305 |
| 309 | 306 |
| 310 ProfileTree::~ProfileTree() { | 307 ProfileTree::~ProfileTree() { |
| 311 DeleteNodesCallback cb; | 308 DeleteNodesCallback cb; |
| 312 TraverseDepthFirst(&cb); | 309 TraverseDepthFirst(&cb); |
| 313 } | 310 } |
| 314 | 311 |
| (...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 } | 787 } |
| 791 | 788 |
| 792 | 789 |
| 793 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, | 790 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, |
| 794 Name* name, | 791 Name* name, |
| 795 String* resource_name, | 792 String* resource_name, |
| 796 int line_number) { | 793 int line_number) { |
| 797 CodeEntry* entry = new CodeEntry(tag, | 794 CodeEntry* entry = new CodeEntry(tag, |
| 798 CodeEntry::kEmptyNamePrefix, | 795 CodeEntry::kEmptyNamePrefix, |
| 799 GetFunctionName(name), | 796 GetFunctionName(name), |
| 797 TokenEnumerator::kNoSecurityToken, |
| 800 GetName(resource_name), | 798 GetName(resource_name), |
| 801 line_number, | 799 line_number); |
| 802 TokenEnumerator::kNoSecurityToken); | |
| 803 code_entries_.Add(entry); | 800 code_entries_.Add(entry); |
| 804 return entry; | 801 return entry; |
| 805 } | 802 } |
| 806 | 803 |
| 807 | 804 |
| 808 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, | 805 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, |
| 809 const char* name) { | 806 const char* name) { |
| 810 CodeEntry* entry = new CodeEntry(tag, | 807 CodeEntry* entry = new CodeEntry(tag, |
| 811 CodeEntry::kEmptyNamePrefix, | 808 CodeEntry::kEmptyNamePrefix, |
| 812 GetFunctionName(name), | 809 GetFunctionName(name)); |
| 813 "", | |
| 814 v8::CpuProfileNode::kNoLineNumberInfo, | |
| 815 TokenEnumerator::kNoSecurityToken); | |
| 816 code_entries_.Add(entry); | 810 code_entries_.Add(entry); |
| 817 return entry; | 811 return entry; |
| 818 } | 812 } |
| 819 | 813 |
| 820 | 814 |
| 821 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, | 815 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, |
| 822 const char* name_prefix, | 816 const char* name_prefix, |
| 823 Name* name) { | 817 Name* name) { |
| 824 CodeEntry* entry = new CodeEntry(tag, | 818 CodeEntry* entry = new CodeEntry(tag, |
| 825 name_prefix, | 819 name_prefix, |
| 826 GetName(name), | 820 GetName(name), |
| 827 "", | |
| 828 v8::CpuProfileNode::kNoLineNumberInfo, | |
| 829 TokenEnumerator::kInheritsSecurityToken); | 821 TokenEnumerator::kInheritsSecurityToken); |
| 830 code_entries_.Add(entry); | 822 code_entries_.Add(entry); |
| 831 return entry; | 823 return entry; |
| 832 } | 824 } |
| 833 | 825 |
| 834 | 826 |
| 835 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, | 827 CodeEntry* CpuProfilesCollection::NewCodeEntry(Logger::LogEventsAndTags tag, |
| 836 int args_count) { | 828 int args_count) { |
| 837 CodeEntry* entry = new CodeEntry(tag, | 829 CodeEntry* entry = new CodeEntry(tag, |
| 838 "args_count: ", | 830 "args_count: ", |
| 839 GetName(args_count), | 831 GetName(args_count), |
| 840 "", | |
| 841 v8::CpuProfileNode::kNoLineNumberInfo, | |
| 842 TokenEnumerator::kInheritsSecurityToken); | 832 TokenEnumerator::kInheritsSecurityToken); |
| 843 code_entries_.Add(entry); | 833 code_entries_.Add(entry); |
| 844 return entry; | 834 return entry; |
| 845 } | 835 } |
| 846 | 836 |
| 847 | 837 |
| 848 void CpuProfilesCollection::AddPathToCurrentProfiles( | 838 void CpuProfilesCollection::AddPathToCurrentProfiles( |
| 849 const Vector<CodeEntry*>& path) { | 839 const Vector<CodeEntry*>& path) { |
| 850 // As starting / stopping profiles is rare relatively to this | 840 // As starting / stopping profiles is rare relatively to this |
| 851 // method, we don't bother minimizing the duration of lock holding, | 841 // method, we don't bother minimizing the duration of lock holding, |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 if (no_symbolized_entries) { | 946 if (no_symbolized_entries) { |
| 957 *entry++ = EntryForVMState(sample.state); | 947 *entry++ = EntryForVMState(sample.state); |
| 958 } | 948 } |
| 959 } | 949 } |
| 960 | 950 |
| 961 profiles_->AddPathToCurrentProfiles(entries); | 951 profiles_->AddPathToCurrentProfiles(entries); |
| 962 } | 952 } |
| 963 | 953 |
| 964 | 954 |
| 965 } } // namespace v8::internal | 955 } } // namespace v8::internal |
| OLD | NEW |