Index: src/cpu-profiler.h |
diff --git a/src/cpu-profiler.h b/src/cpu-profiler.h |
index 89d9c81c152b2d4618a8229eb37bcadaf3cf45a1..3dc766bc75d8419e119d359dc35cd43202789510 100644 |
--- a/src/cpu-profiler.h |
+++ b/src/cpu-profiler.h |
@@ -184,71 +184,84 @@ class ProfilerEventsProcessor : public Thread { |
unsigned enqueue_order_; |
}; |
+} } // namespace v8::internal |
+ |
-#define PROFILE(IsolateGetter, Call) \ |
- do { \ |
- Isolate* cpu_profiler_isolate = (IsolateGetter); \ |
- LOG_CODE_EVENT(cpu_profiler_isolate, Call); \ |
- CpuProfiler* cpu_profiler = cpu_profiler_isolate->cpu_profiler(); \ |
- if (cpu_profiler->is_profiling()) { \ |
- cpu_profiler->Call; \ |
- } \ |
+#define PROFILE(isolate, Call) \ |
+ LOG_CODE_EVENT(isolate, Call); \ |
+ do { \ |
+ if (v8::internal::CpuProfiler::is_profiling(isolate)) { \ |
+ v8::internal::CpuProfiler::Call; \ |
+ } \ |
} while (false) |
+namespace v8 { |
+namespace internal { |
+ |
+ |
+// TODO(isolates): isolatify this class. |
class CpuProfiler { |
public: |
- explicit CpuProfiler(Isolate* isolate); |
- ~CpuProfiler(); |
- |
- void StartProfiling(const char* title, bool record_samples = false); |
- void StartProfiling(String* title, bool record_samples); |
- CpuProfile* StopProfiling(const char* title); |
- CpuProfile* StopProfiling(Object* security_token, String* title); |
- int GetProfilesCount(); |
- CpuProfile* GetProfile(Object* security_token, int index); |
- CpuProfile* FindProfile(Object* security_token, unsigned uid); |
- void DeleteAllProfiles(); |
- void DeleteProfile(CpuProfile* profile); |
- bool HasDetachedProfiles(); |
+ static void SetUp(); |
+ static void TearDown(); |
+ |
+ static void StartProfiling(const char* title); |
+ static void StartProfiling(String* title); |
+ static CpuProfile* StopProfiling(const char* title); |
+ static CpuProfile* StopProfiling(Object* security_token, String* title); |
+ static int GetProfilesCount(); |
+ static CpuProfile* GetProfile(Object* security_token, int index); |
+ static CpuProfile* FindProfile(Object* security_token, unsigned uid); |
+ static void DeleteAllProfiles(); |
+ static void DeleteProfile(CpuProfile* profile); |
+ static bool HasDetachedProfiles(); |
// Invoked from stack sampler (thread or signal handler.) |
- TickSample* TickSampleEvent(); |
+ static TickSample* TickSampleEvent(Isolate* isolate); |
// Must be called via PROFILE macro, otherwise will crash when |
// profiling is not enabled. |
- void CallbackEvent(Name* name, Address entry_point); |
- void CodeCreateEvent(Logger::LogEventsAndTags tag, |
- Code* code, const char* comment); |
- void CodeCreateEvent(Logger::LogEventsAndTags tag, |
- Code* code, Name* name); |
- void CodeCreateEvent(Logger::LogEventsAndTags tag, |
- Code* code, |
+ static void CallbackEvent(Name* name, Address entry_point); |
+ static void CodeCreateEvent(Logger::LogEventsAndTags tag, |
+ Code* code, const char* comment); |
+ static void CodeCreateEvent(Logger::LogEventsAndTags tag, |
+ Code* code, Name* name); |
+ static void CodeCreateEvent(Logger::LogEventsAndTags tag, |
+ Code* code, |
SharedFunctionInfo* shared, |
Name* name); |
- void CodeCreateEvent(Logger::LogEventsAndTags tag, |
- Code* code, |
- SharedFunctionInfo* shared, |
- String* source, int line); |
- void CodeCreateEvent(Logger::LogEventsAndTags tag, |
- Code* code, int args_count); |
- void CodeMovingGCEvent() {} |
- void CodeMoveEvent(Address from, Address to); |
- void CodeDeleteEvent(Address from); |
- void GetterCallbackEvent(Name* name, Address entry_point); |
- void RegExpCodeCreateEvent(Code* code, String* source); |
- void SetterCallbackEvent(Name* name, Address entry_point); |
- void SharedFunctionInfoMoveEvent(Address from, Address to); |
- |
- INLINE(bool is_profiling() const) { return is_profiling_; } |
+ static void CodeCreateEvent(Logger::LogEventsAndTags tag, |
+ Code* code, |
+ SharedFunctionInfo* shared, |
+ String* source, int line); |
+ static void CodeCreateEvent(Logger::LogEventsAndTags tag, |
+ Code* code, int args_count); |
+ static void CodeMovingGCEvent() {} |
+ static void CodeMoveEvent(Address from, Address to); |
+ static void CodeDeleteEvent(Address from); |
+ static void GetterCallbackEvent(Name* name, Address entry_point); |
+ static void RegExpCodeCreateEvent(Code* code, String* source); |
+ static void SetterCallbackEvent(Name* name, Address entry_point); |
+ static void SharedFunctionInfoMoveEvent(Address from, Address to); |
+ |
+ static INLINE(bool is_profiling(Isolate* isolate)) { |
+ CpuProfiler* profiler = isolate->cpu_profiler(); |
+ return profiler != NULL && profiler->is_profiling_; |
+ } |
private: |
+ CpuProfiler(); |
+ ~CpuProfiler(); |
+ void StartCollectingProfile(const char* title); |
+ void StartCollectingProfile(String* title); |
void StartProcessorIfNotStarted(); |
+ CpuProfile* StopCollectingProfile(const char* title); |
+ CpuProfile* StopCollectingProfile(Object* security_token, String* title); |
void StopProcessorIfLastProfile(const char* title); |
void StopProcessor(); |
void ResetProfiles(); |
- Isolate* isolate_; |
CpuProfilesCollection* profiles_; |
unsigned next_profile_uid_; |
TokenEnumerator* token_enumerator_; |