For all targets, we generate good code for i32 compare followed by i32 select,
provided the compare result is only used once. "Good" in the sense that the
comparison result is not materialised into a register, but is instead
transmitted to the select instruction as a condition code.
On various targets float64 and float32 arguments are variously accepted as the
comparison and/or selection types. However, on no targets are 64-bit integers
accepted as either type.
This patch extends the machinery to create good code for the cases
compare-i32-select-i64, compare-i64-select-i32 and compare-i64-select-i64, on
x64 and arm64. All other targets are unaffected. The patch uses the existing
`LWasmCompareAndSelect` LIR node since that already has meaning "single
register compare, single register select", and we are not introducing any
double-register working here.
The methods `LIRGenerator*::canSpecializeWasmCompareAndSelect`,
`LIRGenerator*::lowerWasmCompareAndSelect` and
`CodeGenerator*::visitWasmCompareAndSelect` have been completely un-shared
(they were previously partly shared) and specialised to their specific
architectures. With the addition of the {i32,i64} x {i32,i64} cases the
remaining sharing is minimal and makes the code harder to follow.
The rest of the changes are straightforward.
tests/wasm/binop-arm64-ion-codegen.js
tests/wasm/binop-x64-ion-codegen.js
* new tests
jit/shared/Lowering-shared.cpp
* remove generic {canSpecialize,lower}WasmCompareAndSelect
jit/CodeGenerator.cpp:
* remove generic emitWasmCompareAndSelect
jit/arm64/Lowering-arm64.cpp
* extend existing {canSpecialize,lower}WasmCompareAndSelect
jit/arm64/CodeGenerator-arm64.cpp
* extend existing visitWasmCompareAndSelect
jit/x64/Lowering-x64.cpp
* private versions of {canSpecialize,lower}WasmCompareAndSelect
jit/x64/CodeGenerator-x64.cpp
* new method visitWasmCompareAndSelect (heavily modified generic)
jit/arm/Lowering-arm.cpp
* private versions of {canSpecialize,lower}WasmCompareAndSelect
jit/arm/CodeGenerator-arm.cpp
* private version of emitWasmCompareAndSelect (specialisation of generic)
jit/x86/Lowering-x86.cpp
* private versions of {canSpecialize,lower}WasmCompareAndSelect
jit/x86/CodeGenerator-x86.cpp
* private version of emitWasmCompareAndSelect (copy of generic)
jit/arm64/MacroAssembler-arm64.h
* new insn support for arm64
jit/x64/MacroAssembler-x64.h
jit/x64/MacroAssembler-x64.cpp
* new insn support for x64
Differential Revision: https://phabricator.services.mozilla.com/D133738
The keyboard shortcut was supposed to move to the next search
result, but was only working on OSX. As you can already cycle
through search results with Enter, and given that Cmd+G only (barely)
work on OSX, it's safe to remove it.
Differential Revision: https://phabricator.services.mozilla.com/D134128
This test should pass, actually, but it was failing because we don't
allow loading @import rules in a detached stylesheet because it's not
clear which document should own the load.
The sheet doesn't need to be removed for the test to be correct.
Differential Revision: https://phabricator.services.mozilla.com/D134019
This patch was r+ed before by Ted, but it never landed because I initially intended
to address Ted's review comment (about making it work on 10.11 and below), and
because it needed to be rebased around bug 1374888.
The rebase turned out to be really simple, and Ted's review comment no longer applies
because Firefox no longer runs on 10.11 and below.
Profile with fix: https://share.firefox.dev/3oYzvO6
Differential Revision: https://phabricator.services.mozilla.com/D134008
This updates profiler-get-symbols to the latest version.
The new /source/v1 entry point was implemented in
edb78205d1
Furthermore, this update also picks up a fix for macOS 12 system library symbolication.
Differential Revision: https://phabricator.services.mozilla.com/D133757
All of them are still disabled for some test failures. There are 3 patterns
failures:
1. Tests with `<input type="password">` assumes that last input character is
masked immediately.
2. Tests with synthesizing mouse button events in editable element
3. Test with DnD
The first case can be fixed with disabling echoing last input character by the
pref.
The second case can be fixed with disabling "zoom to editable element" by the
pref.
The last case cannot be fixed, therefore I disable it on Android.
Differential Revision: https://phabricator.services.mozilla.com/D133719
Also update the table of Firefox requirements. It's worth noting that I
actually upgraded to 1.57 earlier than I should have (too close to
freeze), but what is done is done.
Differential Revision: https://phabricator.services.mozilla.com/D134124
The key motivator here was the misleading aForceNoPermRequest parameter.
This came from an unreviewed change in response to a review request.
https://phabricator.services.mozilla.com/D14575?vs=44463&id=47352#inline-82282
The newer variable name described the opposite of its use, but its usage was
not negated.
The logical change to the AllowPermissionRequest flag no longer passed from
MediaDevices::GetSinkDevice() has little effect because any permission
required would be obtained from getUserMedia() or selectAudioOutput() prior to
setSinkId(). A permission request is not expected during setSinkId().
The EnumerateAudioOutputs flag removes some use of the confusing
MediaSinkEnum::Other and makes the long list of parameters slightly easier to
read.
Differential Revision: https://phabricator.services.mozilla.com/D132875
The main thread is the busiest, so it benefits the most from having its own chunked buffer. This removes one allocation when capturing a marker stack on the main thread of each process.
That buffer is allocated when the first profiler starts, and is destroyed when the last profiler stops.
Note: Further improvements are possible (e.g.: Pool of pre-allocated buffers, attempting to use a stack-based buffer, etc.), but they are more complex and will require more work in future bugs.
Differential Revision: https://phabricator.services.mozilla.com/D133725
The resulting code should be the same. The factored lambda will be called in the next patch with a different chunked buffer.
Differential Revision: https://phabricator.services.mozilla.com/D133724
Revert "Bug 1742742 - Use backdrop candidates for opaque picture detection r=gfx-reviewers,nical"
This reverts commit 6d918f342ae9dedaed4b411efe7998342f00fcf3.
The patch above can incorrectly determine a surface to be opaque
when it may not be, due to a child picture surface having a rect
that extends outside the parent estimate picture rect. The problem
is not the patch itself, but that it exposes an existing bug with
how bounding rects of child surfaces are handled.
I'm currently refactoring the visibility pass to fix how child
bounding rect propagation and inflation works. Because of this,
it's simpler to revert this change for now, and re-land once the
rest of the visibility pass work is complete.
Differential Revision: https://phabricator.services.mozilla.com/D133971