Index: src/profile-generator.cc |
diff --git a/src/profile-generator.cc b/src/profile-generator.cc |
index fb89a221aa5d2cd2e8e93ef1dedf69f14c56cfb5..44163a056863f080c9a2b8d5d67977399d4c1821 100644 |
--- a/src/profile-generator.cc |
+++ b/src/profile-generator.cc |
@@ -86,6 +86,37 @@ void TokenEnumerator::TokenRemoved(Object** token_location) { |
} |
+StringsStorage::StringsStorage() |
+ : names_(StringsMatch) { |
+} |
+ |
+ |
+StringsStorage::~StringsStorage() { |
+ for (HashMap::Entry* p = names_.Start(); |
+ p != NULL; |
+ p = names_.Next(p)) { |
+ DeleteArray(reinterpret_cast<const char*>(p->value)); |
+ } |
+} |
+ |
+ |
+const char* StringsStorage::GetName(String* name) { |
+ if (name->IsString()) { |
+ char* c_name = |
+ name->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL).Detach(); |
+ HashMap::Entry* cache_entry = names_.Lookup(c_name, name->Hash(), true); |
+ if (cache_entry->value == NULL) { |
+ // New entry added. |
+ cache_entry->value = c_name; |
+ } else { |
+ DeleteArray(c_name); |
+ } |
+ return reinterpret_cast<const char*>(cache_entry->value); |
+ } |
+ return ""; |
+} |
+ |
+ |
const char* CodeEntry::kEmptyNamePrefix = ""; |
unsigned CodeEntry::next_call_uid_ = 1; |
@@ -438,8 +469,7 @@ void CodeMap::Print() { |
CpuProfilesCollection::CpuProfilesCollection() |
- : function_and_resource_names_(StringsMatch), |
- profiles_uids_(UidsMatch), |
+ : profiles_uids_(UidsMatch), |
current_profiles_semaphore_(OS::CreateSemaphore(1)) { |
// Create list of unabridged profiles. |
profiles_by_token_.Add(new List<CpuProfile*>()); |
@@ -470,11 +500,6 @@ CpuProfilesCollection::~CpuProfilesCollection() { |
profiles_by_token_.Iterate(DeleteProfilesList); |
code_entries_.Iterate(DeleteCodeEntry); |
args_count_names_.Iterate(DeleteArgsCountName); |
- for (HashMap::Entry* p = function_and_resource_names_.Start(); |
- p != NULL; |
- p = function_and_resource_names_.Next(p)) { |
- DeleteArray(reinterpret_cast<const char*>(p->value)); |
- } |
} |
@@ -666,27 +691,6 @@ CodeEntry* CpuProfilesCollection::NewCodeEntry(int security_token_id) { |
} |
-const char* CpuProfilesCollection::GetName(String* name) { |
- if (name->IsString()) { |
- char* c_name = |
- name->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL).Detach(); |
- HashMap::Entry* cache_entry = |
- function_and_resource_names_.Lookup(c_name, |
- name->Hash(), |
- true); |
- if (cache_entry->value == NULL) { |
- // New entry added. |
- cache_entry->value = c_name; |
- } else { |
- DeleteArray(c_name); |
- } |
- return reinterpret_cast<const char*>(cache_entry->value); |
- } else { |
- return ""; |
- } |
-} |
- |
- |
const char* CpuProfilesCollection::GetName(int args_count) { |
ASSERT(args_count >= 0); |
if (args_count_names_.length() <= args_count) { |