summaryrefslogtreecommitdiff
path: root/js/src/jsapi.h
diff options
context:
space:
mode:
authorDavid Teller <dteller@mozilla.com>2019-01-29 03:11:39 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-01-29 03:11:39 +0100
commit262f348a8a2a9e9373ced690efe63d97ed126c56 (patch)
tree4e9e254e74b4cbf4cfafa07a37db8af192883925 /js/src/jsapi.h
parentd5203231bf3e7e4a0fa1e7918eda3b3d633515bc (diff)
downloaduxp-262f348a8a2a9e9373ced690efe63d97ed126c56.tar.gz
Reduce number of allocations in AutoStopwatch
This patch fixes two related issues. 1. The AutoStopwatch uses a stack-allocated `mozilla::Vector` to communicate with its callback during each compartment switch. This vector was designed to allow its contents to be stack-allocated but they turned out to be accidentally heap-allocated. 2. During each tick, the stopwatch fills a vector `recentGroups_`. This vector always started with minimal capacity and had to grow repeatedly as groups were added, causing repeated reallocations. This patch preallocates `recentGroups_` to have the same capacity as the previous tick. We expect that this should eventually reach a stable size that closely matches the actual needs of the process.
Diffstat (limited to 'js/src/jsapi.h')
-rw-r--r--js/src/jsapi.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
index 0983f034f8..799396a0af 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>, 0, SystemAllocPolicy>;
+using PerformanceGroupVector = mozilla::Vector<RefPtr<js::PerformanceGroup>, 8, SystemAllocPolicy>;
/**
* Commit any Performance Monitoring data.