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

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

Issue 1582004: C++ profiles processor: wire up to VM. (Closed)
Patch Set: Created 10 years, 8 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
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 20 matching lines...) Expand all
31 #ifdef ENABLE_CPP_PROFILES_PROCESSOR 31 #ifdef ENABLE_CPP_PROFILES_PROCESSOR
32 32
33 #include "hashmap.h" 33 #include "hashmap.h"
34 34
35 namespace v8 { 35 namespace v8 {
36 namespace internal { 36 namespace internal {
37 37
38 class CodeEntry { 38 class CodeEntry {
39 public: 39 public:
40 // CodeEntry doesn't own name strings, just references them. 40 // CodeEntry doesn't own name strings, just references them.
41 INLINE(CodeEntry(Logger::LogEventsAndTags tag_, 41 INLINE(CodeEntry(Logger::LogEventsAndTags tag,
42 const char* name_, 42 const char* name_prefix,
43 const char* resource_name_, 43 const char* name,
44 int line_number_)); 44 const char* resource_name,
45 int line_number));
45 46
46 INLINE(bool is_js_function()); 47 INLINE(bool is_js_function() const);
47 INLINE(const char* name()) { return name_; } 48 INLINE(const char* name_prefix() const) { return name_prefix_; }
48 INLINE(const char* resource_name()) { return name_; } 49 INLINE(bool has_name_prefix() const) { return name_prefix_[0] != '\0'; }
49 INLINE(int line_number()) { return line_number_; } 50 INLINE(const char* name() const) { return name_; }
51 INLINE(const char* resource_name() const) { return resource_name_; }
52 INLINE(int line_number() const) { return line_number_; }
53
54 static const char* kEmptyNamePrefix;
55 static const int kNoLineNumberInfo;
50 56
51 private: 57 private:
52 Logger::LogEventsAndTags tag_; 58 Logger::LogEventsAndTags tag_;
59 const char* name_prefix_;
53 const char* name_; 60 const char* name_;
54 const char* resource_name_; 61 const char* resource_name_;
55 int line_number_; 62 int line_number_;
56 63
57 DISALLOW_COPY_AND_ASSIGN(CodeEntry); 64 DISALLOW_COPY_AND_ASSIGN(CodeEntry);
58 }; 65 };
59 66
60 67
61 class ProfileNode { 68 class ProfileNode {
62 public: 69 public:
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 bool StartProfiling(String* title, unsigned uid); 204 bool StartProfiling(String* title, unsigned uid);
198 CpuProfile* StopProfiling(const char* title); 205 CpuProfile* StopProfiling(const char* title);
199 CpuProfile* StopProfiling(String* title); 206 CpuProfile* StopProfiling(String* title);
200 INLINE(List<CpuProfile*>* profiles()) { return &profiles_; } 207 INLINE(List<CpuProfile*>* profiles()) { return &profiles_; }
201 CpuProfile* GetProfile(unsigned uid); 208 CpuProfile* GetProfile(unsigned uid);
202 inline bool is_last_profile(); 209 inline bool is_last_profile();
203 210
204 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, 211 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
205 String* name, String* resource_name, int line_number); 212 String* name, String* resource_name, int line_number);
206 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, const char* name); 213 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, const char* name);
214 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
215 const char* name_prefix, String* name);
207 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, int args_count); 216 CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, int args_count);
208 217
209 // Called from profile generator thread. 218 // Called from profile generator thread.
210 void AddPathToCurrentProfiles(const Vector<CodeEntry*>& path); 219 void AddPathToCurrentProfiles(const Vector<CodeEntry*>& path);
211 220
212 // This will be moved to V8 API.
213 static const int kNoLineNumberInfo = -1;
214
215 private: 221 private:
216 const char* GetName(String* name); 222 const char* GetName(String* name);
217 const char* GetName(int args_count); 223 const char* GetName(int args_count);
218 224
219 INLINE(static bool StringsMatch(void* key1, void* key2)) { 225 INLINE(static bool StringsMatch(void* key1, void* key2)) {
220 return strcmp(reinterpret_cast<char*>(key1), 226 return strcmp(reinterpret_cast<char*>(key1),
221 reinterpret_cast<char*>(key2)) == 0; 227 reinterpret_cast<char*>(key2)) == 0;
222 } 228 }
223 229
224 INLINE(static bool CpuProfilesMatch(void* key1, void* key2)) { 230 INLINE(static bool CpuProfilesMatch(void* key1, void* key2)) {
(...skipping 27 matching lines...) Expand all
252 int line_number)) { 258 int line_number)) {
253 return profiles_->NewCodeEntry(tag, name, resource_name, line_number); 259 return profiles_->NewCodeEntry(tag, name, resource_name, line_number);
254 } 260 }
255 261
256 INLINE(CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, 262 INLINE(CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
257 const char* name)) { 263 const char* name)) {
258 return profiles_->NewCodeEntry(tag, name); 264 return profiles_->NewCodeEntry(tag, name);
259 } 265 }
260 266
261 INLINE(CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag, 267 INLINE(CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
268 const char* name_prefix,
269 String* name)) {
270 return profiles_->NewCodeEntry(tag, name_prefix, name);
271 }
272
273 INLINE(CodeEntry* NewCodeEntry(Logger::LogEventsAndTags tag,
262 int args_count)) { 274 int args_count)) {
263 return profiles_->NewCodeEntry(tag, args_count); 275 return profiles_->NewCodeEntry(tag, args_count);
264 } 276 }
265 277
266 void RecordTickSample(const TickSample& sample); 278 void RecordTickSample(const TickSample& sample);
267 279
268 INLINE(CodeMap* code_map()) { return &code_map_; } 280 INLINE(CodeMap* code_map()) { return &code_map_; }
269 281
270 private: 282 private:
271 CpuProfilesCollection* profiles_; 283 CpuProfilesCollection* profiles_;
272 CodeMap code_map_; 284 CodeMap code_map_;
273 285
274 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator); 286 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator);
275 }; 287 };
276 288
277 } } // namespace v8::internal 289 } } // namespace v8::internal
278 290
279 #endif // ENABLE_CPP_PROFILES_PROCESSOR 291 #endif // ENABLE_CPP_PROFILES_PROCESSOR
280 292
281 #endif // V8_PROFILE_GENERATOR_H_ 293 #endif // V8_PROFILE_GENERATOR_H_
OLDNEW
« src/platform-linux.cc ('K') | « src/platform-win32.cc ('k') | src/profile-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698