summaryrefslogtreecommitdiffstats
path: root/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-01-29 09:40:44 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-01-29 09:40:44 +0100
commit1a04d73a129926d54e13ac9d947062b221f0bacd (patch)
treef7bb70c9928ad16a56e2532f9d98aece61dbe1c4 /toolkit/components/perfmonitoring/nsPerformanceStats.cpp
parent1f9ab3a6e6e3f1e79b482c0540c98859bbc71350 (diff)
parent7f992d50e417b0c2f18259ce2353e3ead4870694 (diff)
downloadUXP-1a04d73a129926d54e13ac9d947062b221f0bacd.tar
UXP-1a04d73a129926d54e13ac9d947062b221f0bacd.tar.gz
UXP-1a04d73a129926d54e13ac9d947062b221f0bacd.tar.lz
UXP-1a04d73a129926d54e13ac9d947062b221f0bacd.tar.xz
UXP-1a04d73a129926d54e13ac9d947062b221f0bacd.zip
Merge branch 'master' into cycle_collector-work
Diffstat (limited to 'toolkit/components/perfmonitoring/nsPerformanceStats.cpp')
-rw-r--r--toolkit/components/perfmonitoring/nsPerformanceStats.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
index 6c470356a..59d84ced1 100644
--- a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
+++ b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
@@ -1082,6 +1082,9 @@ nsPerformanceStatsService::GetPerformanceGroups(JSContext* cx,
return false;
}
+ // Returning a vector that is too large would cause allocations all over the
+ // place in the JS engine. We want to be sure that all data is stored inline.
+ MOZ_ASSERT(out.length() <= out.sMaxInlineStorage);
return true;
}
@@ -1310,8 +1313,12 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime,
void
nsPerformanceStatsService::NotifyJankObservers(const mozilla::Vector<uint64_t>& aPreviousJankLevels) {
- GroupVector alerts;
- mPendingAlerts.swap(alerts);
+
+ // The move operation is generally constant time, unless
+ // `mPendingAlerts.length()` is very small, in which case it's fast anyway.
+ GroupVector alerts(Move(mPendingAlerts));
+ mPendingAlerts = GroupVector(); // Reconstruct after `Move`.
+
if (!mPendingAlertsCollector) {
// We are shutting down.
return;