author | Jan Beich <jbeich@FreeBSD.org> |
Wed, 15 Mar 2017 19:05:33 +0000 | |
changeset 348326 | 874293ae98ea8b2f8582be0d03a52557a11baabb |
parent 348325 | b583679fedc4746b54c66a5dd7f66301cea0d9e0 |
child 348327 | a8caa66acbfc9a397b3ef9161145b1a558a3942a |
push id | 88187 |
push user | archaeopteryx@coole-files.de |
push date | Sat, 18 Mar 2017 15:27:00 +0000 |
treeherder | mozilla-inbound@0b1d3324cffe [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | gfritzsche |
bugs | 1347661 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/toolkit/components/telemetry/Telemetry.cpp +++ b/toolkit/components/telemetry/Telemetry.cpp @@ -116,18 +116,20 @@ public: typedef std::vector<Telemetry::ProcessedStack::Frame> Stack; const Telemetry::ProcessedStack::Module& GetModule(unsigned aIndex) const; size_t GetModuleCount() const; const Stack& GetStack(unsigned aIndex) const; size_t AddStack(const Telemetry::ProcessedStack& aStack); size_t GetStackCount() const; size_t SizeOfExcludingThis() const; +#if defined(ENABLE_STACK_CAPTURE) /** Clears the contents of vectors and resets the index. */ void Clear(); +#endif private: std::vector<Telemetry::ProcessedStack::Module> mModules; // A circular buffer to hold the stacks. std::vector<Stack> mStacks; // The index of the next buffer element to write to in mStacks. size_t mNextIndex; }; @@ -224,22 +226,24 @@ ComputeAnnotationsKey(const HangAnnotati while (annotationsEnum->Next(key, value)) { aKeyOut.Append(key); aKeyOut.Append(value); } return NS_OK; } +#if defined(ENABLE_STACK_CAPTURE) void CombinedStacks::Clear() { mNextIndex = 0; mStacks.clear(); mModules.clear(); } +#endif class HangReports { public: /** * This struct encapsulates information for an individual ChromeHang annotation. * mHangIndex is the index of the corresponding ChromeHang. */ struct AnnotationInfo { @@ -266,20 +270,22 @@ public: HangAnnotationsPtr mAnnotations; private: // Force move constructor AnnotationInfo(const AnnotationInfo& aOther) = delete; void operator=(const AnnotationInfo& aOther) = delete; }; size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const; +#if defined(MOZ_GECKO_PROFILER) void AddHang(const Telemetry::ProcessedStack& aStack, uint32_t aDuration, int32_t aSystemUptime, int32_t aFirefoxUptime, HangAnnotationsPtr aAnnotations); void PruneStackReferences(const size_t aRemovedStackIndex); +#endif uint32_t GetDuration(unsigned aIndex) const; int32_t GetSystemUptime(unsigned aIndex) const; int32_t GetFirefoxUptime(unsigned aIndex) const; const nsClassHashtable<nsStringHashKey, AnnotationInfo>& GetAnnotationInfo() const; const CombinedStacks& GetStacks() const; private: /** * This struct encapsulates the data for an individual ChromeHang, excluding @@ -293,16 +299,17 @@ private: // Firefox uptime (in minutes) at the time of the hang int32_t mFirefoxUptime; }; std::vector<HangInfo> mHangInfo; nsClassHashtable<nsStringHashKey, AnnotationInfo> mAnnotationInfo; CombinedStacks mStacks; }; +#if defined(MOZ_GECKO_PROFILER) void HangReports::AddHang(const Telemetry::ProcessedStack& aStack, uint32_t aDuration, int32_t aSystemUptime, int32_t aFirefoxUptime, HangAnnotationsPtr aAnnotations) { // Append the new stack to the stack's circular queue. size_t hangIndex = mStacks.AddStack(aStack); @@ -366,16 +373,17 @@ HangReports::PruneStackReferences(const } // If this annotation no longer references any stack, drop it. if (!stackIndices.Length()) { iter.Remove(); } } } +#endif size_t HangReports::SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const { size_t n = 0; n += mStacks.SizeOfExcludingThis(); // This is a crude approximation. See comment on // CombinedStacks::SizeOfExcludingThis. n += mHangInfo.capacity() * sizeof(HangInfo);