diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-01-29 09:40:44 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-01-29 09:40:44 +0100 |
commit | 1a04d73a129926d54e13ac9d947062b221f0bacd (patch) | |
tree | f7bb70c9928ad16a56e2532f9d98aece61dbe1c4 /toolkit/components | |
parent | 1f9ab3a6e6e3f1e79b482c0540c98859bbc71350 (diff) | |
parent | 7f992d50e417b0c2f18259ce2353e3ead4870694 (diff) | |
download | UXP-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')
-rw-r--r-- | toolkit/components/perfmonitoring/nsPerformanceStats.cpp | 11 | ||||
-rw-r--r-- | toolkit/components/perfmonitoring/nsPerformanceStats.h | 2 |
2 files changed, 10 insertions, 3 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; diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.h b/toolkit/components/perfmonitoring/nsPerformanceStats.h index 6902c840d..661a78a1a 100644 --- a/toolkit/components/perfmonitoring/nsPerformanceStats.h +++ b/toolkit/components/perfmonitoring/nsPerformanceStats.h @@ -19,7 +19,7 @@ class nsPerformanceGroup; class nsPerformanceGroupDetails; -typedef mozilla::Vector<RefPtr<nsPerformanceGroup>> GroupVector; +typedef mozilla::Vector<RefPtr<nsPerformanceGroup>, 8> GroupVector; /** * A data structure for registering observers interested in |