Closed Bug 1599117 Opened 5 years ago Closed 5 years ago

Fix some issues with improveTypesAtTest

Categories

(Core :: JavaScript Engine: JIT, task, P1)

task

Tracking

()

RESOLVED FIXED
mozilla72
Tracking Status
firefox72 --- fixed

People

(Reporter: jandem, Assigned: jandem)

References

Details

Attachments

(3 files)

anba noticed the IonBuilder changes broke his optimization in https://phabricator.services.mozilla.com/D53174

The problem is that we no longer call improveTypesAtTest in some cases. Fortunately we can fix that pretty easily.

createFallthroughJoinBlock was necessary at some point, but it no longer is
because we know before the loop whether we have incoming edges.

When an MTest instruction results in a triangle structure, we now create an
empty block (like we did before bug 1595476) to get a diamond structure.
We did this for short-circuit operators but not for other cases.

We now also call improveTypesForTest for this block.

Depends on D54534

I think this has been effectively dead code for a few years because we no longer
create the triangle structure for JSOP_AND and JSOP_OR.

Depends on D54535

Priority: -- → P1
Pushed by jdemooij@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/95a4904b7465 part 1 - Remove createFallthroughJoinBlock, create the join block upfront if needed. r=tcampbell https://hg.mozilla.org/integration/autoland/rev/2c25a18171ba part 2 - Restore empty-block + improveTypesForTest behavior for test instructions. r=tcampbell https://hg.mozilla.org/integration/autoland/rev/3d8cfd4a935d part 3 - Remove IonBuilder::detectAndOrStructure. r=tcampbell
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla72
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: