1. `GeckoProcessManager.ConnectionManager.onStartComplete` is called later than
it ideally should be; it would be better to do this as soon as binding is
complete, rather than as soon as `start` is complete. To accomplish this:
* We rename `onStartComplete` to `onBindComplete` and call it as soon as we
have successfully bound.
* We call `IChildProcess.getPid` as soon as we're bound and immediately clean
up if that fails.
* This implies that `getPid` should always have a pid and should not need to
call into `IChildProcess` during the remaining lifetime of the connection.
This allows us to eliminate exception throwing from `getPid`, and thus we may
also remove `getPidFallible`.
* This also means that we no longer need to explicitly call `getPid` in
`GeckoProcessManager.preload`.
2. We also use `XPCOMEventTarget.runOnLauncherThread` so that we do not need to
bounce through the launcher thread's event queue unnecessarily.
3. I noticed that we do not unbind the connection if the start fails but we
are not retrying. We should be unbinding regardless of whether we are going
to retry.
Differential Revision: https://phabricator.services.mozilla.com/D74500
Stack normalization is uber-slow on emulator because it relies on
regexes that are compiled to native instructions which are then
emulated. That makes stack normalization very slow too, and as it's
very hot some tests will time out nearly always.
This patch inserts a simple cache for previously matched strings in
stack normalization to avoid the regex engine altogether. This speeds
up normalization and hence stack matching greatly (I observed a factor
of four speedup per test iteration on an arm-sim noopt debug build for
ion-error-ool.js).
I also attempted some other fixes (filtering on simple strings,
avoiding regex.replace, etc) but caching is by far the most effective
fix, and with caching in place the other fixes still don't really move
the needle.
Depends on D74220
Differential Revision: https://phabricator.services.mozilla.com/D74607
Now that branchValueIsNurseryCell is as efficient as branchValueIsNurseryObject
we no longer need branchValueIsNurseryObject.
Depends on D74649
Differential Revision: https://phabricator.services.mozilla.com/D74650
It's more efficient now to check for all GC things with a single branch instead of
checking for object/string/BigInt separately. This generates more compact code with
fewer branches and is also more maintainable.
Depends on D74648
Differential Revision: https://phabricator.services.mozilla.com/D74649
If a label contains a dynamic string that's too long (512 characters or more), instead of just replacing it with "(too long)", we now cut it down to the maximum size, with an ellipsis at the end.
Added test for that in gtest. Also added nearby test for empty strings.
Differential Revision: https://phabricator.services.mozilla.com/D74378
On some pages, primitives other than rectangles may have their
clip rect affected by the display port, which was causing incorrect
invalidations and extra rasterization work.
Remove clip_by_tile check, and clamp clip rect to tile boundaries
for all primitive types. Also switch to a more efficient min/max
representation of the clip rect for primitive dependencies.
Differential Revision: https://phabricator.services.mozilla.com/D74582
This patch enables perfherder data validation with jsonschema and also adds some extra tests for the Perfherder layer.
Differential Revision: https://phabricator.services.mozilla.com/D74877
ubsan's generated code trips an optimization corner case in clang 10. This is a short-term workaround. In the best case, llvm.org/pr45835 will land a fix soon, and we can merge that for our clang-10 update and not even land this patch. However, in case we're living in anything other than the best case world, I don't want to block on that happening.
Differential Revision: https://phabricator.services.mozilla.com/D74727
In some NT-specific code, a list of "items()" was being updated. In python 3, to modify the result
of "items()", you have to gain ownership first by explicitly converting it into a list().
Also resolves some flaky failures that were seen locally by marking test_presets.py as sequential.
Differential Revision: https://phabricator.services.mozilla.com/D74793
As a first step, add geckoview_streaming for GC_MS telemetry.
This also turns on collection in release builds, something that AFAICS should have happened in bug 1489524.
Differential Revision: https://phabricator.services.mozilla.com/D74836
Changes:
While the ubuntu1804 migration work was taking place, `pulseaudio` related pieces of code were sprinkled across a wide variety of modules.
Now that things have settled down, remove and streamline `pulseaudio` initialization so that there are less places for this to go wrong.
Differential Revision: https://phabricator.services.mozilla.com/D74809
The test was failing on ccov machines because it was
timing out. The interesting part is that in the logs
we could see that a huge error was logged, because
we were hitting the IGNORED REDUX ACTION middleware,
which was about a SET_TERMINAL_EAGER_RESULT action
being blocked.
I think that logging this object was taking so much
time that it made the test timeout on slow machines.
So here we're simply waiting for the eager evaluation
result to be displayed, so we know that the action won't
be ignored.
Differential Revision: https://phabricator.services.mozilla.com/D74879