Commit Graph

273 Commits

Author SHA1 Message Date
Andrew Osmond
31ad519348 Bug 1275464 - Part 1. Unregister from handling image memory reports when shutting down. r=njn 2016-09-19 13:29:59 -04:00
Nicholas Nethercote
c2306345d5 Bug 1297658 - Avoid unnecessary checking in memory reporters. r=erahm.
This patch removes checking of all the callback calls in memory reporter
CollectReport() functions, because it's not useful.

The patch also does some associated clean-up.

- Replaces some uses of nsIMemoryReporterCallback with the preferred
  nsIHandleReportCallback typedef.

- Replaces aCallback/aCb/aClosure with aHandleRepor/aData for CollectReports()
  parameter names, for consistency.

- Adds MOZ_MUST_USE/[must_use] in a few places in nsIMemoryReporter.idl.

- Uses the MOZ_COLLECT_REPORT macro in all suitable places.

Overall the patch reduces code size by ~300 lines and reduces the size of
libxul by about 37 KiB on my Linux64 builds.

--HG--
extra : rebase_source : e94323614bd10463a0c5134a7276238a7ca1cf23
2016-08-24 15:23:45 +10:00
Nicholas Nethercote
9d5a878581 Bug 1291970 (part 1) - Use MOZ_MUST_USE in nsMemoryReporterManager. r=erahm.
--HG--
extra : rebase_source : 11223e1aadb08c2ce71f783d68b37c135fe4bee5
2016-08-04 12:14:14 +10:00
Nicholas Nethercote
8f51d02c97 Bug 1293117 (part 5) - Change many NS_METHOD occurrences to NS_IMETHOD. r=froydnj.
This patch makes the following changes on many in-class methods.

- NS_METHOD F() override;      --> NS_IMETHOD F() override;
- NS_METHOD F() override {...} --> NS_IMETHOD F() override {...}
- NS_METHOD F() final;         --> NS_IMETHOD F() final;
- NS_METHOD F() final {...}    --> NS_IMETHOD F() final {...}

Using NS_IMETHOD is the preferred way of marking in-class virtual methods.
Although these transformations add an explicit |virtual|, they are safe --
there's an implicit |virtual| anyway because |override| and |final| only work
with virtual methods.

--HG--
extra : rebase_source : 3010fade82a170eab7f13d81bf61b02cd693f3cf
2016-08-08 10:54:50 +10:00
Nicholas Nethercote
e7f10a07fd Bug 1293603 (part 2) - Make Run() declarations consistent. r=erahm.
This patch makes most Run() declarations in subclasses of nsIRunnable have the
same form: |NS_IMETHOD Run() override|.

As a result of these changes, I had to add |override| to a couple of other
functions to satisfy clang's -Winconsistent-missing-override warning.

--HG--
extra : rebase_source : 815d0018b0b13329bb5698c410f500dddcc3ee12
2016-08-08 12:18:10 +10:00
Alexandre Lissy
0af5b943b6 Bug 1284674 - Remove NUWA r=cyu
MozReview-Commit-ID: GyMRNzOBKw6

--HG--
extra : rebase_source : 293af1cd55f2035ce6a99f4ebf144059c32a2b8f
2016-08-02 14:54:00 +02:00
Chris Peterson
b175c9fdd5 Bug 1277106 - Part 2: Expand MOZ_UTF16() strings to u"" string literals. r=Waldo 2016-07-20 22:03:25 -07:00
Kyle Huey
941ab1f522 Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-05-05 01:45:00 -07:00
Carsten "Tomcat" Book
ba3fe0975c Backed out changeset 85ce8cb0639a (bug 1268313)
--HG--
extra : rebase_source : 56d1cf41a2dc4959b67f834e07192a5c772176a8
2016-04-29 14:21:16 +02:00
Kyle Huey
48a594a09e Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-04-28 14:08:25 -07:00
Kyle Huey
c73656947b Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
Nicholas Nethercote
a2f068b2ad Bug 1253085 - Remove the |PLDHashTable*| argument from PLDHash{HashKey,MatchEntry}. r=froydnj.
This is easy because it's never needed.

--HG--
extra : rebase_source : 78830dab41c40a1544fa55fc69ca9c1c6709d767
2016-03-16 15:33:44 +11:00
Nicholas Nethercote
6373d8547c Bug 1252375 - Fix up jemalloc stats reporting. r=erahm.
We have some oddities in our jemalloc stats reporting.

- "heap-overhead-ratio" is a strange measurement: overhead / non-overhead,
  expressed as a percentage. And it omits "bin_unused", which appears to be an
  oversight.

- "heap-committed" also omits "bin_unused".

- There are some minor errors in memory report descriptions.

This patch fixes these and improves the heap reporting. It makes the following
reporting changes:

- "heap-allocated": Duplicated as "heap-committed/allocated". (We keep
  "heap-allocated" because that's a special value used in the computation of
  "heap-unclassified".)

- "heap-committed/overhead": Added; it's the same as the sum of the
  "explicit/heap-overhead/*" values. Together with "heap-committed/allocated"
  it shows clearly what fraction of the heap is overhead and what fraction is
  useful.

- "heap-committed": Removed; now implicit as the "heap-committed/" node.

- "heap-overhead-ratio":
  - Removed from memory reports; now shown as the percentage of the new
    "heap-committed/overhead" node.
  - Still available as a distinguished amount (because it's useful in
    isolation) but renamed to heapOverheadFraction, and the telemetry ID is
    renamed as MEMORY_HEAP_OVERHEAD_FRACTION.

- "heap-chunks": Removed; it's not that interesting, and can be manually
  computed as "heap-mapped" / "heap-chunksize" if necessary.

--HG--
extra : rebase_source : 6f238cda780eb17b2de2f8b9a0b04377c93b109c
2016-03-03 12:49:27 +11:00
Nathan Froyd
34f0b7188c Bug 1252195 - part 2 - use UniqueFreePtr instead of ScopedFreePtr in nsMemoryReporterManager; r=njn 2016-02-29 10:29:42 -05:00
Nicholas Nethercote
7203dc64d4 Bug 1251127 - Gracefully handle multiple calls to nsMemoryReporterManager::Init(). r=erahm.
--HG--
extra : rebase_source : 3c57eccd9a324bb4e0eab03117ef0ca6159e92b5
2016-02-25 14:47:29 +11:00
Nicholas Nethercote
334f3c9213 Bug 1249503 - Make WindowsAddressSpaceReporter bloat memory reports less. r=erahm.
The WindowsAddressSpaceReporter generates one memory report per segment, and
there can be 10,000+ segments.

This patch changes things so that one memory report is generated per segment
*kind* -- at most a couple of dozen -- rather than one per *segment*.

--HG--
extra : rebase_source : bbe86562ee486fd5fbb5d48ff2cc59a6f4c7b4c9
2016-02-23 18:39:24 +11:00
Kyle Huey
91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Felix Janda
c40483da3d Bug 1203272 - Fix build of nsMemoryReporterManager on linux systems without mallinfo(). r=glandium,njn.
--HG--
extra : rebase_source : 704d0eb36b63810b890361b1785b5bf3f6e8e324
2016-01-01 11:10:54 +01:00
Eric Rahm
0ac3743813 Bug 1224685 - Add |resident-unique| measurement to Windows. r=njn 2015-11-13 13:44:48 -08:00
Eric Rahm
53da6e4ad3 Bug 1223927 - Add resident-unique measurement to OS X. r=njn 2015-11-11 14:07:30 -08:00
Nathan Froyd
01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Eric Rahm
80fca20565 Bug 1194555 - Part 6: Run reporters asynchronously. r=njn,jld,ted 2015-10-14 16:52:59 -07:00
Eric Rahm
e93f0f86a3 Bug 1194555 - Part 5: Add option for async memory reporters. r=njn 2015-10-14 16:52:58 -07:00
Eric Rahm
9feffe31c7 Bug 1194555 - Part 4: Rename GetReportsState PendingProcessesState. r=njn 2015-10-14 16:52:57 -07:00
Eric Rahm
b257c6378a Bug 1194555 - Part 3: Remove |getReportsForThisProcess| from the nsIMemoryReporterManager interface. r=njn
|getReportsForThisProcess| differs from |getReports| in that it is limited to current process and is synchronous. When asynchronous memory reporters are added the function will no longer be able tobe synchronous. There isn't much utility in only measuring the current process, so we can remove the function and switch existing users to |getReports|.
2015-10-14 16:52:55 -07:00
Eric Rahm
acd4358a2a Bug 1194555 - Part 2: Remove |explicit| attribute from nsIMemoryReporterManager. r=njn
The calculation of |explicit| relies on the synchronous |getReportsForThisProcess|, once we have asynchronous reporters this will no longer work. As it is currently referenced in the about::memory tests we can just remove it.
2015-10-14 16:52:54 -07:00
Eric Rahm
61d0f893cd Bug 1194555 - Part 1: Remove RunReportersForThisProcess. r=njn
RunReportersForThisProcess is no longer used and will no longer work once we have async reporters.
2015-10-14 16:52:53 -07:00
Eric Rahm
45097b163a Bug 1194555 - Part 0: Cleanup GetReportsState constructor. r=njn
Move GetReportsState ctor to the impl so that mChildrenPending doesn't have
to be heap allocated.
2015-10-14 16:52:52 -07:00
Wes Kocher
a69f1f52e7 Backed out 7 changesets (bug 1194555) for xpcshell failures
Backed out changeset e77be333f4fb (bug 1194555)
Backed out changeset 11951462a37c (bug 1194555)
Backed out changeset 99b27aa952c5 (bug 1194555)
Backed out changeset 70a8ed3b6a45 (bug 1194555)
Backed out changeset 748bfebe81e7 (bug 1194555)
Backed out changeset cbaac05a2934 (bug 1194555)
Backed out changeset fcbfd1379fcd (bug 1194555)
2015-10-06 14:40:51 -07:00
Eric Rahm
f2e4cb7dfe Bug 1194555 - Part 6: Run reporters asynchronously. r=njn,jld 2015-10-06 11:23:36 -07:00
Eric Rahm
d3e60f2da6 Bug 1194555 - Part 5: Add option for async memory reporters. r=njn 2015-10-06 11:23:35 -07:00
Eric Rahm
6fd2bbb5e8 Bug 1194555 - Part 4: Rename GetReportsState PendingProcessesState. r=njn 2015-10-06 11:23:34 -07:00
Eric Rahm
16b67b6d6c Bug 1194555 - Part 3: Remove |getReportsForThisProcess| from the nsIMemoryReporterManager interface. r=njn
|getReportsForThisProcess| differs from |getReports| in that it is limited to current process and is synchronous. When asynchronous memory reporters are added the function will no longer be able tobe synchronous. There isn't much utility in only measuring the current process, so we can remove the function and switch existing users to |getReports|.
2015-10-06 11:23:33 -07:00
Eric Rahm
57bd025868 Bug 1194555 - Part 2: Remove |explicit| attribute from nsIMemoryReporterManager. r=njn
The calculation of |explicit| relies on the synchronous |getReportsForThisProcess|, once we have asynchronous reporters this will no longer work. As it is currently referenced in the about::memory tests we can just remove it.
2015-10-06 11:23:32 -07:00
Eric Rahm
e15a1912e0 Bug 1194555 - Part 1: Remove RunReportersForThisProcess. r=njn
RunReportersForThisProcess is no longer used and will no longer work once we have async reporters.
2015-10-06 11:23:31 -07:00
Eric Rahm
dc17e5a1b8 Bug 1194555 - Part 0: Cleanup GetReportsState constructor. r=njn
Move GetReportsState ctor to the impl so that mChildrenPending doesn't have
to be heap allocated.
2015-10-06 11:23:30 -07:00
Mike Hommey
538706caba Bug 1203840 - Trigger dirty pages purge after CC. r=njn,r=smaug,r=mccr8
Jemalloc 4 purges dirty pages regularly during free() when the ratio of dirty
pages compared to active pages is higher than 1 << lg_dirty_mult.  We set
lg_dirty_mult in jemalloc_config to limit RSS usage, but it also has an impact
on performance.

So instead of enforcing a high ratio to force more pages being purged, we keep
jemalloc's default ratio of 8, and force a regular purge of all dirty pages,
after cycle collection.

Keeping jemalloc's default ratio avoids cycle-collection-triggered purge to
have to go through really all dirty pages when there are a lot, in which case
the normal jemalloc purge during free() will already have kicked in. It also
takes care of everything that doesn't run the cycle collector still having
a level of purge, like plugins in the plugin-container.

At the same time, since jemalloc_purge_freed_pages does nothing with jemalloc 4,
repurpose the MEMORY_FREE_PURGED_PAGES_MS telemetry probe to track the time
spent in this cycle-collector-triggered purge.
2015-09-20 17:43:43 +09:00
Nicholas Nethercote
c8578157c2 Bug 1194061 - Implement "system-heap-allocated" reporter for Windows. r=dmajor.
--HG--
extra : rebase_source : a0f31c1ca1c6671d592c73d2473dcc5669022077
2015-08-19 20:35:17 -07:00
Nicholas Nethercote
01a073b5a2 Bug 828844 - Add a "system-heap-allocated" memory report on Linux. r=glandium.
This gives zero when jemalloc is enabled and non-zero when jemalloc is disabled
(e.g. I got 83 MiB at start-up, which sounds plausible).

--HG--
extra : rebase_source : f39a15472d48643f57a77f1df03e4a29543d0867
2015-08-12 17:44:00 -07:00
Nate Hughes
94f8966c4b Bug 986302 - Add memory reporting for HPACK tables r=hurley r=njn 2015-07-17 14:38:10 -07:00
Carsten "Tomcat" Book
f7531b86f7 Backed out changeset 8b90b21e0c64 (bug 986302) for static build failures 2015-07-21 08:53:37 +02:00
Nate Hughes
3f6e8d3da5 Bug 986302 - Add memory reporting for HPACK tables. r=hurley r=njn 2015-07-17 14:38:10 -07:00
Ehsan Akhgari
29d8c3e504 Bug 1123386 - Part 3: Mark DoNothingCallback::Callback as override in order to fix a build issue in warnings as errors mode 2015-07-17 22:19:57 -04:00
Birunthan Mohanathas
a8939590de Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Nicholas Nethercote
e4c39dc6c4 Bug 1181445 (part 2) - Use nsTHashTable::Iterator in nsMemoryReporterManager. r=froydnj.
--HG--
extra : rebase_source : 038b7ee151880d57066024d940fa112ee282a995
2015-07-08 22:32:39 -07:00
Jed Davis
a77ba18be9 Bug 1154053 - Limit concurrency of e10s memory reporting. r=erahm
This changes the way nsMemoryReporterManger handles child processes;
instead of using an observer message and trying to keep a count of child
processes expected to answer, it directly iterates a copy of the list
of content processes and explicitly handles children which exit before
their reports start.

Note that GC/CC logs still run at full concurrency, and that no child
reports start until the parent is finished (see bug 1151597) regardless
of concurrency limit.
2015-05-06 20:51:00 +02:00
Phil Ringnalda
c1284c6108 Back out e05936099653 (bug 1154053) on suspicion of causing the hellish frequency of Android 2.3 robocop-2 crashes that resulted in this CLOSED TREE, a=bustage 2015-05-07 22:41:26 -07:00
Jed Davis
bc4db515c0 Bug 1154053 - Limit concurrency of e10s memory reporting. r=erahm
This changes the way nsMemoryReporterManger handles child processes;
instead of using an observer message and trying to keep a count of child
processes expected to answer, it directly iterates a copy of the list
of content processes and explicitly handles children which exit before
their reports start.

Note that GC/CC logs still run at full concurrency, and that no child
reports start until the parent is finished (see bug 1151597) regardless
of concurrency limit.
2015-05-06 20:51:00 +02:00
Jed Davis
05e38d787e Bug 1151597 - Step 2: Don't start child process memory reports until parent is finished. r=erahm
--HG--
extra : rebase_source : e271fd7997012d9f3eaff78c1dfff656347442be
2015-04-27 15:46:00 -04:00
Jed Davis
1b9d15f48d Bug 1151597 - Step 1: Change memory reporting IPC to send one report per message. r=erahm
Also fixes bug 1005154 -- since there's now a method for "end of report",
we might as well call it from ActorDestroy instead of Recv__delete__.

--HG--
extra : rebase_source : 89f467fbc553a1a3a4d9b144fff747fa3447f21b
2015-04-27 15:45:00 -04:00