Until now we always used an Ion IC if there was no Baseline IC stub to transpile.
This isn't great for Baseline ICs that were never hit because we could get stuck
in Ion ICs instead of using the transpiler.
With this patch we bail out and if that happens more than 10 times we invalidate
the Warp code and then warm up and try a second time.
Depends on D81064
Differential Revision: https://phabricator.services.mozilla.com/D81065
This fixes another test failure because we were not getting back into Warp code
quickly enough after a cold-IC bailout. With --ion-eager we want to compile without
waiting and that should probably also apply to recompiles.
Depends on D81063
Differential Revision: https://phabricator.services.mozilla.com/D81064
The clones appear to be so that access for the tree view in preferences is quick. However, they don't need to clone the entire engine object - they just need three fields.
Additionally, this fixes reloading icons which was attempting to use 'uri' but that isn't defined, and so icons would fail to load if preferences was opened when a search engine is added.
Differential Revision: https://phabricator.services.mozilla.com/D80496
This patch additionally makes the search cache responsible for listening to notifications rather than being directly told by the search service to write the cache.
It also makes writes after init/reinit/maybeReloadEngines into delayed writes as they don't need to be immediate - the code already ensures we write any pending cache before reading, and that we write it before shutdown. Therefore, it doesn't matter if we wait a second or so.
Differential Revision: https://phabricator.services.mozilla.com/D80472
Right now setup_perftest_test_date adds --test-date yesterday to all perftest
runs. we want that only for the ones doing batches
Differential Revision: https://phabricator.services.mozilla.com/D81562
Right now, now matter which SafeBrowsing protocol we use (V2 or V4), we
always use variable-length prefix set to store prefixes. Since
nsUrlClassifierPrefixSet is a member of VariableLengthPrefixSet and it
is never used alone, we can remove nsIMemoryReporter from it to prevent
calculating the same memory report twice.
Differential Revision: https://phabricator.services.mozilla.com/D81171
The first try-catch in the test now terminates control flow after the previous patch
and we then ilooped because inIon() never returned true in the loops after that
(these loops are only reachable through the catch-block).
The patch splits the test in a few different functions to fix this.
Depends on D81029
Differential Revision: https://phabricator.services.mozilla.com/D81030
The analysis marked code after a try-catch as always-reachable to simplify MIR
building. Now that we compute reachability of LoopHeads, there's not a lot we gain
from that complexity anymore.
We can then also remove the MGotoWithFake code and the JSOp::Try bytecode operand.
Depends on D80876
Differential Revision: https://phabricator.services.mozilla.com/D81029
Make BytecodeAnalysis determine whether code is reachable only through
catch/finally blocks.
The abort in IonBuilder can then be turned into an assertion. This helps
WarpBuilder because we don't want any non-OOM aborts during MIR building.
Differential Revision: https://phabricator.services.mozilla.com/D80876
We now crash instead of silently using an offset of 0 (meaning start of the
IonScript's JIT code) for the OSR entry point if the MOsrEntry is missing
for some reason.
Differential Revision: https://phabricator.services.mozilla.com/D80874