This should fix browser_startup_content_mainthreadio.js because it's not
getting the widget-first-paint notification.
MANUAL PUSH: Orange fix CLOSED TREE
Issue was `getContentProcessesOomScore` was attempting to read other process's oom scores.
This patch:
* Adjusts `getContentProcessesOomScore` to read the oom score through the test privileged `uiAutomation`
* Opens tests in `GeckoViewTest` gated by isolated process
* Runs ktlint on `GeckoViewTest`
Differential Revision: https://phabricator.services.mozilla.com/D246355
In a follow-up I want to merge nsChildView.mm into nsCocoaWindow.mm, but
I thought I'd send this for feedback.
The most relevant changes:
* Move members from nsChildView to nsCocoaWindow.
* Manually position the ChildView* when custom titlebar is changed.
* Deal with attaching directly to top level widget
(mAttachedWidgetListener) like other platforms do.
* On methods that are implemented in both nsChildView and
nsCocoaWindow, look into which implementation we need (if one
forwards to the other, pick the non-trivial one).
* Some fix ups for code that lived in nsChildView that now needs to
account for a client offset if there's a titlebar.
Differential Revision: https://phabricator.services.mozilla.com/D245604
RemoteWorkerService::InitializeOnTargetThread could race with its shutdown
So we can not use sRemoteWorkerService for thread correctness checking in RemoteWorkerDebuggerManagerChild creation during the initialization.
This patch remove the assertions in the RemoteWorkerDebuggerManagerChild constructor and also moving the RemoteWorkerDebuggerManagerChild creation into RemoteWorkerService::InitializeOnTargetThread. RemoteWorkerService::InitializeOnTargetThread provides the thread correctness checking by using its mThread.
Differential Revision: https://phabricator.services.mozilla.com/D247043
Previously if we opened about:preferences for the first time after
disabling studies or telemetry, the "Firefox Labs" entry would appear
briefly and disappear. Now we don't show the element initially if we
would have to hide it soon after because studies or telemetry are
disabled.
Differential Revision: https://phabricator.services.mozilla.com/D246999
Register allocation is usually the slowest part of the Ion compiler backend.
This patch adds the Simple Allocator, a register allocator that results in worse
JIT code but is a lot faster than Backtracking. It's often faster than codegen
and/or GVN.
This allocator lets us experiment with different compilation strategies in the future
and it provides a useful baseline for measuring and optimizing the performance of
the backtracking allocator. It also helps document our LIR => Register Allocator
interface.
Differential Revision: https://phabricator.services.mozilla.com/D246450
This lets us get the slot-and-width data out as `uint32_t` and we can create a
`SlotAndWidth` and `LStackSlot` from that later.
The simple allocator will use that to represent stack slots so that it doesn't
need to compute the width from the type each time it works with stack slots.
Differential Revision: https://phabricator.services.mozilla.com/D246449
The simple allocator wants to do the same thing.
Longer-term maybe this should be handled during lowering so that we don't need to
rewrite the `LUse` here.
Differential Revision: https://phabricator.services.mozilla.com/D246448
This is used to mark a subset of `liveRegs` as 'clobbered' for some debug checks.
Calls always have an empty `liveRegs` set, so check in the verifier that `clobberedRegs`
is empty for calls too.
Differential Revision: https://phabricator.services.mozilla.com/D246447
This fixes a regression from bug 1938317 part 3 that I noticed while reading the code.
We'd incorrectly mark an instruction's output register as a live-register and
save/restore it while we didn't before that change.
We can't easily check for this in the regalloc verifier because the same register
could also be added to the safepoint's live-regs for a different vreg that was live
at the start of the instruction.
Differential Revision: https://phabricator.services.mozilla.com/D246446
The backtracking allocator also adds registers for at-start uses to safepoints,
so change the verifier to check these uses too.
Also remove the early return for `THIS_FRAME_ARGSLOT` allocations in `checkSafepointAllocation`.
It's not clear why that's there so it's safer to check these allocations too.
Differential Revision: https://phabricator.services.mozilla.com/D246445
`StackSlotAllocator` already has `normalSlots` and `doubleSlots` vectors so we just
need to add a `quadSlots` vector and a `freeSlot` method to support returning slots to
the slot allocator.
This is nice for the simple register allocator because it then doesn't need to track
available stack slots itself.
Differential Revision: https://phabricator.services.mozilla.com/D246444
The boilerplate for this (including skipping `BogusTemp` definitions) is a bit tedious
so add an iterator for this.
The term 'definition' is used for both outputs and temps so use `OutputIter` for outputs
to be more specific.
Differential Revision: https://phabricator.services.mozilla.com/D246442
This is more efficient too because lowering records how many entries there are
so we can now pre-allocate these vectors without having to reallocate.
Minor fix: in `findFirstNonCallSafepoint` the assertion was using `getSafepoint`
instead of `getNonCallSafepoint`.
Differential Revision: https://phabricator.services.mozilla.com/D246439
`RegisterAllocator` is the base class for all register allocators. The backtracking
allocator needs this data but my simple allocator doesn't.
Differential Revision: https://phabricator.services.mozilla.com/D246438
I think this is intermittent if the second request (with RCWN) happens to be
opened before the first one. In this change, we only open the second request
in the onStartRequest of the first one, thus hopefully eliminating the race.
Differential Revision: https://phabricator.services.mozilla.com/D246743
Currently wasm lazy tiering is enabled by default only for content that uses
the wasm-GC feature set. This patch enables lazy tiering for all wasm content.
Lazy tiering is disallowed if the "test serialization" pref is enabled, or if
no helper threads are available.
As a ridealong fix, a potential race in CanFlushExecutionContextForAllThreads
is fixed -- applies to 32- and 64-bit ARM on Linux and Android only.
There are also some fixes for jit-test tests:
* a new testing function, wasmLazyTieringEnabled, which indicates whether
compilation will be done using lazy tiering.
* wasm/binary-to-text.js, wasm/gc/speculative-inlining.js,
wasm/lazy-tiering-codegen.js: consistently use wasmLazyTieringEnabled
in the skip-if clauses, instead of ad-hoc other logic.
Differential Revision: https://phabricator.services.mozilla.com/D244195