OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |