void ProfilerMarker::StreamJSObject(JSStreamWriter& b) const { b.BeginObject(); b.NameValue("name", GetMarkerName()); // TODO: Store the callsite for this marker if available: // if have location data // b.NameValue(marker, "location", ...); if (mPayload) { b.Name("data"); mPayload->StreamPayload(b); } b.NameValue("time", mTime); b.EndObject(); }
template<typename Builder> void ProfilerMarker::BuildJSObject(Builder& b, typename Builder::ArrayHandle markers) const { typename Builder::RootedObject marker(b.context(), b.CreateObject()); b.DefineProperty(marker, "name", GetMarkerName()); // TODO: Store the callsite for this marker if available: // if have location data // b.DefineProperty(marker, "location", ...); if (mPayload) { typename Builder::RootedObject markerData(b.context(), mPayload->PreparePayload(b)); b.DefineProperty(marker, "data", markerData); } b.ArrayPush(markers, marker); }
void ProfilerMarker::StreamJSON(SpliceableJSONWriter& aWriter, UniqueStacks& aUniqueStacks) const { // Schema: // [name, time, data] aWriter.StartArrayElement(); { aUniqueStacks.mUniqueStrings.WriteElement(aWriter, GetMarkerName()); aWriter.DoubleElement(mTime); // TODO: Store the callsite for this marker if available: // if have location data // b.NameValue(marker, "location", ...); if (mPayload) { aWriter.StartObjectElement(); { mPayload->StreamPayload(aWriter, aUniqueStacks); } aWriter.EndObject(); } } aWriter.EndArray(); }