The fallback is mainly for Linux where the lack of libnotify can cause error, in which case repeating to try native backend makes no sense. That does not apply to Windows and macOS.
Differential Revision: https://phabricator.services.mozilla.com/D200809
FactoryOp::mContentHandle was only needed to get a ContentParent to eventually
kill invalid child processes. This is now ensured directly by IPC_FAIL, so
mContentHandle can be safely replaced with mContentParentId which is still
needed for creation of Database objects (which need it for implementation of
Database::IsOwnedByProcess).
Differential Revision: https://phabricator.services.mozilla.com/D189718
The offset* APIs use the primary frame (the table wrapper frame) to
choose an offset parent, so if we stop at the table frame we skip the
offset between the wrapper and the table boxes.
Differential Revision: https://phabricator.services.mozilla.com/D200948
We currently do the rather strange process of building stack map info
in a vector, then creating a StackMap, then copying the information over.
This is particularly strange now that we store multiple kinds of entries
in our stack maps. We always know the size of the stack map anyway, so
this patch removes the vector and builds the information in the stack
map directly.
Depends on D196637
Differential Revision: https://phabricator.services.mozilla.com/D196798
Reads and writes from arrays were computing the addresses of array elements in MIR. Not only is this somewhat inefficient, but the Mul and Add MIR nodes require an input of type Int32, while our data pointer loads now produce MIRType::WasmArrayData so that we can update safepoints accordingly. This new MIR type lowers to LDefinition::SLOTS, just like MIRType::Slots and MIRType::Elements.
Array reads and writes have therefore been updated to use BaseIndex-style addressing instead of Address-style.
Depends on D196636
Differential Revision: https://phabricator.services.mozilla.com/D196637
Implements JIT allocation of wasm GC arrays with inline storage. This is by far the most common case. The instance call path is still used in the following cases:
- First alloc at each AllocSite
- Long-lived AllocSites (pre-tenured)
- Large arrays which need out-of-line (malloced) storage
- No more room in the nursery
The MacroAssembler path mimics the logic of the instance calls. `MacroAssembler::wasmBumpPointerAllocateDynamic` has also been added to facilitate a dynamically-sized nursery allocation.
Depends on D196634
Differential Revision: https://phabricator.services.mozilla.com/D196635
Like structs, wasm GC arrays can now have a small amount of data stored inline. Arrays can now be allocated with an inline data trailer, and the array data pointer will point to that internal data. This is transparent to all outside code except the GC, which now must update this pointer on moving GCs.
In addition, this now requires us to track array data pointers in stack maps, so that when inline arrays move, we can rewrite any data pointers that are live on the stack. StackMaps now store two bits per word, and the APIs now use an enum to distinguish the kind of data being tracked. Array data is now allocated with a one-word data header that indicates whether the array data is inline or out-of-line, allowing us to find the WasmArrayObject from an data pointer and look up the new data pointer.
This only implements the internal storage and does not yet allocate arrays via JIT.
Depends on D199030
Differential Revision: https://phabricator.services.mozilla.com/D196634
Zero-length arrays are disallowed by the C++ spec. The TrailingArray mixin
is a UB-free way of achieving the same data layout.
Depends on D196633
Differential Revision: https://phabricator.services.mozilla.com/D199030
On arm64, breakpoints occur before the instruction pointer moves to the next instruction. Stepping from this point just triggers the breakpoint again. However, if a breakpoint occurs with code 0xf000, lldb will manually advance past the breakpoint so stepping works as expected.
Differential Revision: https://phabricator.services.mozilla.com/D196633
Before bug 1874376, XPCConvert::NativeData2JS had been allowing malformed UTF-8
sequence.
Bug 1874376 made it not accept any malformed UTF-8 string, and it caused
compatibility issue for the case where malformed input had been passed into.
Differential Revision: https://phabricator.services.mozilla.com/D200897
It looks like we were previously using the x64 nodejs toolchain for
raptor-browsertime tests when node is being setup on apple silicon
machines. This patch adds logic to ensure the correct aarch64 node
toolchain is used instead.
This should only affect local runs.
Differential Revision: https://phabricator.services.mozilla.com/D200098
We have reports of the same flickering that we were seeing on
Xclipse920 GPUs on Xclipse940. For now, let's just enable the workaround
on all Xclipse GPUs.
Differential Revision: https://phabricator.services.mozilla.com/D200944
This hidden preference controls the displaylist unload timeout when tabs
are backgrounded. This is mainly for use by Puppeteer / WebDriver clients
to avoid long timeouts waiting for visibilitystate to change in
backgrounded tabs.
Differential Revision: https://phabricator.services.mozilla.com/D200855