Commit Graph

454 Commits

Author SHA1 Message Date
Andrew McCreight
c54675a8a9 Bug 981033 - Clear mActivelyCollecting before restarting CC. r=smaug 2014-03-11 07:34:35 -07:00
Bobby Holley
611c847a27 Bug 975419 - Add a JS::TenuredHeap<JSObject*> overload to TraceCallbacks. r=mccr8,terrence 2014-03-03 08:53:42 -08:00
Andrew McCreight
0dbad2da13 Bug 977688 - Get rid of CC_AbortIfNull. r=smaug 2014-02-28 09:56:23 -08:00
Andrew McCreight
0353960345 Bug 962608 - Make PL_DHashTableInit infallible by default. r=briansmith,bsmedberg,ehsan,froydnj,jduell,jfkthame,roc,smaug 2014-02-27 10:04:09 -08:00
Andrew McCreight
833279b6b8 Bug 901597, part 2 - Add environment var to CC log only main or worker threads. r=smaug 2014-02-20 14:27:04 -08:00
Andrew McCreight
915a1940a3 Bug 901597, part 1 - Move CC logging logic into nsCCParams. r=smaug 2014-02-20 14:27:03 -08:00
Andrew McCreight
04756efc8f Bug 972940 - Rename XPCOM_CC_ env vars to MOZ_CC_. r=smaug,njn 2014-02-20 14:27:03 -08:00
Andrew McCreight
0cc6333124 Backout bug 972940 for valgrind leaks on this CLOSED TREE 2014-02-19 17:20:48 -08:00
Andrew McCreight
3cb3bca6a3 Backout bug 901597 for valgrind leaks 2014-02-19 17:19:17 -08:00
Andrew McCreight
013dd784f5 Backout bug 901597 for valgrind leaks 2014-02-19 17:18:59 -08:00
Andrew McCreight
c47c19f9cd Bug 901597, part 2 - Add environment var to CC log only main or worker threads. r=smaug 2014-02-19 13:27:15 -08:00
Andrew McCreight
c2269e1629 Bug 901597, part 1 - Move CC logging logic into nsCCParams. r=smaug 2014-02-19 13:27:14 -08:00
Andrew McCreight
3f976fe0cf Bug 972940 - Rename XPCOM_CC_ env vars to MOZ_CC_. r=smaug 2014-02-19 13:27:14 -08:00
Andrew McCreight
02daa1568c Bug 966359 - Prevent FreeSnowWhite reentrance. r=smaug 2014-02-11 14:56:44 -08:00
Ehsan Akhgari
d91d200572 Bug 969757 - Remove the dead code in our tree which pretends to support OS/2; r=roc,mcmanus,gps,jorendorf,bsmedberg sr=bsmedberg 2014-02-10 17:57:01 -05:00
Nicholas Nethercote
9c25748c63 Bug 903131 - Add save GC/CC logs buttons to about:memory. r=njn,mccr8.
--HG--
extra : rebase_source : 56af9b89675394b5a219f699b96c1d26c00adc38
2014-01-31 14:43:08 -08:00
Olli Pettay
77759a327d Bug 958315 - Suspect JS things released by dying C++ objects in the next CC, r=mccr8 2014-01-14 22:23:59 +02:00
Andrew McCreight
b0d96345f5 Bug 956080 - Rename BeginCycleCollection to TraverseRoots. r=smaug 2014-01-07 17:33:47 -08: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
64258f4913 Bug 950949 - Run forgetSkippable per CC not per 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
Andy Wingo
0efae2b21b Bug 951483 - Add back nsCycleCollector::ShutdownCollect assertion that was mistakenly removed in bug 945813. r=mccr8 2013-12-18 11:01:32 +01:00
Andrew McCreight
11f2c0ea43 Bug 937818, part 4 - Exceeded refcount nodes should already be black. r=smaug
Due to graph mutation during an incremental cycle collection, objects in the CC graph
may end up with more things pointing to them than they have a ref count. However, these
objects should never become garbage.
2013-12-17 19:29:57 -08:00
Andrew McCreight
ab69eca538 Bug 937818, part 3 - Add ScanIncrementalRoots(). r=smaug
Any object that has been stored away somewhere in the middle of incremental graph
building must be treated as live, because we can't trust that the CC graph has
accurate information about it. If such an object is truly garbage, we'll unlink it
in the next cycle collection instead.
2013-12-17 19:29:57 -08:00
Andrew McCreight
76b4feac36 Bug 937818, part 1 - Add objects to the purple buffer on AddRef. r=smaug
ICC uses this to track objects that have been AddRef'd during ICC graph building.
For those objects, we may not have the proper information for them, so treat them
as live.
2013-12-17 19:29:57 -08:00
Carsten "Tomcat" Book
dd80853527 Backed out changeset 261091719842 (bug 937818) for static rooting hazard analysis bustage on a CLOSED TREE 2013-12-17 09:20:51 +01:00
Carsten "Tomcat" Book
f1d19f75cb Backed out changeset a9715a3b0e13 (bug 937818) for static rooting hazard analysis bustage on a CLOSED TREE 2013-12-17 09:20:31 +01:00
Carsten "Tomcat" Book
ad47674f4c Backed out changeset ae01d2862600 (bug 937818) for static rooting hazard analysis bustage on a CLOSED TREE 2013-12-17 09:20:10 +01:00
Andrew McCreight
31e4486875 Bug 937818, part 4 - Exceeded refcount nodes should already be black. r=smaug
Due to graph mutation during an incremental cycle collection, objects in the CC graph
may end up with more things pointing to them than they have a ref count. However, these
objects should never become garbage.
2013-12-16 21:30:54 -08:00
Andrew McCreight
4b11c4307f Bug 937818, part 3 - Add ScanIncrementalRoots(). r=smaug
Any object that has been stored away somewhere in the middle of incremental graph
building must be treated as live, because we can't trust that the CC graph has
accurate information about it. If such an object is truly garbage, we'll unlink it
in the next cycle collection instead.
2013-12-16 21:30:53 -08:00
Andrew McCreight
3145a6bc8f Bug 937818, part 1 - Add objects to the purple buffer on AddRef. r=smaug
ICC uses this to track objects that have been AddRef'd during ICC graph building.
For those objects, we may not have the proper information for them, so treat them
as live.
2013-12-16 21:30:53 -08:00
Andrew McCreight
4fee07359d Bug 947719 - Call Checkpoint on every slice in nsCycleCollector::MarkRoots. r=smaug 2013-12-10 08:07:20 -08:00
Nicholas Nethercote
8bbe1e2dc1 Bug 947798 (part 2) - Remove MemoryMultiReporter, because it's no longer helpful. r=mccr8.
--HG--
extra : rebase_source : f6f74de69d8c1d79d38b84b19dff5439efc41075
2013-12-07 21:39:47 -08:00
Birunthan Mohanathas
3440613a39 Bug 713082 - Part 2: Rename Util.h to ArrayUtils.h. r=Waldo
--HG--
rename : mfbt/Util.h => mfbt/ArrayUtils.h
2013-12-08 21:52:54 -05: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
c646a8c5ef Bug 937766, part 4 - Add GCGraph::IsEmpty method. r=smaug 2013-12-06 10:17:20 -08:00
Andrew McCreight
625ea25bce Bug 937766, part 3 - Add mParticipant null checks. r=smaug
When an object dies during an incremental cycle collection, we null out
its mParticipant, so we must add various null checks to avoid crashing
when we reach the CC graph representation of an object that has died.
2013-12-06 10:17:20 -08:00
Andrew McCreight
d1f30059ad Bug 937766, part 2 - Make SnowWhiteKiller remove dying things from the CC graph. r=smaug
If we purge snow white objects while ICC is in progress, we need to
make sure to remove anything from the CC graph to avoid dangling pointers.
We don't need to do that after shutdown.
2013-12-06 10:17:20 -08:00
Andy Wingo
5d9420d02c Bug 945813 - Paper over cycle collection problem in IndexedDB. r=mccr8, r=khuey 2013-12-04 14:53:25 +01:00
Nicholas Nethercote
b413e441cf Bug 943660 (part 2) - Remove remnants of Remove nsIMemoryReporter::name.
--HG--
extra : rebase_source : 900bd1c641b26623cccf14d952b5387223b489eb
2013-12-03 20:01:24 -08:00
Ryan VanderMeulen
70aeae383f Backed out changeset 2572592c326d (bug 945813) for Linux64 debug xpcshell crashes.
CLOSED TREE
2013-12-03 20:35:03 -05:00
Andy Wingo
a9d2f530d9 Bug 945813 - Paper over cycle collection problem in IndexedDB. r=mccr8, r=khuey 2013-12-03 18:35:04 +01:00
Andrew McCreight
ea3497e170 Bug 937751, part 7 - Incrementalize nsCycleCollector::MarkRoots. r=smaug
Now that all of MarkRoots's state is stored on the heap, it can be run
incrementally. Like with Collect, it takes a budget to determine how
long it can run. Any residual budget will be available to the caller.

One difference is that Collect calls checkOverBudget() which always checks
the time, but MarkRoots uses isOverBudget() to determine if there is
any time remaining. This only checks the current time every
kNumNodesBetweenTimeChecks nodes, to reduce the overhead of checking.
2013-12-03 10:47:47 -08:00
Andrew McCreight
bd8bf20017 Bug 937751, part 6 - Allocate the current MarkRoots node on the heap rather than the stack. r=smaug
To make nsCycleCollector::MarkRoots incremental, we have to store all of its state on
the heap, so we can resume it.  The only remaining state to convert is the NodePool
enumerator.
2013-12-03 10:47:47 -08:00
Andrew McCreight
bbd56bb6f1 Bug 937751, part 5 - Add optional phase logging. r=smaug
For debugging purposes, it can be useful to see what ICC is currently
being run.
2013-12-03 10:47:47 -08:00
Andrew McCreight
5e100e7681 Bug 937751, part 4 - Incrementalize nsCycleCollector::Collect. r=smaug
This patch makes it so that Collect takes a time budget that describes
how much longer the collection can be run for. Then we run the current phase.
Once this is done, we check whether we have exceeded our time budget or
if we have finished a collection. If neither of those have happened, we
run the cycle collector some more.

If we're a manually triggered CC, and we were in the middle of an ICC when
the CC started, then once the current CC is complete, we start a new CC
immediately. This is needed to ensure that a manually specified listener
is used, and to ensure that any garbage objects the caller expects to be
collected are in fact collected.

Note that in this patch we are always passing in an unlimited budget to
Collect, so cycle collections will always be run to completion.
2013-12-03 10:47:47 -08:00