mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +00:00
Bug 970494 - Markers should be time based and not sample based. r=bgirard
--HG-- extra : rebase_source : c1e3e77fa8f7ad2c5eec7f092d96bf3719db3a8c
This commit is contained in:
parent
18aeb9dd4e
commit
cc4777dcd4
@ -340,9 +340,11 @@ void ThreadProfile::BuildJSObject(Builder& b,
|
||||
typename Builder::RootedArray samples(b.context(), b.CreateArray());
|
||||
b.DefineProperty(profile, "samples", samples);
|
||||
|
||||
typename Builder::RootedArray markers(b.context(), b.CreateArray());
|
||||
b.DefineProperty(profile, "markers", markers);
|
||||
|
||||
typename Builder::RootedObject sample(b.context());
|
||||
typename Builder::RootedArray frames(b.context());
|
||||
typename Builder::RootedArray markers(b.context());
|
||||
|
||||
int readPos = mReadPos;
|
||||
while (readPos != mLastFlushPos) {
|
||||
@ -365,13 +367,7 @@ void ThreadProfile::BuildJSObject(Builder& b,
|
||||
switch (entry.mTagName) {
|
||||
case 'm':
|
||||
{
|
||||
if (sample) {
|
||||
if (!markers) {
|
||||
markers = b.CreateArray();
|
||||
b.DefineProperty(sample, "marker", markers);
|
||||
}
|
||||
entry.getMarker()->BuildJSObject(b, markers);
|
||||
}
|
||||
entry.getMarker()->BuildJSObject(b, markers);
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
@ -408,8 +404,6 @@ void ThreadProfile::BuildJSObject(Builder& b,
|
||||
frames = b.CreateArray();
|
||||
b.DefineProperty(sample, "frames", frames);
|
||||
b.ArrayPush(samples, sample);
|
||||
// Created lazily
|
||||
markers = nullptr;
|
||||
// Fall though to create a label for the 's' tag
|
||||
case 'c':
|
||||
case 'l':
|
||||
|
@ -111,7 +111,8 @@ class ProfilerMarker {
|
||||
friend class ProfilerLinkedList<ProfilerMarker>;
|
||||
public:
|
||||
ProfilerMarker(const char* aMarkerName,
|
||||
ProfilerMarkerPayload* aPayload = nullptr);
|
||||
ProfilerMarkerPayload* aPayload = nullptr,
|
||||
float aTime = 0);
|
||||
|
||||
~ProfilerMarker();
|
||||
|
||||
@ -128,10 +129,13 @@ public:
|
||||
return mGenID + 2 <= aGenID;
|
||||
}
|
||||
|
||||
float GetTime();
|
||||
|
||||
private:
|
||||
char* mMarkerName;
|
||||
ProfilerMarkerPayload* mPayload;
|
||||
ProfilerMarker* mNext;
|
||||
float mTime;
|
||||
int mGenID;
|
||||
};
|
||||
|
||||
@ -320,9 +324,9 @@ public:
|
||||
return mPendingUWTBuffers.getLinkedUWTBuffers();
|
||||
}
|
||||
|
||||
void addMarker(const char *aMarkerStr, ProfilerMarkerPayload *aPayload)
|
||||
void addMarker(const char *aMarkerStr, ProfilerMarkerPayload *aPayload, float aTime)
|
||||
{
|
||||
ProfilerMarker* marker = new ProfilerMarker(aMarkerStr, aPayload);
|
||||
ProfilerMarker* marker = new ProfilerMarker(aMarkerStr, aPayload, aTime);
|
||||
mPendingMarkers.addMarker(marker);
|
||||
}
|
||||
|
||||
|
@ -111,8 +111,10 @@ ThreadInfo::~ThreadInfo() {
|
||||
}
|
||||
|
||||
ProfilerMarker::ProfilerMarker(const char* aMarkerName,
|
||||
ProfilerMarkerPayload* aPayload)
|
||||
ProfilerMarkerPayload* aPayload,
|
||||
float aTime)
|
||||
: mMarkerName(strdup(aMarkerName))
|
||||
, mTime(aTime)
|
||||
, mPayload(aPayload)
|
||||
{
|
||||
}
|
||||
@ -127,6 +129,11 @@ ProfilerMarker::SetGeneration(int aGenID) {
|
||||
mGenID = aGenID;
|
||||
}
|
||||
|
||||
float
|
||||
ProfilerMarker::GetTime() {
|
||||
return mTime;
|
||||
}
|
||||
|
||||
template<typename Builder> void
|
||||
ProfilerMarker::BuildJSObject(Builder& b, typename Builder::ArrayHandle markers) const {
|
||||
typename Builder::RootedObject marker(b.context(), b.CreateObject());
|
||||
@ -139,6 +146,7 @@ ProfilerMarker::BuildJSObject(Builder& b, typename Builder::ArrayHandle markers)
|
||||
mPayload->PreparePayload(b));
|
||||
b.DefineProperty(marker, "data", markerData);
|
||||
}
|
||||
b.DefineProperty(marker, "time", mTime);
|
||||
b.ArrayPush(markers, marker);
|
||||
}
|
||||
|
||||
@ -896,7 +904,8 @@ void mozilla_sampler_add_marker(const char *aMarker, ProfilerMarkerPayload *aPay
|
||||
if (!stack) {
|
||||
return;
|
||||
}
|
||||
stack->addMarker(aMarker, payload.forget());
|
||||
TimeDuration delta = TimeStamp::Now() - sStartTime;
|
||||
stack->addMarker(aMarker, payload.forget(), static_cast<float>(delta.ToMilliseconds()));
|
||||
}
|
||||
|
||||
// END externally visible functions
|
||||
|
Loading…
Reference in New Issue
Block a user