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

Side by Side Diff: src/profile-generator.h

Issue 2769001: Factor out StringsStorage from CpuProfilesCollection. (Closed)
Patch Set: Comments addressed Created 10 years, 6 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 | « no previous file | src/profile-generator.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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 void* parameter); 49 void* parameter);
50 void TokenRemoved(Object** token_location); 50 void TokenRemoved(Object** token_location);
51 51
52 List<Object**> token_locations_; 52 List<Object**> token_locations_;
53 List<bool> token_removed_; 53 List<bool> token_removed_;
54 54
55 friend class TokenEnumeratorTester; 55 friend class TokenEnumeratorTester;
56 }; 56 };
57 57
58 58
59 // Provides a storage of strings allocated in C++ heap, to hold them
60 // forever, even if they disappear from JS heap or external storage.
61 class StringsStorage {
62 public:
63 StringsStorage();
64 ~StringsStorage();
65
66 const char* GetName(String* name);
67
68 private:
69 INLINE(static bool StringsMatch(void* key1, void* key2)) {
70 return strcmp(reinterpret_cast<char*>(key1),
71 reinterpret_cast<char*>(key2)) == 0;
72 }
73
74 // String::Hash -> const char*
75 HashMap names_;
76
77 DISALLOW_COPY_AND_ASSIGN(StringsStorage);
78 };
79
80
59 class CodeEntry { 81 class CodeEntry {
60 public: 82 public:
61 explicit INLINE(CodeEntry(int security_token_id)); 83 explicit INLINE(CodeEntry(int security_token_id));
62 // CodeEntry doesn't own name strings, just references them. 84 // CodeEntry doesn't own name strings, just references them.
63 INLINE(CodeEntry(Logger::LogEventsAndTags tag, 85 INLINE(CodeEntry(Logger::LogEventsAndTags tag,
64 const char* name_prefix, 86 const char* name_prefix,
65 const char* name, 87 const char* name,
66 const char* resource_name, 88 const char* resource_name,
67 int line_number, 89 int line_number,
68 int security_token_id)); 90 int security_token_id));
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 273
252 bool StartProfiling(const char* title, unsigned uid); 274 bool StartProfiling(const char* title, unsigned uid);
253 bool StartProfiling(String* title, unsigned uid); 275 bool StartProfiling(String* title, unsigned uid);
254 CpuProfile* StopProfiling(int security_token_id, 276 CpuProfile* StopProfiling(int security_token_id,
255 const char* title, 277 const char* title,
256 double actual_sampling_rate); 278 double actual_sampling_rate);
257 CpuProfile* StopProfiling(int security_token_id, 279 CpuProfile* StopProfiling(int security_token_id,
258 String* title, 280 String* title,
259 double actual_sampling_rate); 281 double actual_sampling_rate);
260 List<CpuProfile*>* Profiles(int security_token_id); 282 List<CpuProfile*>* Profiles(int security_token_id);
283 const char* GetName(String* name) {
284 return function_and_resource_names_.GetName(name);
285 }
261 CpuProfile* GetProfile(int security_token_id, unsigned uid); 286 CpuProfile* GetProfile(int security_token_id, unsigned uid);
262 inline bool is_last_profile(); 287 inline bool is_last_profile();
263 288
264 const char* GetName(String* name);
265 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, 289 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
266 String* name, String* resource_name, int line_number); 290 String* name, String* resource_name, int line_number);
267 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, const char* name); 291 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, const char* name);
268 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, 292 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
269 const char* name_prefix, String* name); 293 const char* name_prefix, String* name);
270 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, int args_count); 294 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, int args_count);
271 CodeEntry* NewCodeEntry(int security_token_id); 295 CodeEntry* NewCodeEntry(int security_token_id);
272 296
273 // Called from profile generator thread. 297 // Called from profile generator thread.
274 void AddPathToCurrentProfiles(const Vector<CodeEntry*>& path); 298 void AddPathToCurrentProfiles(const Vector<CodeEntry*>& path);
275 299
276 private: 300 private:
277 INLINE(const char* GetFunctionName(String* name)); 301 INLINE(const char* GetFunctionName(String* name));
278 INLINE(const char* GetFunctionName(const char* name)); 302 INLINE(const char* GetFunctionName(const char* name));
279 const char* GetName(int args_count); 303 const char* GetName(int args_count);
280 List<CpuProfile*>* GetProfilesList(int security_token_id); 304 List<CpuProfile*>* GetProfilesList(int security_token_id);
281 int TokenToIndex(int security_token_id); 305 int TokenToIndex(int security_token_id);
282 306
283 INLINE(static bool StringsMatch(void* key1, void* key2)) {
284 return strcmp(reinterpret_cast<char*>(key1),
285 reinterpret_cast<char*>(key2)) == 0;
286 }
287
288 INLINE(static bool UidsMatch(void* key1, void* key2)) { 307 INLINE(static bool UidsMatch(void* key1, void* key2)) {
289 return key1 == key2; 308 return key1 == key2;
290 } 309 }
291 310
292 // String::Hash -> const char* 311 StringsStorage function_and_resource_names_;
293 HashMap function_and_resource_names_;
294 // args_count -> char* 312 // args_count -> char*
295 List<char*> args_count_names_; 313 List<char*> args_count_names_;
296 List<CodeEntry*> code_entries_; 314 List<CodeEntry*> code_entries_;
297 List<List<CpuProfile*>* > profiles_by_token_; 315 List<List<CpuProfile*>* > profiles_by_token_;
298 // uid -> index 316 // uid -> index
299 HashMap profiles_uids_; 317 HashMap profiles_uids_;
300 318
301 // Accessed by VM thread and profile generator thread. 319 // Accessed by VM thread and profile generator thread.
302 List<CpuProfile*> current_profiles_; 320 List<CpuProfile*> current_profiles_;
303 Semaphore* current_profiles_semaphore_; 321 Semaphore* current_profiles_semaphore_;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 SampleRateCalculator sample_rate_calc_; 414 SampleRateCalculator sample_rate_calc_;
397 415
398 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator); 416 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator);
399 }; 417 };
400 418
401 } } // namespace v8::internal 419 } } // namespace v8::internal
402 420
403 #endif // ENABLE_LOGGING_AND_PROFILING 421 #endif // ENABLE_LOGGING_AND_PROFILING
404 422
405 #endif // V8_PROFILE_GENERATOR_H_ 423 #endif // V8_PROFILE_GENERATOR_H_
OLDNEW
« no previous file with comments | « no previous file | src/profile-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698