This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch upstream/28.4.0 in repository pale-moon. commit abcaa560fcaf2f814fc40eef46557033c910eb96 Author: wolfbeast <mcwerewolf@wolfbeast.com> Date: Tue Jan 29 00:40:24 2019 +0100 Revert "Reduce number of allocations in AutoStopwatch" This reverts commit 3476c1d60ec29c5497123194acd7a9310b1023d2. --- js/src/jsapi.h | 2 +- js/src/vm/Stopwatch.cpp | 24 +++++++--------------- .../perfmonitoring/nsPerformanceStats.cpp | 8 ++------ .../components/perfmonitoring/nsPerformanceStats.h | 2 +- 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/js/src/jsapi.h b/js/src/jsapi.h index 799396a..0983f03 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -6566,7 +6566,7 @@ struct JS_PUBLIC_API(PerformanceGroup) { uint64_t refCount_; }; -using PerformanceGroupVector = mozilla::Vector<RefPtr<js::PerformanceGroup>, 8, SystemAllocPolicy>; +using PerformanceGroupVector = mozilla::Vector<RefPtr<js::PerformanceGroup>, 0, SystemAllocPolicy>; /** * Commit any Performance Monitoring data. diff --git a/js/src/vm/Stopwatch.cpp b/js/src/vm/Stopwatch.cpp index 49b70c4..7a6acb9 100644 --- a/js/src/vm/Stopwatch.cpp +++ b/js/src/vm/Stopwatch.cpp @@ -136,9 +136,6 @@ PerformanceMonitoring::start() bool PerformanceMonitoring::commit() { - // Maximum initialization size, in elements for the vector of groups. - static const size_t MAX_GROUPS_INIT_CAPACITY = 1024; - #if !defined(MOZ_HAVE_RDTSC) // The AutoStopwatch is only executed if `MOZ_HAVE_RDTSC`. return false; @@ -155,19 +152,12 @@ PerformanceMonitoring::commit() return true; } - // The move operation is generally constant time, unless `recentGroups_.length()` is very small, in which case it's - // fast anyway because it's small. - PerformanceGroupVector recentGroups(Move(recentGroups_)); - recentGroups_ = PerformanceGroupVector(); // Reconstruct after `Move`. + PerformanceGroupVector recentGroups; + recentGroups_.swap(recentGroups); bool success = true; - if (stopwatchCommitCallback) { - success = stopwatchCommitCallback(iteration_, recentGroups, stopwatchCommitClosure); - } - - // Heuristic use: we expect to have roughly the same number of groups as in the previous iteration. - const size_t capacity = std::min(recentGroups.capacity(), MAX_GROUPS_INIT_CAPACITY); - success = recentGroups_.reserve(capacity) && success; + if (stopwatchCommitCallback) + success = stopwatchCommitCallback(iteration_, recentGroups, stopwatchCommitClosure); // Reset immediately, to make sure that we're not hit by the end // of a nested event loop (which would cause `commit` to be called @@ -237,7 +227,7 @@ AutoStopwatch::AutoStopwatch(JSContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IM MOZ_GUARD_OBJECT_NOTIFIER_INIT; JSCompartment* compartment = cx_->compartment(); - if (MOZ_UNLIKELY(compartment->scheduledForDestruction)) + if (compartment->scheduledForDestruction) return; JSRuntime* runtime = cx_->runtime(); @@ -276,11 +266,11 @@ AutoStopwatch::~AutoStopwatch() } JSCompartment* compartment = cx_->compartment(); - if (MOZ_UNLIKELY(compartment->scheduledForDestruction)) + if (compartment->scheduledForDestruction) return; JSRuntime* runtime = cx_->runtime(); - if (MOZ_UNLIKELY(iteration_ != runtime->performanceMonitoring.iteration())) { + if (iteration_ != runtime->performanceMonitoring.iteration()) { // We have entered a nested event loop at some point. // Any information we may have is obsolete. return; diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp index 03e63a4..6c47035 100644 --- a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp +++ b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp @@ -1310,12 +1310,8 @@ nsPerformanceStatsService::GetResources(uint64_t* userTime, void nsPerformanceStatsService::NotifyJankObservers(const mozilla::Vector<uint64_t>& aPreviousJankLevels) { - - // 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`. - + GroupVector alerts; + mPendingAlerts.swap(alerts); if (!mPendingAlertsCollector) { // We are shutting down. return; diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.h b/toolkit/components/perfmonitoring/nsPerformanceStats.h index 661a78a..6902c84 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>, 8> GroupVector; +typedef mozilla::Vector<RefPtr<nsPerformanceGroup>> GroupVector; /** * A data structure for registering observers interested in -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/pale-moon.git