Commit Graph

289 Commits

Author SHA1 Message Date
Andrew McCreight
f84e7d971f Bug 1052793, part 1 - Do per-zone GC for CC_WAITING triggers. r=smaug 2016-02-18 15:21:48 -08:00
Andrea Marchesini
649eecd0f2 Bug 1247122 - Propagate the NS_ERROR_OUT_OF_MEMORY from CycleCollectedJSRuntime CTOR, r=khuey 2016-02-14 13:30:25 +00:00
Terrence Cole
662e02f6d1 Bug 1247381 - Restore a CC optimization dropped in bug 1105069 part 7; r=mccr8 2016-02-10 12:46:52 -08:00
Boris Zbarsky
f71108b9e6 Bug 1243001 part 8. Tell SpiderMonkey to put its promise jobs into the CycleCollectedJSRuntime job queue. r=peterv
This will run the SpiderMonkey promise jobs more or less the same way that we
run Promise jobs right now, including using a Web IDL callback for the actual
invocation.
2016-02-09 17:40:31 -05:00
Birunthan Mohanathas
bfee0fb40c Bug 1235261 - Part 1: Rename nsAutoTArray to AutoTArray. r=froydnj 2016-02-02 17:36:30 +02:00
Phil Ringnalda
d871b9515f Back out 7 changesets (bug 1235261) for cpptest failures in TestTArray
CLOSED TREE

Backed out changeset d66c3f19a210 (bug 1235261)
Backed out changeset 467d945426bb (bug 1235261)
Backed out changeset 32b61df13142 (bug 1235261)
Backed out changeset c50bb8ed4196 (bug 1235261)
Backed out changeset 0ff0fa6fe81f (bug 1235261)
Backed out changeset df70e89669da (bug 1235261)
Backed out changeset 064969357fc9 (bug 1235261)
2016-01-31 10:10:57 -08:00
Birunthan Mohanathas
245cd6a02f Bug 1235261 - Part 1: Rename nsAutoTArray to AutoTArray. r=froydnj 2016-01-31 17:12:12 +02:00
Nick Fitzgerald
a943e0eb38 Bug 1233831 - Part 3: Install a callback to trace nursery collections; r=mccr8
This commit makes CycleCollectedJSRuntime install a nursery collection callback
which traces nursery collections with a new `mozilla::TimelineMarker` subclass.
2016-01-19 12:48:22 -08:00
Terrence Cole
2a68224fb0 Bug 1238786 - Part 2: We no longer need to null check before using trace APIs; r=smaug 2016-01-12 13:07:54 -08:00
Terrence Cole
1ee40f664f Bug 1235923 - Part 2: Use new Root tracing APIs in Gecko; r=smaug 2015-12-30 11:31:16 -08:00
Nicholas Nethercote
7bce317411 Bug 1237169 - Remove some unused parameters in and around xpcom/base/. r=mccr8. 2016-01-05 19:32:28 -08:00
Terrence Cole
a1606acc3a Backout 7621c3ea95cb11e1c376a9f705accc0f90057c0a (bug 1235923) for build bustage on a CLOSED TREE. 2016-01-06 12:05:06 -08:00
Terrence Cole
02f0667603 Bug 1235923 - Part 2: Use new Root tracing APIs in Gecko; r=smaug 2015-12-30 11:31:16 -08:00
Terrence Cole
f66b486531 Bug 1235598 - Part 2: Use TraceEdge exclusively in Gecko; r=smaug 2015-12-30 08:52:14 -08:00
Wes Kocher
8fbb86ae50 Backed out 2 changesets (bug 1235598) for linux reftest bustage
Backed out changeset 3bcd3c276785 (bug 1235598)
Backed out changeset 80cd10a8b3d7 (bug 1235598)
2015-12-31 15:51:13 -08:00
Terrence Cole
954e7d0d3e Bug 1235598 - Part 2: Use TraceEdge exclusively in Gecko; r=smaug 2015-12-30 08:52:14 -08:00
Olli Pettay
4771877f66 Bug 1120016 - Allocate short lived JS wrappers in the Nursery, r=mccr8,terrence 2015-12-31 15:21:49 +02:00
Wes Kocher
b6dde9f28a Backed out changeset 0d55a6e4e98e (bug 1120016) for 980 b2g hazards 2015-12-30 16:34:18 -08:00
Terrence Cole
70904a5b52 Backout Bug 1235598 Part 2 because of merge bustage on a CLOSED TREE 2015-12-30 15:05:24 -08:00
Terrence Cole
f4b050383d Bug 1235598 - Part 2: Use TraceEdge exclusively in Gecko; r=smaug 2015-12-30 08:52:14 -08:00
Olli Pettay
ed8008ccd2 Bug 1120016 - Allocate short lived JS wrappers in the Nursery, r=mccr8,terrence 2015-12-30 19:16:13 +02:00
Nathan Froyd
54dfa729a9 Bug 1218454 - part 2 - don't #include nsContentUtils.h from CallbackObject.h; r=bz
We used to need nsContentUtils.h here for nsCxPusher, but since that got
moved to ScriptSettings.h, we no longer need nsContentUtils.h for
anything.
2015-10-26 12:14:47 -04:00
Nathan Froyd
975c293bae Bug 1229099 - use snprintf instead of JS_snprintf in xpcom/; r=mccr8 2015-11-30 13:54:03 -05:00
Jan de Mooij
af31342c5b Bug 1125423 part 1 - Attach WindowProxies to globals instead of using innerObject/outerObject hooks. r=bz,luke 2015-11-06 19:03:51 +01:00
Nathan Froyd
18d367b250 Bug 1217940 - remove BindingUtils.h from CycleCollectedJSRuntime.cpp; r=mccr8 2015-10-23 14:01:02 -04:00
Terrence Cole
fac1f2836b Bug 1199843 - Part 3: Strongly type JS::TraceChildren; r=jonco r=mccr8 2015-09-02 11:34:36 -07:00
Kyle Huey
9450144d48 Bug 1195755: Don't assert recursion depth sanity on Mac, because there is none. r=me 2015-08-21 19:56:56 -07:00
Kyle Huey
862b128345 Bug 1179909: Refactor stable state handling. r=smaug
This is motivated by three separate but related problems:

1. Our concept of recursion depth is broken for things that run from AfterProcessNextEvent observers (e.g. Promises). We decrement the recursionDepth counter before firing observers, so a Promise callback running at the lowest event loop depth has a recursion depth of 0 (whereas a regular nsIRunnable would be 1). This is a problem because it's impossible to distinguish a Promise running after a sync XHR's onreadystatechange handler from a top-level event (since the former runs with depth 2 - 1 = 1, and the latter runs with just 1).

2. The nsIThreadObserver mechanism that is used by a lot of code to run "after" the current event is a poor fit for anything that runs script. First, the order the observers fire in is the order they were added, not anything fixed by spec. Additionally, running script can cause the event loop to spin, which is a big source of pain here (bholley has some nasty bug caused by this).

3. We run Promises from different points in the code for workers and main thread. The latter runs from XPConnect's nsIThreadObserver callbacks, while the former runs from a hardcoded call to run Promises in the worker event loop. What workers do is particularly problematic because it means we can't get the right recursion depth no matter what we do to nsThread.

The solve this, this patch does the following:

1. Consolidate some handling of microtasks and all handling of stable state from appshell and WorkerPrivate into CycleCollectedJSRuntime.
2. Make the recursionDepth counter only available to CycleCollectedJSRuntime (and its consumers) and remove it from the nsIThreadInternal and nsIThreadObserver APIs.
3. Adjust the recursionDepth counter so that microtasks run with the recursionDepth of the task they are associated with.
4. Introduce the concept of metastable state to replace appshell's RunBeforeNextEvent. Metastable state is reached after every microtask or task is completed. This provides the semantics that bent and I want for IndexedDB, where transactions autocommit at the end of a microtask and do not "spill" from one microtask into a subsequent microtask. This differs from appshell's RunBeforeNextEvent in two ways:
a) It fires between microtasks, which was the motivation for starting this.
b) It no longer ensures that we're at the same event loop depth in the native event queue. bent decided we don't care about this.
5. Reorder stable state to happen after microtasks such as Promises, per HTML. Right now we call the regular thread observers, including appshell, before the main thread observer (XPConnect), so stable state tasks happen before microtasks.
2015-08-11 06:10:46 -07:00
Nicholas Nethercote
dd37a3b4b2 Bug 1189156 (part 4) - Don't use enumeration style for nsBaseHashtable::SizeOf{In,Ex}cludingThis(). r=erahm,jfkthame.
After this change, we have ShallowSizeOf{In,Ex}cludingThis(), which don't do
anything to measure children. (They can be combined with iteration to measure
children.)
2015-07-30 21:19:57 -07:00
Ryan VanderMeulen
b25386ccc0 Bug 1180017 - Fix up the badly-horked backout and re-land.
CLOSED TREE
2015-07-29 12:31:47 -04:00
Jim Blandy
78553d672c Bug 1180017 - Give GCCellPtr is<T> and to<T> methods, replacing isFoo and toFoo methods. Fix callers. r=terrence 2015-07-03 15:06:23 -07:00
Carsten "Tomcat" Book
3f73d055c1 Backed out changeset 465793bc6fcf (bug 1180017) for suspicion of causing bug 1188799 2015-07-29 15:27:12 +02:00
Jim Blandy
fa3e0820db Bug 1180017: Give GCCellPtr is<T> and as<T> methods, replacing isFoo and toFoo methods. Fix callers. r=terrence 2015-07-07 09:52:01 -07:00
Kyle Huey
b8b25584fa Bug 1185470: Remove 'Get' prefixes from hashtable iterator methods. r=froydnj 2015-07-20 20:21:28 +08:00
Andrew McCreight
d6c17af08a Bug 1182318 - Part 2: Remove Closure from CycleCollectedJSRuntime. r=smaug
Closure is now just a wrapper around a single boolean, so instead pass a pointer to the boolean.
2015-07-14 08:01:00 -04:00
Andrew McCreight
8765f03b30 Bug 1182318 - Part 1: Remove Closure::mCb. r=smaug
This field no longer needs to be passed in the closure thanks to the iterator.
2015-07-14 08:01:00 -04:00
Nicholas Nethercote
0e1b5a88cf Bug 1181445 (part 10) - Use nsBaseHashTable::Iterator in CycleCollectedJSRuntime. r=mccr8. 2015-07-09 16:54:59 -07:00
Jan de Mooij
987140de6f Bug 1177825 - Remove JSVAL_* constants. r=evilpie 2015-06-29 18:36:44 -07:00
Andrew McCreight
0e05df6bbc Bug 1174796 - Make sure ReleaseNow releases everything. r=smaug 2015-06-16 14:19:07 -07:00
Terrence Cole
53f433726a Bug 1173889 - Strongly type the CallbackTracer dispatch function; r=jonco, r=mccr8 2015-06-11 10:03:33 -07:00
Eric Rahm
f4655cd4b6 Bug 1171722 - Part 4: Don't warn if DebuggerOnGCRunnable::Enqueue fails during shutdown. r=mccr8 2015-06-10 21:31:35 -07:00
Terrence Cole
bed04fe17f Bug 1169086 - Use virtual dispatch to implement callback tracer; r=jonco, r=mccr8 2015-05-28 16:35:08 -07:00
Terrence Cole
397165b664 Bug 1169692 - Use virtual dispatch in WeakMapTracer instead of function pointers; r=sfink, r=mccr8 2015-06-01 13:14:11 -07:00
Ryan VanderMeulen
889a1d90cd Merge inbound to m-c. a=merge 2015-05-29 09:32:46 -04:00
Andrew McCreight
dade4af252 Bug 1155303 - Add telemetry for async DeferredFinalize max pause. r=smaug 2015-05-18 11:54:00 -04:00
Yanis Sellami
2b21934f95 Bug 967031 - Rename DumpHeapComplete to DumpHeap; r=terrence 2015-05-22 11:22:56 +02: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
Terrence Cole
3ffd505617 Bug 1164602 - Replace js::NullPtr and JS::NullPtr with nullptr_t; r=sfink 2015-05-13 14:07:34 -07:00
Boris Zbarsky
a97eec0c4d Bug 1087330. Make the data structure we use for our promise microtask queue have O(1) first element removal, not O(N). r=khuey 2015-05-01 22:33:01 -04:00
Nick Fitzgerald
1bff429b82 Bug 1158257 - Gecko should always provide SpiderMonkey with a debuggerMallocSizeOf; r=mccr8 2015-04-27 10:58:24 -07:00