Bug 1675543 - Cache PerformancePaintTiming's StartTime r=smaug

Currently we store the raw `StartTime` as a `TimeStamp` object, and
convert it to `DOMHighResTimeStamp` when calling `StartTime()`. However,
there's no need to do the conversion every time.

Depends on D96295

Differential Revision: https://phabricator.services.mozilla.com/D96296
This commit is contained in:
Sean Feng 2020-11-09 12:21:19 +00:00
Родитель 13653417af
Коммит ad624adcb4
2 изменённых файлов: 7 добавлений и 5 удалений

Просмотреть файл

@ -26,7 +26,7 @@ PerformancePaintTiming::PerformancePaintTiming(Performance* aPerformance,
const TimeStamp& aStartTime)
: PerformanceEntry(aPerformance->GetParentObject(), aName, u"paint"_ns),
mPerformance(aPerformance),
mStartTime(aStartTime) {}
mStartTime(CalculateStartTime(aStartTime)) {}
PerformancePaintTiming::~PerformancePaintTiming() = default;
@ -35,9 +35,10 @@ JSObject* PerformancePaintTiming::WrapObject(
return PerformancePaintTiming_Binding::Wrap(aCx, this, aGivenProto);
}
DOMHighResTimeStamp PerformancePaintTiming::StartTime() const {
DOMHighResTimeStamp PerformancePaintTiming::CalculateStartTime(
const TimeStamp& aStartTime) const {
DOMHighResTimeStamp rawValue =
mPerformance->GetDOMTiming()->TimeStampToDOMHighRes(mStartTime);
mPerformance->GetDOMTiming()->TimeStampToDOMHighRes(aStartTime);
return nsRFPService::ReduceTimePrecisionAsMSecs(
rawValue, mPerformance->GetRandomTimelineSeed(),
mPerformance->IsSystemPrincipal(), mPerformance->CrossOriginIsolated());

Просмотреть файл

@ -33,7 +33,7 @@ class PerformancePaintTiming final : public PerformanceEntry {
JSObject* WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) override;
DOMHighResTimeStamp StartTime() const override;
DOMHighResTimeStamp StartTime() const override { return mStartTime; }
size_t SizeOfIncludingThis(
mozilla::MallocSizeOf aMallocSizeOf) const override;
@ -41,7 +41,8 @@ class PerformancePaintTiming final : public PerformanceEntry {
private:
~PerformancePaintTiming();
RefPtr<Performance> mPerformance;
const TimeStamp mStartTime;
const DOMHighResTimeStamp mStartTime;
DOMHighResTimeStamp CalculateStartTime(const TimeStamp& aStartTime) const;
};
} // namespace dom