mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 15:58:39 +09:00
Revert "Reduce number of allocations in AutoStopwatch"
This reverts commit 3476c1d60ec29c5497123194acd7a9310b1023d2.
This commit is contained in:
parent
059aeea416
commit
dce38e8d76
4 changed files with 11 additions and 25 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue