It seems like this is slow for now until we implement a better way than WPF-gpu-raster
for stroking paths. Just hide this behind a pref so we can at least test it but not
impact performance as badly.
Differential Revision: https://phabricator.services.mozilla.com/D163248
TIL we had preferences dialogs that weren't subdialogs!
`contain: size` obviously doesn't work on those, and since they're not
subdialogs they don't have the "make them scroll if too tall" code,
causing this.
Converting this one is trivial tho, so do that.
Differential Revision: https://phabricator.services.mozilla.com/D163250
Object and Function prototype initialization is stateful, and mutate the global
as it is initializing the content of the Global. Attempts at making this process
transactional was not successful.
Thus, `JSProto_Object` and `JSProto_Function` are now initialized as part of the
Global creation.
Failures to initialize the global might lead to have a Realm with a partially
initialized global. Such realm appears to have a valid global using
`hasLiveGlobal()`. When catching failures, such global might still be used
despite being partially initialized. A new field `initializingGlobal_` is added
to `Realm` to track whether the global is live or not. Failures to comply with
this requirement would cause the garbage collector to reclaim the Realm and
global in case of failure. This should be avoided during the initialization as
the global is rooted by the `GlobalObject::new_` function.
Differential Revision: https://phabricator.services.mozilla.com/D163016
I was already staring at register allocation in this function, so it seemed like a reasonable time to fix this.
Depends on D163154
Differential Revision: https://phabricator.services.mozilla.com/D163155
An xpcshell test on 32-bit windows ran out of registers because we folded a shapeguard in a CloseIter IC and the tag register of the input operand wasn't marked as available.
Differential Revision: https://phabricator.services.mozilla.com/D163154
In the cross-compartment wrapper case, we can end up with shapes from a different compartment. The easiest fix to do is just not fold.
Differential Revision: https://phabricator.services.mozilla.com/D163027
We now need to check if a value is rounded to the RFP
value (16.67ms) or the baseline RTP value (default 1 ms).
To do this we pass both precisions in extraData.
We also need to communicate the expected behavior of rounding,
that is if RFP should apply for this test set. Typically we
would know this based on the expectedValues which are supplied
to the testFunction (as in the navigator test) - but here we
don't know the expected values ahead of time - we're testing if
timer values are properly rounded. Therefore we need to add
a boolean (in each test) that indicates if RFP is expected to
apply for this test.
Differential Revision: https://phabricator.services.mozilla.com/D156515
This commit moves the test description from the test file
to the shared infrastructure.
It also adds two parameters to the set of shared tests:
extraData and extraPrefs. extraData is data passed through
to the validation function (mostly) unchanged and unused.
extraPrefs are prefs that applied (and removed) before executing
the test.
Finally, increase the timeout because this is a big test and
it occassionally runs slight over 45 seconds.
Differential Revision: https://phabricator.services.mozilla.com/D156510
Rename browser_navigator_header.sjs to file_navigator_header.sjs
This way all support files for the test begin with file_ and only
test files begin with browser_
Differential Revision: https://phabricator.services.mozilla.com/D156509
The System Principal boolean was only used for RFP purposes.
We replace it with an RTPCallerType and populate it not in
the Performance ctor but rather in the CreateFor methods
that will populate it based on the context of their
construction.
Depends on D151305
Differential Revision: https://phabricator.services.mozilla.com/D151306
This centralizes the logic in one place.
In order to do this, we will need to check the principal
off-main thread. (Well, we need to know if it's System
Principal.) Worker and Worklet need special ways to do
this, so create a virtual method for it and let them
override it. This is analogous to the ShouldRFP method
on GlobalObject.
Differential Revision: https://phabricator.services.mozilla.com/D157564
Along the way we remove the calls to JS::SetTimeResolutionUsec.
This function is used to set values that are only used when
we don't have a ReuceTimerPrecision callback, which we always do
(as confirmed by coverage.) This in turns lets us remove some
other code.
Depends on D151298
Differential Revision: https://phabricator.services.mozilla.com/D151299