This also makes a couple of other fixes to existing comments to bring them in
line with the actual behaviour and names used.
Differential Revision: https://phabricator.services.mozilla.com/D110428
This was somewhat convoluted to get to both reliably reproduce and not timeout
after the fixes were applied. The test can't run without Fission, as it
requires a process switch to occur on the navigation to/from
http://example.com.
Without part 2 of this patch stack, this test will crash after the process
switch.
Differential Revision: https://phabricator.services.mozilla.com/D110003
This patch contains a large number of changes around the process switching
mechanism in order to avoid issues which are caused by a mismatched
understanding of the state of the process switch between processes in the
presence of nested event loops.
This includes:
1. The "InFlightProcessId" value is no longer recorded. All remaining uses
were removed in part 1, and the new mechanism tracks this information in
a better way.
2. The current BrowserParent instance is now tracked on
CanonicalBrowsingContext, meaning that logic which needs to work with this
information can now access it without depending on the current
WindowGlobalParent instance.
3. When doing a process switch, the previous host process for the
BrowsingContext is tracked until the process switch is completed, allowing
for future attempts to switch into that process to be delayed until the
previous unload event has finished running.
4. The process switch logic was refactored to simplify some of the
error-handling logic, and share more code between different cases.
Differential Revision: https://phabricator.services.mozilla.com/D110002
This is necessary as in part 2 the InFlightProcessId value will no longer be
tracked, so any remaining code which depends on it needs to be removed.
Differential Revision: https://phabricator.services.mozilla.com/D110001
If we inline a function, then range analysis may truncate an argument to the inlined function. If the callee changes, we need to recover the non-truncated argument, or else we may get the wrong result. (There's a slightly more detailed walkthrough of the bug on Bugzilla.)
We mark the arguments to inlined functions as implicitly used in `buildInlinedCall`, but we don't set UseRemoved. The difference between the two flags isn't particularly clear anyway, so this patch folds UseRemoved into ImplicitlyUsed.
Adding two reviewers because this indirectly touches range analysis, and I find all this code tricky to reason about.
***
Differential Revision: https://phabricator.services.mozilla.com/D110004
This is global state, so it can have remnants from random other state changes.
Starting with Big Sur, currentAppearance is deprecated in favor of
performAsCurrentDrawingAppearance, which really does seem like a better API for
this.
Differential Revision: https://phabricator.services.mozilla.com/D110361
This was somewhat convoluted to get to both reliably reproduce and not timeout
after the fixes were applied. The test can't run without Fission, as it
requires a process switch to occur on the navigation to/from
http://example.com.
Without part 2 of this patch stack, this test will crash after the process
switch.
Differential Revision: https://phabricator.services.mozilla.com/D110003
This patch contains a large number of changes around the process switching
mechanism in order to avoid issues which are caused by a mismatched
understanding of the state of the process switch between processes in the
presence of nested event loops.
This includes:
1. The "InFlightProcessId" value is no longer recorded. All remaining uses
were removed in part 1, and the new mechanism tracks this information in
a better way.
2. The current BrowserParent instance is now tracked on
CanonicalBrowsingContext, meaning that logic which needs to work with this
information can now access it without depending on the current
WindowGlobalParent instance.
3. When doing a process switch, the previous host process for the
BrowsingContext is tracked until the process switch is completed, allowing
for future attempts to switch into that process to be delayed until the
previous unload event has finished running.
4. The process switch logic was refactored to simplify some of the
error-handling logic, and share more code between different cases.
Differential Revision: https://phabricator.services.mozilla.com/D110002
This is necessary as in part 2 the InFlightProcessId value will no longer be
tracked, so any remaining code which depends on it needs to be removed.
Differential Revision: https://phabricator.services.mozilla.com/D110001
This causes the search bar on the Customize page to fall back to Field, which will be themed correctly. Note that if the system is in Dark mode and Firefox is in light mode, the search bar will be dark. That should be fixed by bug 1700371.
Differential Revision: https://phabricator.services.mozilla.com/D110312
This patch uses the low memory resource notification facility to detect
scenarios where physical memory is running low without polling. This is a
significant change compared to the previous behavior which measured both
available virtual memory (only on 32-bit builds) and available commit space.
Since we're not trying to avoid OOMs anymore we don't save memory reports
anymore when hitting a low-memory condition.
Differential Revision: https://phabricator.services.mozilla.com/D110354
* In `CacheIRWriter::copyStubData`, assert stub fields are aligned based on their size.
* On 32-bit platforms, add padding to `ICCacheIRStub` and `IonICStub` to ensure stub data is aligned to 8 bytes.
* On 32-bit platforms, insert a padding field in `CacheIRWriter::addStubField` if necessary.
* Fix alignment assertions in `CacheIRStubInfo` methods to include the offset.
Differential Revision: https://phabricator.services.mozilla.com/D110221
This code doesn't seem to be working correctly and was broken
accidentally before. Intentionally break it for now to avoid the
regression.
Differential Revision: https://phabricator.services.mozilla.com/D110347
Depends on D110368
Both the flag and the event are not used.
The only thing which matters from the framework perspective is to wait for panel.open to resolve.
Differential Revision: https://phabricator.services.mozilla.com/D110369
Firefox and Chrome support setting `src` with an `ObjectURL`. This is
technically a URL and should be treated as such. Firefox recently changed to
return `""` when a `MediaSource` is playing, and this is wrong, because even
though it's playing a from a "Media Provider Object", it got loaded from the
`src` attribute, so should have a non-null `currentSrc`, which should be the
blob url (`blob:origin/<an uuid>`). In this case, `currentSrc` is a string that
is opaque and doesn't allow introspection but refers to the "real" `MediaSource`
or `Blob`.
If the same `MediaSource` is loaded via the `srcObject` attribute (that Firefox
and Chrome don't support), then `currentSrc` should return `""` and `srcObject`
still has the object set to it to understand what the HTMLMediaElement is
playing. We'll implement and test this later.
Differential Revision: https://phabricator.services.mozilla.com/D110290