1.2% regression on Ares6-ML_steadyState on 24June2025
Categories
(Core :: JavaScript Engine, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr128 | --- | unaffected |
firefox-esr140 | --- | unaffected |
firefox140 | --- | unaffected |
firefox141 | --- | unaffected |
firefox142 | --- | fix-optional |
firefox143 | --- | affected |
firefox144 | --- | fixed |
People
(Reporter: mayankleoboy1, Assigned: iain, NeedInfo)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression)
Attachments
(1 file)
Most probable regressor: Bug 1953595
I dont think this is a serious regression. Filing mostly for posterity. But JS folks may have other opinions.
Comment 1•2 months ago
|
||
:nika, since you are the author of the regressor, bug 1953595, could you take a look? Also, could you set the severity field?
For more information, please visit BugBot documentation.
Comment 2•2 months ago
|
||
Set release status flags based on info from the regressing bug 1953595
Comment 3•1 month ago
|
||
This seems very unlikely to be the regressor, as the regression is on Windows, and the code changed in bug 1953595 is Android-only.
Reporter | ||
Comment 4•1 month ago
|
||
After some retriggers, looks like the regressing changeset is https://hg-edge.mozilla.org/integration/autoland/pushloghtml?fromchange=d84b6c0995f02602907ec03ee051571ffb5ebf2c&tochange=29f18fab3ab5974f6426019d37a127816056c4e1
which points to bug 1973117
Comment 5•1 month ago
|
||
:sdetar since iain is on pto, could you set a prioirty/severity for this?
Updated•1 month ago
|
Updated•1 month ago
|
Updated•1 month ago
|
Assignee | ||
Comment 6•20 days ago
|
||
I don't have access to a Windows machine, but I spent some time investigating this on my Linux laptop. I used rr to identify each function that transpiled a StoreDenseElement with the flag set (there were 8). Then I compared the generated LIR for each of those functions using samply profiles. In all but one case, the LIR operations were the same: we generated a GuardElementsArePacked MIR node, but optimized it away because it was redundant with an earlier guard. (This happens whenever we have, for example, arr[idx] += ...
: we can combine the GuardElementsArePacked from the pre-addition read with the post-addition store.) The only exception was maxRowIndex
, which accounts for ~0.01% of the total samples.
Conversely, looking at the assembly, I saw several cases where the new version of StoreDenseElement generated better code: if we don't generate the GuardElementsArePacked node, we instead have to generate a magic value guard as part of the StoreElementT.
I tried generating a comparison report, but it reported that the biggest difference was in mmul
, which is entirely unaffected by the change in bug 1973117.
The only changes I can actually see in this benchmark from this change look like they should be strict improvements (eg we generate strictly less code). If there's any real effect here, it's some sort of weird counterintuitive hardware nonsense (eg "generating more code happens to make the loop alignment better" or whatever).
I don't think digging into this any further is a good use of time.
Assignee | ||
Comment 7•20 days ago
|
||
Oh, wait, I hadn't realized that the regression window also included bug 1971446. I was only investigating changes caused by the changes in bug 1973117. I'll take a look at the other changes tomorrow.
Assignee | ||
Comment 8•5 days ago
|
||
If we create a GuardElementsArePacked to ensure that MLoadElement doesn't have to check for magic values, but then fold an unbox into the MLoadElement, then the unbox implicitly handles the magic check, and the guard is superfluous. This patch checks to make sure that all the consumers of the MElements are on an allow-list of ops that can handle non-packed arrays.
In testing on try, this does seem to very slightly improve the specific subtests (ares6-ML on Windows, Perf-Dashboard/SelectingPoints on OSX) that were regressed in bug 1974493 and bug 1975491. I don't completely trust platform-specific regressions, but if we can fix them I suppose we might as well.
Updated•5 days ago
|
Comment 10•12 hours ago
|
||
Comment 11•4 hours ago
|
||
bugherder |
Comment 12•3 hours ago
|
||
Since nightly and release are affected, beta will likely be affected too.
For more information, please visit BugBot documentation.
Comment 13•2 hours ago
|
||
The patch landed in nightly and beta is affected.
:iain, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- See https://wiki.mozilla.org/Release_Management/Requesting_an_Uplift for documentation on how to request an uplift.
- If no, please set
status-firefox143
towontfix
.
For more information, please visit BugBot documentation.
Description
•