The current code for resizing PLDHashTable modifies the cached hash for
all entries in the old hash table. This is unnecessary, because we're
going to throw away the old hash table shortly, and inefficient, because
writing to memory we're never going to use again just wastes time and
memory bandwidth. Instead, let's avoid the write by pulling out the
cached key and doing the necessary manipulation on local variables,
which is probably slightly faster.
This alters nsILoadURIDelegate.loadURI() to return a Promise rather than spinning the event loop to synchronously return a boolean, and alters nsDocShell::InternalLoad to allow for those changes by re-calling itself if necessary based on the resolution of the promise.
Similar to the previous part, we convert mBreakpadId to an nsCString to
avoid issues with locale-dependent std::string operations.
There are a lot of non-profiler changes here because a bunch of things
depend on the SharedLibrary object that the profiler defines.
Later patches add support for Windows. OS-X will need a follow-up.
MozReview-Commit-ID: DDd6uir4KzM
--HG--
extra : source : b4394660fde2b05e972c491246570d8f79d8a7c6
extra : absorb_source : 063bc5db64faa9311ac9db99259cd477fb8fcf7e
The only real way to get memory mapping information on Linux is to read and
parse /proc/self/maps, and infer information about a specific pointer based on
its contents.
This patch adds a helper which parses the entire contents of smaps, and
returns an array of objects describing each region. It also updates resident
unique reporter to use that helper. Later patches use it to map stack base
addresses to VM regions, and report their usage data.
MozReview-Commit-ID: 8VUu1kMT77L
--HG--
extra : source : e89ebe1f22f28d2b667514cb66d39606136a2f58
extra : absorb_source : 86ad16750144e02b9fbe84390eeab6c1917b379d
This change stores the base allocation address and actual allocated stack size
(as opposed to the requested size, which may be 0), so that we can map them to
VM regions in a memory reporter.
MozReview-Commit-ID: IZbbyQ9pKHr
--HG--
extra : source : 391b97f0e5c029880d4a1ae697463cfcb8839116
This will allow us to enumerate active threads in order to report their
memory.
MozReview-Commit-ID: IExELSkFdwB
--HG--
extra : source : 2916b5e05b6d100e91448f21cb4082e41a86e87c
Later patches add support for Windows. OS-X will need a follow-up.
MozReview-Commit-ID: DDd6uir4KzM
--HG--
extra : rebase_source : a28826d3331d057f4d35bec56da7738a727d9768
The only real way to get memory mapping information on Linux is to read and
parse /proc/self/maps, and infer information about a specific pointer based on
its contents.
This patch adds a helper which parses the entire contents of smaps, and
returns an array of objects describing each region. It also updates resident
unique reporter to use that helper. Later patches use it to map stack base
addresses to VM regions, and report their usage data.
MozReview-Commit-ID: 8VUu1kMT77L
--HG--
extra : rebase_source : e9c233aa828b57efa5c0c154cdb9c7d049cc3312
This change stores the base allocation address and actual allocated stack size
(as opposed to the requested size, which may be 0), so that we can map them to
VM regions in a memory reporter.
MozReview-Commit-ID: IZbbyQ9pKHr
--HG--
extra : rebase_source : 1b61bfd63931ce9e2bf9a71905468336971d0956
This will allow us to enumerate active threads in order to report their
memory.
MozReview-Commit-ID: IExELSkFdwB
--HG--
extra : rebase_source : 94b63857357639b201b85bdd7bfc4fbe1d4b7f62
Summary: GTest is permafailing because of this test (GTest is always running over 1200s).
Reviewers: froydnj
Reviewed By: froydnj
Bug #: 1473531
Differential Revision: https://phabricator.services.mozilla.com/D2032
--HG--
extra : rebase_source : 07413c4d7ba4eb6bd1439f292bd489a775dab61b
I initially tried to avoid this, but decided it was necessary given the number
of times I had to repeat the same pattern of casting a variable to void*, and
then casting it back in a part of code far distant from the original type.
This changes our preference callback registration functions to match the type
of the callback's closure argument to the actual type of the closure pointer
passed, and then casting it to the type of our generic callback function. This
ensures that the callback function always gets an argument of the type it's
actually expecting without adding any additional runtime memory or
QueryInterface overhead for tracking it.
MozReview-Commit-ID: 9tLKBe10ddP
--HG--
extra : rebase_source : 7524fa8dcd5585f5a31fdeb37d95714f1bb94922
Adding or removing an FD from this API currently requires changes in about a
half dozen places. Ignoring the Java side of things. This patch changes the
API to pass a struct, rather than additional arguments for each FD, so that
adding and removing FDs only requires changing one declaration, and the two
call sites that add and consume the FDs.
MozReview-Commit-ID: CToSEVp1oqP
--HG--
extra : intermediate-source : ff41551f5ff1b98b72ed771a6f2a3f66a8b79a57
extra : absorb_source : c9fe7423fcbb47655b05209b44fb02b69b272d07
extra : source : 4b7a8a35ed956159e2f443c6211164c0cbf3d926
extra : histedit_source : b98b792791274f00a5e649c82dc25043cc1d699a