Commit Graph

591 Commits

Author SHA1 Message Date
Andrew McCreight
5d041e8902 Bug 1208157, part 2 - Make the fields of nsCycleCollector private. r=smaug
These are accidentally exposed by the NS_DECL.
2015-09-25 10:43:21 -07:00
Andrew McCreight
b08c720e18 Bug 1208157, part 1 - Add and use nsCycleCollector::IsIdle() predicate. r=smaug 2015-09-25 10:43:21 -07:00
Andrew McCreight
e5eec3fba6 Bug 1202670 - Move most of nsCycleCollector::RemoveObjectFromGraph into CCGraph. r=smaug 2015-09-25 10:43:21 -07:00
Mike Hommey
f64c5cadc8 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
Andrew McCreight
281bd0fafb Bug 1205348 - Always do shutdown CCs when NS_FREE_PERMANENT_DATA is defined. r=smaug 2015-09-16 10:10:00 +02:00
Nicholas Nethercote
829edf1dcd Bug 1121760 (part 6) - Move all remaining PL_DHash*() functions into PLDHashTable. r=poiru. 2015-09-14 14:23:47 -07:00
Nicholas Nethercote
3bbd89a422 Bug 1121760 (part 2) - Remove PL_DHashTableAdd(). r=poiru. 2015-09-14 14:23:12 -07:00
Nicholas Nethercote
f9fdfba566 Bug 1121760 (part 1) - Remove PL_DHashTableSearch(). r=poiru. 2015-05-21 00:34:25 -07:00
Nicholas Nethercote
f437608d1a Bug 1202526 (part 8) - Use PLDHashTable::RemoveEntry() in the cycle collector. r=mccr8.
This avoids repeating the hash table search in order to remove a CC graph
entry, which is good because it's a common operation.
2015-09-07 21:15:32 -07:00
Andrew McCreight
d0367942b5 Bug 1200795, part 2 - Add memory reporting for CCGraph::mPtrToNodeMap. r=njn 2015-09-04 09:45:44 -07:00
Andrew McCreight
13a193098f Bug 1200795, part 1 - Eliminate excessive detail from cycle collector graph memory reporting. r=njn 2015-09-04 09:45:44 -07:00
Terrence Cole
58827ba017 Bug 1193032 - Part 2: Make unlimited SliceBudget initialization explicit; r=ehoogeveen,r=mccr8 2015-08-11 08:42:24 -07:00
Andrew McCreight
ba69338f4f Bug 1189122 - Assert when we Suspect() when a CC scan is in progress. r=smaug
This can cause leaks that are invisible to our XPCOM leak detection system.

To avoid this, classes should not addref or release in their Traverse methods.
2015-07-29 20:48:00 +02:00
Nicholas Nethercote
37d91ed8fe Bug 1188745 - Rename nsTArray::SizeOfExcludingThis() as ShallowSizeOfExcludingThis(). r=froydnj.
This makes it clearer that, unlike how SizeOf*() functions usually work, this
doesn't measure any children hanging off the array.

And do likewise for nsTObserverArray.
2015-07-28 23:24:24 -07:00
Victor Porof
1a131addbd Bug 1183228 - Use separate files for AutoTimelineMarker and AutoGlobalTimelineMarker, r=smaug 2015-07-17 15:51:39 -04:00
Nick Fitzgerald
ef502bf361 Bug 1141614 - Part 3: Trace cycle collection with AutoGlobalTimelineMarker; r=smaug 2015-06-10 14:05:53 -07:00
Ryan VanderMeulen
6f374fc002 Backed out 5 changesets (bug 1141614) for browser_timelineMarkers-02.js failures.
Backed out changeset 1db2b848699a (bug 1141614)
Backed out changeset 9becec7879dc (bug 1141614)
Backed out changeset fff492fc48ce (bug 1141614)
Backed out changeset f49e64db4a66 (bug 1141614)
Backed out changeset 63199013dac2 (bug 1141614)

CLOSED TREE
2015-06-09 13:20:24 -04:00
Nick Fitzgerald
3fa6b2d3e3 Bug 1141614 - Part 3: Trace cycle collection with AutoGlobalTimelineMarker; r=smaug 2015-06-08 12:40:07 -07:00
Andrew McCreight
3b81358e2c Bug 1163006, part 5 - Add a less COM-y getter for mWantAllTraces. r=smaug 2015-06-04 14:41:31 -07:00
Andrew McCreight
085b07bb71 Bug 1163006, part 4 - De-COM the nsICycleCollectorListener methods we only call from C++. r=smaug 2015-06-04 14:41:31 -07:00
Andrew McCreight
bb0428d2a9 Bug 1163006, part 3 - Clean up some cycle collector logger set up code. r=smaug
There's no need for the local variable.
2015-06-04 14:41:31 -07:00
Andrew McCreight
6e8afd1788 Bug 1163006, part 2 - Rename various cycle collector listener variables to logger. r=smaug 2015-06-04 14:41:31 -07:00
Andrew McCreight
cd835d02b8 Bug 1163006, part 1 - Make the cycle collector use the concrete logger class. r=smaug
This patch makes it so that while the cycle collector is running methods are called
on the concrete implementation nsCycleCollectorLogger, rather than the interface
nsICycleCollectorListener. This makes explicit the requirement that we have to be
very careful about what we call during the cycle collector, and should make it
possible for the GC rooting static analysis to understand what is happening.

The UUID of nsICycleCollectorHandler was changed to appease the UUID commit hook.
2015-06-04 14:41:31 -07:00
Nicholas Nethercote
4500bfa831 Bug 1170416 (part 3) - Remove the PLDHashTable2 typedef. r=froydnj. 2015-05-19 16:46:17 -07:00
Terrence Cole
5feedc7a8c Bug 1169791 - Strongly type GetTenuredGCThingZone; r=jonco, r=mccr8 2015-06-01 14:11:08 -07:00
Terrence Cole
e96f6bbd65 Bug 1169791 - Strongly type MergeZone; r=mccr8 2015-06-01 14:11:06 -07:00
Terrence Cole
ffabc2b2ad Bug 1169791 - Strongly type NoteJSRoot; r=mccr8 2015-05-29 12:57:23 -07:00
Nicholas Nethercote
d65ef3cdda Bug 1168007 (part 8) - Use PLDHashTable2 in nsCycleCollector. r=froydnj. 2015-05-18 21:29:58 -07:00
Terrence Cole
71589e5cf0 Bug 1167453 - Rename JSGCTraceKind and make it a C++11 enum class; r=jonco 2015-05-22 10:40:24 -07:00
Andrew McCreight
73b3692536 Bug 1164587 - Get rid of Fault() in the cycle collector. r=smaug 2015-05-15 10:33:09 -07:00
Andrew McCreight
9ba0491001 Bug 1158558, part 2 - Finish incremental GCs in progress in BeginCollection() and ShutdownCollect(). r=smaug
Various parts of the first half of BeginCollection() can start an incremental GC.
This is bad because running the GC and CC at the same time can cause the CC to end
up with pointers to dead JS objects.

To avoid this, we finish any incremental GC in progress in BeginCollection. This
is slow, but hopefully it is rare.
2015-05-15 10:33:09 -07:00
Andrew McCreight
fd5299ac04 Bug 1158558, part 1 - Expand time logging in BeginCollection. r=smaug 2015-05-15 10:33:09 -07:00
Andrew McCreight
205219ffec Bug 1163657 - Clean up setting of mFlags in CCGraphBuilder's ctor. r=smaug 2015-05-15 10:33:08 -07:00
Andrew McCreight
59cb000960 Bug 866681, part 2 - Make ContentUnbinder use DeferredFinalize. r=smaug 2015-05-13 12:48:52 -07:00
Andrew McCreight
6bff931fce Bug 866681, part 1 - Track if any slice of CC was manually triggered. r=smaug 2015-05-13 12:48:52 -07:00
Mike Hommey
4d93988786 Bug 1134923 - Remove NS_Alloc/NS_Realloc/NS_Free. r=nfroyd
They are kept around for the sake of the standalone glue, which is used
for e.g. webapprt, which doesn't have direct access to jemalloc, and thus
still needs a wrapper to go through the xpcom function list and get to
jemalloc from there.
2015-05-01 09:40:30 +09:00
Andrew McCreight
3c4ae5d83b Bug 1152505 - CCGraphBuilder::NoteChild should pass aEdgeName by reference. r=smaug 2015-04-09 13:56:00 -04:00
Andrew McCreight
8effb2197c Bug 1144649 - Make CCGraph::AddNodeToMap fallible again. r=smaug
Crashing here is apparently fairly common. This restores the old behavior, so we at least
don't crash immediately, but instead enter a slow downward spiral of leaking.

This improves on the old behavior in that we only try and fail to grow the hash table once,
rather than on every add.  khuey I think reported that the browser got very slow, because
you are going through the very slowest path of the allocator over and over.
2015-04-09 16:00:00 -04:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Andrew McCreight
4946cb492a 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
ea4c97477b Bug 1137536, part 1 - Move DeferredFinalize out of the cyclecollector namespace. r=smaug 2015-03-18 11:36:03 -07:00
Andrew McCreight
47ce8dbe67 Bug 1119482, part 4 - Move IsJSHolder into HoldDropJSObjects. r=smaug 2015-03-10 16:41:38 -07:00
Andrew McCreight
acfd3a2ff5 Bug 1119482, part 3 - Move the Hold and DropJSObjects implementations to a new HoldDropJSObjects.cpp file. r=smaug 2015-03-10 16:41:38 -07:00
Andrew McCreight
866f8d6216 Bug 1119482, part 1 - Use CycleCollectedJSRuntime::Get() in the various CC wrapper methods. r=smaug
It is a little cleaner to use this helper method if we only care about the CCJSRuntime pointer,
and it will let us move some of these methods out of this file more easily.
2015-03-10 16:41:38 -07:00
Andrew McCreight
c3eadcc50d Bug 1135773 - Initialize QI return values to null in the cycle collector. r=smaug 2015-02-25 09:44:10 -08:00
Nicholas Nethercote
1b16e29e45 Bug 1131901 (part 2) - Make CCGraphBuilder::AddNode() infallible. r=mccr8. 2015-02-02 23:58:42 -08:00
Nicholas Nethercote
3b0764a330 Bug 1131901 (part 1) - Make PL_DHashTableAdd() infallible by default, and add a fallible alternative. r=froydnj.
I kept all the existing PL_DHashTableAdd() calls fallible, in order to be
conservative, except for the ones in nsAtomTable.cpp which already were
followed immediately by an abort on failure.
2015-02-02 14:48:58 -08:00
Nicholas Nethercote
1ce96de5ae Back out changesets 2fcef6b54be7, 2be07829fefc, 66dfe37b8532, df3fcd2be8fd, 0a436bce77a6 (bug 1050035) for causing intermittent crashes and assertion failures. 2015-02-10 14:39:49 -08:00
Nicholas Nethercote
0247de46d8 Bug 1127201 (attempt 2, part 1) - Replace most NS_ABORT_IF_FALSE calls with MOZ_ASSERT. r=Waldo. 2015-02-09 14:34:50 -08:00
Andrew McCreight
e048a7df33 Back out Bug 1127201 (part 2) for various problems. 2015-02-06 15:04:32 -08:00