This removes intr support and updates some stale docs as well.
It's not immediately clear what code in MessageChannel can be removed,
though I expect some things could be simplified (there's just not much
alluding to intr/rpc/urgent).
Differential Revision: https://phabricator.services.mozilla.com/D204813
Some code to exercise this in the browser console:
```
{
const printNames = async (appList) => {
let buffer = "Start:\n";
for (let index = 0; index < appList4.length; index++) {
let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp);
buffer += app.executable.leafName;
buffer += "\n";
}
buffer += "\n";
for (let index = 0; index < appList4.length; index++) {
let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp);
let prettyName = await app.prettyNameAsync();
buffer += prettyName;
buffer += "\n";
}
buffer += "\n";
for (let index = 0; index < appList4.length; index++) {
let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp);
buffer += app.executable.displayName;
buffer += "\n";
}
buffer += "\n";
for (let index = 0; index < appList4.length; index++) {
let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp);
if (AppConstants.platform == "win") {
let file = app.executable;
if (file instanceof Ci.nsILocalFileWin) {
try {
buffer += file.getVersionInfoField("FileDescription");
} catch (e) {
}
}
}
buffer += "\n";
}
buffer += "\nEnd\n";
console.log(buffer);
};
const lazy4 = {};
XPCOMUtils.defineLazyServiceGetters(lazy4, {
gMIMEService: ["@mozilla.org/mime;1", "nsIMIMEService"],
});
let mimeInfo4 = lazy4.gMIMEService.getFromTypeAndExtension("text/html", "html");
if (mimeInfo4.hasDefaultHandler) {
console.log(`HasDefaultHandler = true`);
console.log(`Description = ${mimeInfo4.defaultDescription}`);
} else {
console.log(`HasDefaultHandler = false`);
}
let appList4 = mimeInfo4.possibleLocalHandlers || [];
console.log("appList4 = ");
console.log(JSON.stringify(appList4));
printNames(appList4);
}
```
That produces output that can be seen in a pretty form here:
https://docs.google.com/spreadsheets/d/1OvtrZgMlPMJO4Wgu6wwAYvm89orj9HdS_tsDxYn7yrA/edit#gid=0
This does not fix-up things so that all calls to getName() on the LocalHandlerApp are switched to prettyNameAsync. That work is tracked here: https://bugzilla.mozilla.org/show_bug.cgi?id=1884267
Differential Revision: https://phabricator.services.mozilla.com/D203876
We use a second list so that blocks to be freed go for two nursery collections
before being freed, unless we're evicting the whole nursery.
I had to suffle things around at the start of GC so that we always start a
background free for the blocks queued by purgeRuntime().
Differential Revision: https://phabricator.services.mozilla.com/D196452
This filters CycleCollectedRuntime::mNurseryObjects so that only objects that
have died are finalized, and objects promoted to the second nursery generation
remain. Also a post barrier is added when updating a wrapper cache object.
I'll ask Andrew for review on this too when it gets closer to landing.
Differential Revision: https://phabricator.services.mozilla.com/D196451
The atom cache is cleared after minor GC. Arguably we should sweep it instead
to leave strings that were promoted to the second nursery generation. I don't
know how important this is.
Differential Revision: https://phabricator.services.mozilla.com/D196449
This looks at promotion to the second nursery generation when deciding whether
to pretenure an alloc site (rather than promotion to the tenure heap as
currently).
Differential Revision: https://phabricator.services.mozilla.com/D196448
Since we won't always be tenuring things this renames use of the term
during nursery collection to 'promotion' instead.
I haven't yet renamed TenuringTracer. Naming suggestions welcome.
Differential Revision: https://phabricator.services.mozilla.com/D196441
Implement semispace nursery by promoting some cells to a second nursery
generation. Since we've swapped semispaces and are evicting from-space to
to-sapce, promotion works like normal allocation. In the same way, swapping
store buffers makes post barriers also work like normal.
While tracing store buffers, we may need to re-add the store buffer entry. The
TenuringTrace has a flag that is set if any allocation is made into the next
generation which is used to check whether this is necessary.
Whether to tenure a particular nursery cell is based on its position in the
nursery. Cells that were promoted in the last collection are tenured.
Sometimes we tenure everything and totally empty the nursery. This is decided
based on the nursery collection reason. The GC uses the EVICT_NURSERY reason
to make sure everything is tenured during major GC.
Differential Revision: https://phabricator.services.mozilla.com/D196440
This moves a bunch of nursery data fields to a new Space struct. We will add a
second one of these to support semispace collection.
Differential Revision: https://phabricator.services.mozilla.com/D196433
Store these separately because the number of chunks will be per semispace and
the capacity will be the total for both semispaces when semispace collection is
enabled.
Differential Revision: https://phabricator.services.mozilla.com/D196432
Add a GC parameter and pref for semispace nursery which is disabled by default.
Enable it for the shell rootanalysis job to get get some test coverage.
Differential Revision: https://phabricator.services.mozilla.com/D196431