| Index: src/cpu-profiler.h
|
| diff --git a/src/cpu-profiler.h b/src/cpu-profiler.h
|
| index 2ec4c70a8fd101314f4a113e21c2d0a025b7b8ca..89d9c81c152b2d4618a8229eb37bcadaf3cf45a1 100644
|
| --- a/src/cpu-profiler.h
|
| +++ b/src/cpu-profiler.h
|
| @@ -184,84 +184,71 @@ class ProfilerEventsProcessor : public Thread {
|
| unsigned enqueue_order_;
|
| };
|
|
|
| -} } // namespace v8::internal
|
| -
|
|
|
| -#define PROFILE(isolate, Call) \
|
| - LOG_CODE_EVENT(isolate, Call); \
|
| - do { \
|
| - if (v8::internal::CpuProfiler::is_profiling(isolate)) { \
|
| - v8::internal::CpuProfiler::Call; \
|
| - } \
|
| +#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; \
|
| + } \
|
| } while (false)
|
|
|
|
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -
|
| -// TODO(isolates): isolatify this class.
|
| class CpuProfiler {
|
| public:
|
| - static void SetUp();
|
| - static void TearDown();
|
| -
|
| - static void StartProfiling(const char* title);
|
| - static void StartProfiling(String* title, bool record_samples);
|
| - 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();
|
| + 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();
|
|
|
| // Invoked from stack sampler (thread or signal handler.)
|
| - static TickSample* TickSampleEvent(Isolate* isolate);
|
| + TickSample* TickSampleEvent();
|
|
|
| // Must be called via PROFILE macro, otherwise will crash when
|
| // profiling is not enabled.
|
| - 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,
|
| + 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,
|
| SharedFunctionInfo* shared,
|
| Name* name);
|
| - 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_;
|
| - }
|
| + 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_; }
|
|
|
| private:
|
| - CpuProfiler();
|
| - ~CpuProfiler();
|
| - void StartCollectingProfile(const char* title, bool record_samples);
|
| - void StartCollectingProfile(String* title, bool record_samples);
|
| 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_;
|
|
|