зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1357849 - Instrument performance.measure with markers; r=baku,mstange
MozReview-Commit-ID: KQcQgxYyEYi --HG-- extra : rebase_source : bc26048ca4317d11ab22a5a54064fa2c031a9fdc
This commit is contained in:
Родитель
96f55718c4
Коммит
778111225d
|
@ -7,6 +7,9 @@
|
|||
#include "Performance.h"
|
||||
|
||||
#include "GeckoProfiler.h"
|
||||
#ifdef MOZ_GECKO_PROFILER
|
||||
#include "ProfilerMarkers.h"
|
||||
#endif
|
||||
#include "PerformanceEntry.h"
|
||||
#include "PerformanceMainThread.h"
|
||||
#include "PerformanceMark.h"
|
||||
|
@ -270,9 +273,13 @@ Performance::Mark(const nsAString& aName, ErrorResult& aRv)
|
|||
new PerformanceMark(GetAsISupports(), aName, Now());
|
||||
InsertUserEntry(performanceMark);
|
||||
|
||||
#ifdef MOZ_GECKO_PROFILER
|
||||
if (profiler_is_active()) {
|
||||
PROFILER_MARKER(NS_ConvertUTF16toUTF8(aName).get());
|
||||
PROFILER_MARKER_PAYLOAD("UserTiming",
|
||||
new UserTimingMarkerPayload(aName,
|
||||
TimeStamp::Now()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -354,6 +361,18 @@ Performance::Measure(const nsAString& aName,
|
|||
RefPtr<PerformanceMeasure> performanceMeasure =
|
||||
new PerformanceMeasure(GetAsISupports(), aName, startTime, endTime);
|
||||
InsertUserEntry(performanceMeasure);
|
||||
|
||||
#ifdef MOZ_GECKO_PROFILER
|
||||
if (profiler_is_active()) {
|
||||
TimeStamp startTimeStamp = CreationTimeStamp() +
|
||||
TimeDuration::FromMilliseconds(startTime);
|
||||
TimeStamp endTimeStamp = CreationTimeStamp() +
|
||||
TimeDuration::FromMilliseconds(endTime);
|
||||
PROFILER_MARKER_PAYLOAD("UserTiming",
|
||||
new UserTimingMarkerPayload(aName, startTimeStamp,
|
||||
endTimeStamp));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -157,6 +157,37 @@ IOMarkerPayload::StreamPayload(SpliceableJSONWriter& aWriter,
|
|||
}
|
||||
}
|
||||
|
||||
UserTimingMarkerPayload::UserTimingMarkerPayload(const nsAString& aName,
|
||||
const mozilla::TimeStamp& aStartTime)
|
||||
: ProfilerMarkerPayload(aStartTime, aStartTime, nullptr)
|
||||
, mEntryType("mark")
|
||||
, mName(aName)
|
||||
{
|
||||
}
|
||||
|
||||
UserTimingMarkerPayload::UserTimingMarkerPayload(const nsAString& aName,
|
||||
const mozilla::TimeStamp& aStartTime,
|
||||
const mozilla::TimeStamp& aEndTime)
|
||||
: ProfilerMarkerPayload(aStartTime, aEndTime, nullptr)
|
||||
, mEntryType("measure")
|
||||
, mName(aName)
|
||||
{
|
||||
}
|
||||
|
||||
UserTimingMarkerPayload::~UserTimingMarkerPayload()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
UserTimingMarkerPayload::StreamPayload(SpliceableJSONWriter& aWriter,
|
||||
const TimeStamp& aStartTime,
|
||||
UniqueStacks& aUniqueStacks)
|
||||
{
|
||||
streamCommonProps("UserTiming", aWriter, aStartTime, aUniqueStacks);
|
||||
aWriter.StringProperty("name", NS_ConvertUTF16toUTF8(mName).get());
|
||||
aWriter.StringProperty("entryType", mEntryType);
|
||||
}
|
||||
|
||||
DOMEventMarkerPayload::DOMEventMarkerPayload(const nsAString& aType, uint16_t aPhase,
|
||||
const mozilla::TimeStamp& aStartTime,
|
||||
const mozilla::TimeStamp& aEndTime)
|
||||
|
|
|
@ -139,6 +139,26 @@ private:
|
|||
uint16_t mPhase;
|
||||
};
|
||||
|
||||
class UserTimingMarkerPayload : public ProfilerMarkerPayload
|
||||
{
|
||||
public:
|
||||
UserTimingMarkerPayload(const nsAString& aName,
|
||||
const mozilla::TimeStamp& aStartTime);
|
||||
UserTimingMarkerPayload(const nsAString& aName,
|
||||
const mozilla::TimeStamp& aStartTime,
|
||||
const mozilla::TimeStamp& aEndTime);
|
||||
~UserTimingMarkerPayload();
|
||||
|
||||
virtual void StreamPayload(SpliceableJSONWriter& aWriter,
|
||||
const mozilla::TimeStamp& aStartTime,
|
||||
UniqueStacks& aUniqueStacks) override;
|
||||
|
||||
private:
|
||||
// Either "mark" or "measure".
|
||||
const char* mEntryType;
|
||||
nsString mName;
|
||||
};
|
||||
|
||||
/**
|
||||
* Contains the translation applied to a 2d layer so we can
|
||||
* track the layer position at each frame.
|
||||
|
|
Загрузка…
Ссылка в новой задаче