Commit Graph

591 Commits

Author SHA1 Message Date
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
Michael Pruett
cdea6d623f Bug 1118024 - Add explicit PL_DHashTable{Add,Lookup,Remove} functions. r=nfroyd 2015-01-05 20:26:50 -06:00
Ehsan Akhgari
ad34fcfc86 Bug 1117035 - Mark virtual overridden functions as MOZ_OVERRIDE in XPCOM; r=froydnj 2015-01-05 11:25:41 -05:00
Andrew McCreight
71e7b2fad7 Bug 1109928, part 6 - Define CCGraphBuilder::SetFirstChild() for consistency. r=smaug 2014-12-20 13:35:24 -05:00
Andrew McCreight
c6b526cde5 Bug 1109928, part 5 - Inline CCGraphBuilder::DescribeNode because it is silly. r=smaug 2014-12-20 13:35:24 -05:00
Andrew McCreight
50b1fe524b Bug 1109928, part 4 - Make CCBuilder::AddNode private by adding a new AddPurpleRoot method. r=smaug 2014-12-20 13:35:23 -05:00
Andrew McCreight
899322186e Bug 1109928, part 3 - Make CCGraphBuilder::AddWeakMapNode and ::NoteJSChild methods private. r=smaug 2014-12-20 13:35:23 -05:00
Andrew McCreight
7197764c51 Bug 1109928, part 2 - Inline some CCGraphBuilder methods now that the builder is doing the building. r=smaug
Also, make SetLastChild a private method defined in the class declaration.
2014-12-20 13:35:23 -05:00
Andrew McCreight
3c680c6249 Bug 1109928, part 1 - Move graph building inside CCGraphBuilder. r=smaug
This lets us hide a lot of the internal state of graph building from other classes.
2014-12-20 13:35:23 -05:00
Terrence Cole
8765b633f5 Bug 1105069 - Part 21: Remove AsCell in preference of GCCellPtr; r=jonco, r=mccr8 2014-12-14 08:27:52 -08:00
Terrence Cole
f2467a2fa0 Bug 1105069 - Part 17: Convert xpc_IsGrayGCThing to GCCellPtr; r=mccr8, j=jonco 2014-12-05 09:38:34 -08:00
Terrence Cole
3bb2ef08f9 Bug 1105069 - Part 15: Convert xpc_GCThingIsGrayCCThing to GCCellPtr; r=mccr8, r=jonco 2014-12-09 16:22:51 -08:00
Terrence Cole
f9209afd94 Bug 1105069 - Part 14: Convert NoteJSChild to GCCellPtr; r=mccr8, r=jonco 2014-12-05 09:38:34 -08:00
Andrew McCreight
464b3de34d Bug 1052793 - Do per-zone GC for CC_WAITING triggers. r=smaug 2014-12-13 21:17:35 -08:00
Andrew McCreight
b46210a06d Bug 1097850 - ChildFinder::NoteNativeChild() should call CanSkip(). r=smaug 2014-12-12 13:42:21 -08:00
Andrew McCreight
58504fa2a5 Bug 1110243 - CCGraphBuilder::NoteNativeChild should call CanSkipThis(). r=smaug 2014-12-12 13:42:21 -08:00
Terrence Cole
556a5d11b7 Bug 1105069 - Part 10: Convert NoteWeakMapping to GCCellPtr; r=jonco, r=mccr8 2014-12-05 09:38:32 -08:00
Nicholas Nethercote
cd88198225 Bug 1102525 (part 3) - Replace SegmentedArray with mozilla::SegmentedVector in the cycle collector. r=smaug. 2014-12-08 14:45:13 -08:00
Olli Pettay
ee9a672f0e Bug 1105089, try to have shorter ICC slices during animations, r=mccr8 2014-11-27 13:47:51 +02:00
Nicholas Nethercote
2c1375e09c Bug 1096624 - Use a SegmentedArray in nsCycleCollector::CollectWhite. r=smaug.
This patch does the following.

- Moves the logic for computing the ideal capacity for a SegmentedArray out of
  SnowWhiteKiller into its own class, SegmentedArrayCapacity.

- Replaces the nsTArray in CollectWhite(), which can be very large and is
  complicit in ~1% of OOM crashes, with a SegmentedArray.
2014-11-11 16:02:34 -08:00
Andrew McCreight
31451d53dd Bug 1093278 - Null check in nsPurpleBuffer::VisitEntries. r=smaug 2014-11-03 16:50:00 -05:00
Emanuel Hoogeveen
5b5f796189 Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-11-06 10:14:00 +01:00
Emanuel Hoogeveen
bdc15437f1 Bug 1084651 - Part 2: Clean up SliceBudget and require explicitly choosing between TimeBudget and WorkBudget. r=billm r=mccr8 2014-10-22 14:13:00 +02:00
Nicholas Nethercote
36a6f9d070 Bug 1094564 - Used SegmentedArray in SnowWhiteKiller. r=smaug.
This patch generalizes SegmentedArray a little, and then uses it instead of
nsTArray in SnowWhiteKiller. This avoids some large (sometimes 1 MiB or more)
allocations which were usually mostly unused.
2014-11-09 14:57:09 -08:00
Carsten "Tomcat" Book
df1edffd22 Backed out changeset ebdebc9251be (bug 1084651) 2014-11-07 15:30:49 +01:00
Carsten "Tomcat" Book
e88af6d034 Backed out changeset 77959236fb15 (bug 1084651) 2014-11-07 15:30:16 +01:00
Emanuel Hoogeveen
155d7b3ae3 Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-11-06 10:14:00 +01:00
Emanuel Hoogeveen
0b5aa87533 Bug 1084651 - Part 2: Clean up SliceBudget and require explicitly choosing between TimeBudget and WorkBudget. r=wmccloskey r=mccr8 2014-10-22 14:13:00 +02:00
Carsten "Tomcat" Book
9f99f54951 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
03a9c3f2b0 Bug 1084651 - Part 5: Simplify Cycle Collector logic now that SliceBudget makes more sense. r=mccr8 2014-10-21 11:54:00 +02:00
Emanuel Hoogeveen
f323ca2f54 Bug 1084651 - Part 2: Clean up SliceBudget and require explicitly choosing between TimeBudget and WorkBudget. r=wmccloskey r=mccr8 2014-10-22 14:13:00 +02:00
Andrew McCreight
5801cbcb0f Bug 1087799, part 3 - Do not include any JS things in the list of white nodes. r=smaug
Root() does not actually root JS things, so if some other class's Unlink() method ends
up calling the GC, whiteNodes will end up containing dead pointers. (This is safe right
now because the Unlink and Unroot methods do not do anything to JS things.) It is less
error prone to simply never store those pointers.

Also, add some asserts to enforce that we never call any of the white-object methods
for JS things.
2014-10-24 15:06:56 -07:00
Andrew McCreight
f476c6b76f Bug 1087799, part 2 - Rename count to numWhiteNodes in nsCycleCollector::CollectWhite(). r=smaug 2014-10-24 15:06:56 -07:00
Andrew McCreight
de6e95b132 Bug 1087799, part 1 - Loosen the invariant in nsCycleCollector::FinishAnyCurrentCollection(). r=smaug
If an Unlink() method ends up running JS, it can cause a GC, which will make us reenter the CC,
which will not do anything because we're already in a CC. Therefore, FinishAnyCurrentCollection()
won't finish the CC. This is safe because the CC only touches things it actually holds alive via
the Root() method.
2014-10-24 15:06:55 -07:00
Andrew McCreight
d869fa7eaa Bug 727965 - Trigger CC_WAITING GCs based on number of freed JS objects and zones. r=smaug 2014-10-20 10:07:52 -07:00
Nicholas Nethercote
c9cbbdc34d Bug 1057912 - Privatize most of PLDHashTable's fields. r=roc. 2014-08-25 16:56:33 -07:00