void GeckoSampler::StreamTaskTracer(SpliceableJSONWriter& aWriter) { #ifdef MOZ_TASK_TRACER aWriter.StartArrayProperty("data"); nsAutoPtr<nsTArray<nsCString>> data(mozilla::tasktracer::GetLoggedData(sStartTime)); for (uint32_t i = 0; i < data->Length(); ++i) { aWriter.StringElement((data->ElementAt(i)).get()); } aWriter.EndArray(); aWriter.StartArrayProperty("threads"); ::MutexAutoLock lock(*sRegisteredThreadsMutex); for (size_t i = 0; i < sRegisteredThreads->size(); i++) { // Thread meta data ThreadInfo* info = sRegisteredThreads->at(i); aWriter.StartObjectElement(); if (XRE_GetProcessType() == GeckoProcessType_Plugin) { // TODO Add the proper plugin name aWriter.StringProperty("name", "Plugin"); } else { aWriter.StringProperty("name", info->Name()); } aWriter.IntProperty("tid", static_cast<int>(info->ThreadId())); aWriter.EndObject(); } aWriter.EndArray(); aWriter.DoubleProperty("start", static_cast<double>(mozilla::tasktracer::GetStartTime())); #endif }
void TableTicker::StreamTaskTracer(JSStreamWriter& b) { b.BeginObject(); #ifdef MOZ_TASK_TRACER b.Name("data"); b.BeginArray(); nsAutoPtr<nsTArray<nsCString>> data( mozilla::tasktracer::GetLoggedData(sStartTime)); for (uint32_t i = 0; i < data->Length(); ++i) { b.Value((data->ElementAt(i)).get()); } b.EndArray(); b.Name("threads"); b.BeginArray(); mozilla::MutexAutoLock lock(*sRegisteredThreadsMutex); for (size_t i = 0; i < sRegisteredThreads->size(); i++) { // Thread meta data ThreadInfo* info = sRegisteredThreads->at(i); b.BeginObject(); if (XRE_GetProcessType() == GeckoProcessType_Plugin) { // TODO Add the proper plugin name b.NameValue("name", "Plugin"); } else { b.NameValue("name", info->Name()); } b.NameValue("tid", static_cast<int>(info->ThreadId())); b.EndObject(); } b.EndArray(); b.NameValue("start", static_cast<double>(mozilla::tasktracer::GetStartTime())); #endif b.EndObject(); }