Commit Graph

576 Commits

Author SHA1 Message Date
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
Nicholas Nethercote
40ab0270d5 Bug 1127201 (part 2) - Convert all NS_ABORT_IF_FALSE calls to MOZ_ASSERT. r=Waldo. 2015-02-04 20:05:36 -08:00
Nicholas Nethercote
30d8ef6f63 Bug 1050035 (part 5) - Make CCGraphBuilder::AddNode() infallible. r=mccr8. 2015-02-02 23:58:42 -08:00
Nicholas Nethercote
a3bf151ee6 Bug 1050035 (part 4) - 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
Mike Hommey
715db83e04 Bug 1126593 - Add a global fallible instance, so that using fallible works directly, everywhere. r=njn 2015-02-02 09:56:13 +09:00
Nicholas Nethercote
c38455902a Bug 1124973 (part 2) - Introduce PL_DHashTableSearch(), and replace most PL_DHashTableLookup() calls with it. r=froydnj.
It feels safer to use a function with a new name, rather than just changing the
behaviour of the existing function.

For most of these cases the PL_DHashTableLookup() result was checked with
PL_DHASH_ENTRY_IS_{FREE,BUSY} so the conversion was easy. A few of them
preceded that check with a useless null check, but the intent of these was
still easy to determine.

I'll do the trickier ones in subsequent patches.
2015-01-22 21:06:55 -08:00
Andrew McCreight
32131bc0ad Bug 1120495 - Don't assert if FinishAnyCurrentCollection reenters during CleanupPhase. r=smaug 2015-01-21 14:35:54 -08:00
Nicholas Nethercote
4604f714c6 Bug 1123151 (part 2) - Add PLDHashTable::IsInitialized(). r=froydnj.
This encapsulates most of the uses of PLDHashTable::ops.
2015-01-19 16:11:34 -08:00
Nicholas Nethercote
009293c72a Bug 1123151 (part 1) - Set PLDHashTable::ops consistently. r=froydnj.
Currently the setting of PLDHashTable::ops is very haphazard.

- PLDHashTable has no constructor, so it's not auto-nulled, so lots of places
  null it themselves.

- In the fallible PLDHashTable::Init() function, if the entry storage
  allocation fails we'll be left with a table that has |ops| set -- indicating
  it's been initialized -- but has null entry storage. I'm not certain this can
  cause problems but it feels unsafe, and some (but not all) callers of Init()
  null it on failure.

- PLDHashTable does not null |ops| in Finish(), so some (but not all) callers
  do this themselves.

This patch makes things simpler.

- It adds a constructor that zeroes |ops|.

- It modifies Init() so that it only sets |ops| once success is ensured.

- It zeroes |ops| in Finish().

- Finally, it removes all the now-unnecessary |ops| nulling done by the users
  of PLDHashTable.
2015-01-19 16:01:24 -08:00
Ehsan Akhgari
9f68a40b52 Bug 1123110 - Clarify the ownership of several cycle collector members; r=mccr8 2015-01-18 18:43:02 -05:00
Nicholas Nethercote
d746138aca Bug 1121304 (part 2, attempt 2) - Remove PLDHashTableOps::{alloc,free}Table. r=froydnj. 2015-01-14 14:35:56 -08:00
Phil Ringnalda
41e41579d9 Backed out 2 changesets (bug 1121304) for consistent b2g hangs in webgl-color-test.html?frame=1&__&preserve&premult&_____
Backed out changeset 20651ac19549 (bug 1121304)
Backed out changeset 758afec77c95 (bug 1121304)
2015-01-14 22:02:23 -08:00
Nicholas Nethercote
70f5bf6167 Bug 1121304 (part 2) - Remove PLDHashTableOps::{alloc,free}Table. r=froydnj. 2015-01-14 14:35:56 -08:00
Nicholas Nethercote
43fc26b699 Bug 1120476 (part 4) - Remove PLDHashTableOps::finalize. r=froydnj. 2015-01-13 19:02:35 -08:00
Nicholas Nethercote
eda870fe92 Bug 1120476 (part 3) - Remove PLDHashTable::data. r=froydnj. 2015-01-13 16:42:13 -08:00
Andrew McCreight
755c13f279 Backout bug 1052793 for exposing bad decommitting behavior for compartmental GCs. 2015-01-08 09:54:13 -08:00