/** * Implementation of class TracedRunnable. */ TracedRunnable::TracedRunnable(already_AddRefed<nsIRunnable>&& aOriginalObj) : TracedTaskCommon() , mOriginalObj(Move(aOriginalObj)) { Init(); LogVirtualTablePtr(mTaskId, mSourceEventId, reinterpret_cast<uintptr_t*>(mOriginalObj.get())); }
/** * Implementation of class TracedTask. */ TracedTask::TracedTask(Task* aOriginalObj) : TracedTaskCommon() , mOriginalObj(aOriginalObj) { Init(); LogVirtualTablePtr(mTaskId, mSourceEventId, reinterpret_cast<uintptr_t*>(aOriginalObj)); }
static void CreateSourceEvent(SourceEventType aType) { // Save the currently traced source event info. SaveCurTraceInfo(); // Create a new unique task id. uint64_t newId = GenNewUniqueTaskId(); TraceInfo* info = GetOrCreateTraceInfo(); ENSURE_TRUE_VOID(info); info->mCurTraceSourceId = newId; info->mCurTraceSourceType = aType; info->mCurTaskId = newId; uintptr_t* namePtr; #define SOURCE_EVENT_NAME(type) \ case SourceEventType::type: \ { \ static int CreateSourceEvent##type; \ namePtr = (uintptr_t*)&CreateSourceEvent##type; \ break; \ } switch (aType) { #include "SourceEventTypeMap.h" default: MOZ_CRASH("Unknown SourceEvent."); } #undef CREATE_SOURCE_EVENT_NAME // Log a fake dispatch and start for this source event. LogDispatch(newId, newId, newId, aType); LogVirtualTablePtr(newId, newId, namePtr); LogBegin(newId, newId); }
/** * Implementation of class TracedTask. */ TracedTask::TracedTask(Task* aOriginalObj) : TracedTaskCommon() , mOriginalObj(aOriginalObj) { LogVirtualTablePtr(mTaskId, mSourceEventId, *(int**)(aOriginalObj)); }
FakeTracedTask::FakeTracedTask(int* aVptr) : TracedTaskCommon() { LogVirtualTablePtr(mTaskId, mSourceEventId, aVptr); }