Commit Graph

118 Commits

Author SHA1 Message Date
Olli Pettay
15af1ecf7d Bug 1376614 - Pass budget to forgetSkippable and return early when budget has been used, r=mccr8 2017-06-30 13:44:59 +03:00
Bill McCloskey
267ad1f2b0 Bug 1359245 - Initial support for cooperative contexts (r=mccr8)
This patch adds initial support for cooperatively scheduled
CycleCollectedJSContexts.

MozReview-Commit-ID: 5pfPubHUanL
2017-04-27 15:34:46 -07:00
Jan de Mooij
a53986bf29 Bug 1302448 part 1 - Rename CycleCollectedJSRuntime to CycleCollectedJSContext. r=mccr8
--HG--
rename : xpcom/base/CycleCollectedJSRuntime.cpp => xpcom/base/CycleCollectedJSContext.cpp
rename : xpcom/base/CycleCollectedJSRuntime.h => xpcom/base/CycleCollectedJSContext.h
extra : rebase_source : 075214b5057f151520926715b6154e99ae80a0b3
2016-09-14 15:47:32 +02:00
Andrew McCreight
f9e6d19361 Bug 1299934 - Run shutdown collection in workers in opt builds. r=froydnj,smaug
We skip running shutdown collection on the main thread, because we're
exiting right after, but the process still continues when we shut down
a worker, so we should always do collections there.

MozReview-Commit-ID: IQZItm1qWXW

--HG--
extra : rebase_source : 4fd89e36db124a524c240e806a885dee3b68979e
2016-09-08 13:04: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
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
Andrew McCreight
468e063778 Bug 1137536, part 3 - Move the top level DeferredFinalize functions into their own file. r=smaug 2015-03-18 11:36:03 -07:00
Andrew McCreight
fc0fb081b0 Bug 1137536, part 1 - Move DeferredFinalize out of the cyclecollector namespace. r=smaug 2015-03-18 11:36:03 -07:00
Andrew McCreight
def1230d4e Bug 1119482, part 4 - Move IsJSHolder into HoldDropJSObjects. r=smaug 2015-03-10 16:41:38 -07:00
Olli Pettay
bed81b1fde Bug 1105089, try to have shorter ICC slices during animations, r=mccr8
--HG--
extra : rebase_source : bfe8cc2825b7cb2ec86f6e8f5ba590593e1c378b
2014-11-27 13:47:51 +02:00
Emanuel Hoogeveen
fbc3e91445 Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-11-06 10:14:00 +01:00
Carsten "Tomcat" Book
d87e8af66c Backed out changeset 77959236fb15 (bug 1084651) 2014-11-07 15:30:16 +01:00
Emanuel Hoogeveen
0d92fda72d Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-11-06 10:14:00 +01:00
Carsten "Tomcat" Book
13de0f42c9 Backed out 7 changesets (bug 1084651) for ASAN Bustage on a CLOSED TREE
Backed out changeset dd2b3e78b425 (bug 1084651)
Backed out changeset 2711fbd91819 (bug 1084651)
Backed out changeset 59a163addd79 (bug 1084651)
Backed out changeset d36f6dbbf925 (bug 1084651)
Backed out changeset 78102b62a4a0 (bug 1084651)
Backed out changeset 06387a2343a0 (bug 1084651)
Backed out changeset 2f8e7c39573e (bug 1084651)
2014-11-05 15:20:25 +01:00
Emanuel Hoogeveen
dd0cdda357 Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-10-21 11:54:00 +02:00
Birunthan Mohanathas
c9fb2c0d48 Bug 1022456 - Fix modelines in xpcom/{base,glue,io,string,threads}/. r=froydnj 2014-06-30 08:39:45 -07:00
Andrew McCreight
ddc6e4ad99 Bug 1029660 - Remove nsContentUtils::DeferredFinalize. r=peterv 2014-06-26 09:29:05 -07:00
Birunthan Mohanathas
0d2648eb80 Bug 995730 - Fix style violations in xpcom/base/ (part 2). r=froydnj 2014-05-14 23:14:58 +03:00
Jed Davis
e4ced412bb Bug 973090 - IPC remoting for child GC/CC logging. r=mccr8, r=bent
This has a few semi-interdependent pieces:

* Factoring out the file opening/closing/renaming from the GC/CC logging.

* Using IPC to have the child log to files that the parent opened.

* Changing nsIMemoryInfoDumper.dumpGCAndCCLogsToFile to report completion
  of child process logging (which was impossible before this, and which is
  needed to have a meaningful test case).

* Changing about:memory to dump logs for child processes, matching the
  behavior of the "Measure" button, because it can tell the user where
  they are now.

* Add a test for multiprocess GC/CC log dumping (only of the XPCOM
  interface, not by clicking buttons and scraping the about:memory page,
  but done as a chrome mochitest to start remote browsers); based on
  test_memoryReporters2.xul in the same directory.
2014-05-13 13:13:00 -04:00
Birunthan Mohanathas
fb371cca99 Bug 995730 - Fix style violations in xpcom/base/. r=froydnj,continuation 2014-05-13 20:41:38 +03:00
Andrew McCreight
b89c24ee20 Bug 958353 - Add finishCC() and ccSlice() methods for testing incremental cycle collection. r=smaug 2014-05-06 17:25:26 -07:00
Andrew McCreight
91646dadb8 Bug 950959 - Rename scheduled cycle collector stuff to slice. r=smaug 2014-01-01 11:00:35 -08:00
Andrew McCreight
53e4433905 Bug 937960, part 3 - Pass in a small time budget with ICC. r=smaug 2013-12-22 09:58:19 -05:00
Ryan VanderMeulen
e8e36d08b0 Backed out changesets ccdc3d4f4571, 4dcc91e771e3, 0ae14946314b, and 94d22ab0b17f (bug 937960) for Windows 7 debug xpcshell failures. 2013-12-19 16:57:55 -05:00
Andrew McCreight
03a8a8e082 Bug 937960, part 3 - Pass in a small time budget with ICC. r=smaug 2013-12-18 21:22:55 -08:00
Ryan VanderMeulen
96ec232042 Backed out changesets b03bd1170d1c, 419615a1195d, a1b699b80442, and 524c573fd8a6 (bug 937960) for Win7 debug xpcshell orange. 2013-12-18 19:04:11 -05:00
Andrew McCreight
890aa014bf Bug 937960, part 3 - Pass in a small time budget with ICC. r=smaug 2013-12-18 11:42:16 -08:00
Andrew McCreight
cff1ba464d Bug 937766, part 5 - Implement PrepareForGarbageCollection. r=smaug
Running the garbage collector can cause objects in the CC graph to
die, so just finish off an incremental cycle collection when we
start a GC.
2013-12-06 10:17:20 -08:00
Andrew McCreight
6663405c37 Bug 935721, part 10 - Separate nsCycleCollector_collect and nsCycleCollector_scheduledCollect. r=smaug 2013-11-20 14:35:17 -08:00
Andrew McCreight
96e1092a51 Bug 935721, part 5 - Invert the control flow of CycleCollectNow's pre- and post-collection work, add CCResults as a field on the CC. r=smaug
nsJSEnvironment::CycleCollectNow does work before and after a CC runs. With ICC, nsJSEnv won't
know where in the CC when a CC is about to begin or end, so this patch reorganizes that work
into two separate callback hooks.  This requires adding a new struct, CycleCollectorStats, to
hold data nsJSEnv needs between the two calls.

Rather than trying to pass around a pointer to a results structure, this patch just adds
it to the nsCycleCollector struct, and always stores them. The results are passed back
to the end CC callback.
2013-11-20 14:35:16 -08:00
Ehsan Akhgari
83edc15195 Bug 917885 - Minimize the #includes in xpcom/base; r=bsmedberg 2013-09-19 14:29:31 -04:00
Ehsan Akhgari
5b80f8355d Backed out changeset a8d6973e5743 (bug 917885) because I pushed the wrong patch 2013-09-19 14:27:35 -04:00
Ehsan Akhgari
17ae4f436e Bug 917885 - Minimize the #includes in xpcom/base; r=bsmedberg 2013-09-19 14:12:56 -04:00
Andrew McCreight
34c84eb4f1 Bug 913666, part 5 - Rename aListener to aManualListener. r=smaug
The name "aListener" is not very descriptive, and with the previous patch, it is only
used to pass in a manually-specified listener that was passed in to CycleCollectNow,
so rename things.
2013-09-10 16:33:41 -07:00
Kyle Huey
c6389ea0fa Bug 911258: Part 4 - Refactor exception implementations. r=bz 2013-09-08 20:28:50 -07:00
Andrew McCreight
01af9297c7 Bug 883920 - use templates for {Hold,Drop}JSObjects. r=peterv 2013-08-16 13:10:17 -07:00
Olli Pettay
fec6e6d8e3 Bug 910797, make Event.isTrusted to work in workers, r=khuey 2013-08-30 12:47:19 +03:00
Andrew McCreight
d45893bf60 Bug 903524 - Rename TestJSHolder to IsJSHolder. r=smaug 2013-08-15 10:29:02 -07:00
Kyle Huey
7ea5a68da2 Bug 901630: Remove support for the cc thread. r=mccr8 2013-08-13 10:45:32 -07:00
Kyle Huey
9908c2bd93 Bug 845545: Part 3 - Give the CycleCollectedJSRuntime more control over
SnowWhite. r=smaug
2013-08-03 16:55:39 -07:00
Olli Pettay
ae46376c2e Bug 897433 - Telemetry for SnowWhite and more async SnowWhite freeing (patch v4), r=mccr8 2013-07-27 13:48:45 +03:00
Ryan VanderMeulen
496513c7cd Backed out changeset 300f5b7d72e1 (bug 897433) for intermittent Linux dromaeo crashes. 2013-07-25 21:18:20 -04:00
Olli Pettay
e05c81b4a4 Bug 897433, Telemetry for SnowWhite and more async SnowWhite freeing, r=mccr8
--HG--
extra : rebase_source : 487139a95f50e69d6273c2870ed6623f175544e7
2013-07-25 22:56:20 +03:00
Olli Pettay
b002b30b2a bug 789919, (snow-white) make addref/release of CCable objects faster by removing indirect refcnt increase/decrease, r=mccr8, test changes r=ehsan
--HG--
extra : rebase_source : 2a3b22425c14d6daedc91d62a652c34431acd2fb
2013-07-09 13:30:58 -04:00
Kyle Huey
ab927a2cc9 Bug 885866: Separate deferred finalization from XPConnect so we can use it off the main thread. r=mccr8, peterv, bsmedberg, jorendorff 2013-07-09 07:28:15 -07:00
Kyle Huey
66fb46a26e Bug 882162: Part 9 - Kill nsCycleCollectionJSRuntime. r=mccr8 2013-06-18 12:02:16 -07:00
Kyle Huey
a57dbb3230 Bug 877584: Route JS holding through the cycle collection runtime so it can do different things on different threads. r=mccr8 2013-06-18 12:01:26 -07:00
Ed Morley
3bf60a9f11 Backed out changeset 2864e2610800 (bug 877584) for causing bug 881266 2013-06-11 16:11:14 +01:00
Kyle Huey
bbf045f825 Bug 877584: Route JS holding through the cycle collection runtime so it can do different things on different threads. r=mccr8 2013-06-09 16:02:02 -07:00
Kyle Huey
3c18bb93bd Back out bug 877584 on this CLOSED TREE. 2013-06-06 10:49:09 -07:00