diff options
author | David Teller <dteller@mozilla.com> | 2019-01-29 03:11:39 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-01-29 03:11:39 +0100 |
commit | b55d41c240df13812760a2a77f086a477f450fd0 (patch) | |
tree | 4e9e254e74b4cbf4cfafa07a37db8af192883925 /js/src/jsapi.h | |
parent | abcaa560fcaf2f814fc40eef46557033c910eb96 (diff) | |
download | UXP-b55d41c240df13812760a2a77f086a477f450fd0.tar UXP-b55d41c240df13812760a2a77f086a477f450fd0.tar.gz UXP-b55d41c240df13812760a2a77f086a477f450fd0.tar.lz UXP-b55d41c240df13812760a2a77f086a477f450fd0.tar.xz UXP-b55d41c240df13812760a2a77f086a477f450fd0.zip |
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.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/js/src/jsapi.h b/js/src/jsapi.h index 0983f034f..799396a0a 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. |