mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 02:14:43 +00:00
Bug 1089514, Patch 1: Some traced tasks/runnables have record of dispatch, but no records of execution, r=thinker.
--- tools/profiler/TracedTaskCommon.cpp | 19 +++++-------------- tools/profiler/TracedTaskCommon.h | 12 ++++++++---- xpcom/threads/TimerThread.cpp | 2 ++ xpcom/threads/nsTimerImpl.cpp | 3 +++ xpcom/threads/nsTimerImpl.h | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-)
This commit is contained in:
parent
a369313d4b
commit
d33f31e6be
@ -107,13 +107,6 @@ FakeTracedTask::FakeTracedTask(int* aVptr)
|
||||
LogVirtualTablePtr(mTaskId, mSourceEventId, aVptr);
|
||||
}
|
||||
|
||||
FakeTracedTask::FakeTracedTask(const FakeTracedTask& aTask)
|
||||
{
|
||||
mTaskId = aTask.mTaskId;
|
||||
mSourceEventId = aTask.mSourceEventId;
|
||||
mSourceEventType = aTask.mSourceEventType;
|
||||
}
|
||||
|
||||
void
|
||||
FakeTracedTask::BeginFakeTracedTask()
|
||||
{
|
||||
@ -129,19 +122,17 @@ FakeTracedTask::EndFakeTracedTask()
|
||||
}
|
||||
|
||||
AutoRunFakeTracedTask::AutoRunFakeTracedTask(FakeTracedTask* aFakeTracedTask)
|
||||
: mInitialized(false)
|
||||
: mFakeTracedTask(aFakeTracedTask)
|
||||
{
|
||||
if (aFakeTracedTask) {
|
||||
mInitialized = true;
|
||||
mFakeTracedTask = *aFakeTracedTask;
|
||||
mFakeTracedTask.BeginFakeTracedTask();
|
||||
if (mFakeTracedTask) {
|
||||
mFakeTracedTask->BeginFakeTracedTask();
|
||||
}
|
||||
}
|
||||
|
||||
AutoRunFakeTracedTask::~AutoRunFakeTracedTask()
|
||||
{
|
||||
if (mInitialized) {
|
||||
mFakeTracedTask.EndFakeTracedTask();
|
||||
if (mFakeTracedTask) {
|
||||
mFakeTracedTask->EndFakeTracedTask();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,11 +75,16 @@ private:
|
||||
class FakeTracedTask : public TracedTaskCommon
|
||||
{
|
||||
public:
|
||||
FakeTracedTask() : TracedTaskCommon() {}
|
||||
NS_INLINE_DECL_REFCOUNTING(FakeTracedTask)
|
||||
|
||||
FakeTracedTask(int* aVptr);
|
||||
FakeTracedTask(const FakeTracedTask& aTask);
|
||||
void BeginFakeTracedTask();
|
||||
void EndFakeTracedTask();
|
||||
private:
|
||||
// No copy allowed.
|
||||
FakeTracedTask() MOZ_DELETE;
|
||||
FakeTracedTask(const FakeTracedTask& aTask) MOZ_DELETE;
|
||||
FakeTracedTask& operator=(const FakeTracedTask& aTask) MOZ_DELETE;
|
||||
};
|
||||
|
||||
class AutoRunFakeTracedTask
|
||||
@ -88,8 +93,7 @@ public:
|
||||
AutoRunFakeTracedTask(FakeTracedTask* aFakeTracedTask);
|
||||
~AutoRunFakeTracedTask();
|
||||
private:
|
||||
FakeTracedTask mFakeTracedTask;
|
||||
bool mInitialized;
|
||||
nsRefPtr<FakeTracedTask> mFakeTracedTask;
|
||||
};
|
||||
|
||||
} // namespace tasktracer
|
||||
|
@ -460,6 +460,8 @@ TimerThread::AddTimerInternal(nsTimerImpl* aTimer)
|
||||
NS_ADDREF(aTimer);
|
||||
|
||||
#ifdef MOZ_TASK_TRACER
|
||||
// Create a FakeTracedTask, and dispatch it here. This is the start point of
|
||||
// the latency.
|
||||
aTimer->DispatchTracedTask();
|
||||
#endif
|
||||
|
||||
|
@ -560,6 +560,9 @@ nsTimerImpl::Fire()
|
||||
js::ProfileEntry::Category::OTHER);
|
||||
|
||||
#ifdef MOZ_TASK_TRACER
|
||||
// mTracedTask is an instance of FakeTracedTask created by
|
||||
// DispatchTracedTask(). AutoRunFakeTracedTask logs the begin/end time of the
|
||||
// timer/FakeTracedTask instance in ctor/dtor.
|
||||
mozilla::tasktracer::AutoRunFakeTracedTask runTracedTask(mTracedTask);
|
||||
#endif
|
||||
|
||||
|
@ -152,7 +152,7 @@ private:
|
||||
TimeStamp mTimeout;
|
||||
|
||||
#ifdef MOZ_TASK_TRACER
|
||||
nsAutoPtr<mozilla::tasktracer::FakeTracedTask> mTracedTask;
|
||||
nsRefPtr<mozilla::tasktracer::FakeTracedTask> mTracedTask;
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_TIMERS
|
||||
|
Loading…
Reference in New Issue
Block a user