This should help us catch loads of JSActors which may be necessary for toplevel
document loads, but which need not be loaded within a remote subframe.
Differential Revision: https://phabricator.services.mozilla.com/D85648
I noticed that the `objdir:build` entry in `build/virtualenv_packages.txt` entry was apparently unused. This originates from bug 841713, seven years ago, when the `objdir` handling was introduced. Today, this doesn't appear to be serving a purpose. There is no Python library in my `$objdir/build` directory; nor can I see anything in `build/moz.build` or any related files suggesting one could ever appear. I can only assume this feature has outlived its usefulness, so delete it and the relevant in-tree support.
This necessitates slightly changing the signature and implementation of the `activate_pipenv()` method; also update all callers.
Differential Revision: https://phabricator.services.mozilla.com/D85635
I noticed that the `objdir:build` entry in `build/virtualenv_packages.txt` entry was apparently unused. This originates from bug 841713, seven years ago, when the `objdir` handling was introduced. Today, this doesn't appear to be serving a purpose. There is no Python library in my `$objdir/build` directory; nor can I see anything in `build/moz.build` or any related files suggesting one could ever appear. I can only assume this feature has outlived its usefulness, so delete it and the relevant in-tree support.
This necessitates slightly changing the signature and implementation of the `activate_pipenv()` method; also update all callers.
Differential Revision: https://phabricator.services.mozilla.com/D85635
A lot of tests assume that the screen will be the last thing enumerated.
It is also the "scariest" option, so having it last makes sense.
Differential Revision: https://phabricator.services.mozilla.com/D84593
Now that we share the list code between GTK and Mac, there's no reason
for this. This also avoids work when getting the default printer name.
Differential Revision: https://phabricator.services.mozilla.com/D86345
Substitute and eliminate MaybeStopGamepadMonitoring(). The logic to do this
is so dependent on GamepadPlatformService that it should probably just be a
member.
Differential Revision: https://phabricator.services.mozilla.com/D86267
The starting/stopping of gamepad monitoring is probably a decision that
should be made at the level of the GamepadPlatformService, not in the IPC
actor. This is step 1, later I will expand some of these functions because
it makes the code easier to understand.
Differential Revision: https://phabricator.services.mozilla.com/D86266
Rather than allowing test code to replace HostResolveImportedModule directly, this adds a test function to register a module and specifier such that attempting to import that specifier later finds the given module (which was what the hook was mostly used to acheive).
Mostly this is test code updates. I deleted test code for bugs which were only caused by the existence of this API in the first place.
Differential Revision: https://phabricator.services.mozilla.com/D85560
Depends on D84973
This was highlighted by browser_grids_grid-list-on-iframe-reloaded.js which fails without this fix.
Differential Revision: https://phabricator.services.mozilla.com/D84974
Depends on D85599
The WalkerActor is currently responsible for watching navigations and exposes them to the client.
However, this is communicated to the client differently depending on what kind of frame navigates.
If the top frame of the target navigates, this will be exposed via the watchRootNode API (onDestroyed/onAvailable callbacks will be triggered)
If an inner frame navigates, mutations will be emitted: "frameLoad"/"documentUnload" + a fake "childList" mutation.
On the client side, we have to handle both very similarly which leads to some duplication.
Also "frameLoad"/"documentUnload" are one of the last "immediateMutations" which usually means they should not have been mutations in the first place.
The goal here is to use the watchRootNode API for all frames.
Differential Revision: https://phabricator.services.mozilla.com/D84973
Depends on D85598
This test relies on mutations which are no longer emitted for most navigations and which will no longer be emitted at all with the next patches.
It has been disabled for 9 months and should be removed.
Differential Revision: https://phabricator.services.mozilla.com/D85599
Depends on D85597
newRoot mutations are no longer emitted by any server we support, we can remove the corresponding client code.
Differential Revision: https://phabricator.services.mozilla.com/D85598
_ref is renamed to _getOrCreateNodeActor to better reflect the purpose of the method.
_refMap is renamed to _nodeActorsMap
The test helper inspector-helpers was also directly querying _refMap.
This has been replaced by a call to the public API getNode.
Differential Revision: https://phabricator.services.mozilla.com/D84972
Callers to `GetBuiltinPrototype()` rely on inlining the function itself plus
optimising the object access, so that the property value is directly seen as a
constant in the compiler. By changing `GetBuiltinPrototype()` and
`GetBuiltinConstructor()` to be directly translated into a JSOp, we can avoid
heavily relying on the compiler to optimise these two functions.
The new opcode replaces the existing JSOp::FunctionProto opcode. It doesn't
use JSProtoKey directly in order to help jsparagus (bug 1622530), but instead
uses its own set of mapping from enum values to built-in prototypes and
constructors.
This change also resolves bug 1377264.
Differential Revision: https://phabricator.services.mozilla.com/D84991
Inling `ObjectHasPrototype()` using the `GuardProto` CacheIR op for the normal
case when the prototype chain wasn't modified.
Also change `intrinsic_ObjectHasPrototype()` to expect that both objects are
`NativeObject`, because then we don't need to handle proxies in CacheIR.
Drive-by change:
- Use `staticPrototype()` in ObjectOperations-inl.h instead of effectively inlining it.
Differential Revision: https://phabricator.services.mozilla.com/D84984
This is part two to support comparing strictly different types in Warp.
The operation doesn't have any result, so when folding it, `MNop` is used to
optimise it away when the value tags are already different at compile time.
Differential Revision: https://phabricator.services.mozilla.com/D84980
Swapping `bi`'s operands should depend on `bi` itself being commutative.
Drive-by change: Use `std::swap` to swap the operands.
Differential Revision: https://phabricator.services.mozilla.com/D84977
LoadValueTag is used when comparing strictly different types. This happens in
the string built-ins when the this-value is a primitive string and it is
compared against null or undefined.
Value tags are represented as MIRType::Int32 and folding is supported to be
able to optimise away the checks after inlining.
Differential Revision: https://phabricator.services.mozilla.com/D84976
This assert was intended to assure that off-thread parse realm sets the same
special prototype flags off-thread as on-thread. In practice though, the
`setImmutablePrototype` testing function allows us to set the flag on a
common prototype which confuses the assert.
Differential Revision: https://phabricator.services.mozilla.com/D86243
This improves performance a lot when a long string is atomized more than once. This
is happening on Reddit (strings with length 1897).
The cache is also used to de-duplicate strings during nursery GC before it's purged.
This handles some cases the existing string deduplication doesn't handle and if a
string is in the StringToAtomCache it should be faster.
Differential Revision: https://phabricator.services.mozilla.com/D86171