Background: When 32-bit types are passed in registers on x86-64 (and
probably other platforms?), the function call ABI does not specify the
contents of the upper half, and the Linux kernel syscall ABI appears to
have the same behavior.
In practice, the upper half is usually zero (or maybe sign-extended from
the lower half), because 64-bit operations aren't cheaper than 32-bit,
and 32-bit operations zero-extend their outputs; therefore, this case
usually doesn't happen in the first place, and any kind of spill or
register move will zero the upper half. However, arbitrary values are
possible, and a case like this has occurred with the Firefox profiler
using `clock_gettime`. (This paragraph is applicable to x86-64 and
ARM64; other 64-bit architecutures may behave differently.)
But the Chromium seccomp-bpf compiler, when testing the value of a 32-bit
argument on a 64-bit platform, requires that the value be zero-extended
or sign-extended, and (incorrectly, as far as I can tell) considers
anything else an ABI violation.
With this patch, when that case is detected, we use the `SIGSYS` handler
to zero-extend the problematic argument and re-issue the syscall.
(It would also be possible to just ignore the upper half, and that would
be faster, but that could lead to subtle security holes if the type
used in `bpf_dsl` is incorrect and the kernel really does treat it as
64-bit.)
Differential Revision: https://phabricator.services.mozilla.com/D143964
If the timer preceision is reduced, the elapsed time between to
timers maybe shorter than the acutal result. And this fact
made this test to fail, so here we disable this feature for this
test.
Differential Revision: https://phabricator.services.mozilla.com/D139902
This patch builds off the ability to specify custom browsertime arguments on the command line in raptor to let the user run custom tests in "vanilla" browsertime. In this patch, we create a new test called `browsertime` that can be used to get a "dummy" template for a raptor test. Then, the user will be responsible for providing either a test script, or a URL to test.
To use a custom script we can pass something like `--browsertime-arg test_script=/path/to/script` or `--browsertime-arg url=https://www.sitespeed.io`. Furthermore, we can also use `test_script=pageload` to specify that we want to use the browsertime pageload script.
Differential Revision: https://phabricator.services.mozilla.com/D144168
This patch adds the ability to provide custom browsertime arguments through the command line option `--browsertime-arg`. It is used like so:
`
./mach raptor --browsertime -t browsertime --browsertime-arg test_script=/home/sparky/mozilla-source/mozilla-central/testing/raptor/browsertime/browsertime_pageload.js --browsertime-arg browsertime.url=https://www.sitespeed.io --browsertime-arg iterations=3
`
Differential Revision: https://phabricator.services.mozilla.com/D144166
`get_sdk_dirs` does not actually return multiple candidate SDK
directories. This can lead to `mach` not finding a usable SDK dir if an
unusable one conceals it.
(This state of affairs was observed after installing the latest WDK
without its matching SDK -- which is something one might do just to get
WDK-associated tools like TraceView.)
Differential Revision: https://phabricator.services.mozilla.com/D144325
Continue to set the returned stream to `nullptr` (which callers do not
check for, but is safe), but return `NS_ERROR_NOT_IMPLEMENTED` instead
of `NS_OK` --- callers do check the `nsresult`.
Returning an `NS_FAILED` result from our `GetInputStream`
implementation causes `HTMLCanvasElement.prototype.toDataURL` to
return the fallback value `"data:,"`.
Differential Revision: https://phabricator.services.mozilla.com/D144242
The test hasn't been working properly. The timing of the IPDL message PBrowser::ChildToParentMatrix is often too late for the test -- it will have already computed and compared invalid "device" coordinates. Disabling the test while we figure this out.
Differential Revision: https://phabricator.services.mozilla.com/D144318
This has no behavior change otherwise. The STRICT definition depended on
SIZE, which was defined later. That's fine in Rust, but in C++ it causes
the initialization to be dynamic because it doesn't have the definition
of SIZE yet (ugh).
This is the fix for the regression, though the following patch turns on
constexpr support in cbindgen, which would've caught this at build-time,
and guarantees that we don't have extra static constructors.
Differential Revision: https://phabricator.services.mozilla.com/D144316
There is a known issue: if we change overflow property of the
scroll-container, we may have to update the scroll-linked animations of
its descendants. This may be very tricky, so I filled Bug 1765211 for it.
Differential Revision: https://phabricator.services.mozilla.com/D143420
The Linux compositor relies on the tab area being fully opaque, all the
time. This I'm almost sure also fixes bug 1762379, since alpenglow also
has a semi-transparent toolbar-bgcolor.
Differential Revision: https://phabricator.services.mozilla.com/D144261