Closed Bug 1529831 Opened 1 year ago Closed 1 year ago

Don't create wrap lists for positioned frames that don't have any children

Categories

(Core :: Web Painting, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla67
Tracking Status
firefox67 --- fixed

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

We currently create a wrap list for positioned items, so that they get a single entry in the display list for sorting.

We used to skip this if there only was a single item (and owned by the same frame). We had to stop doing this for RDL, since partial builds can have different results to full builds, and we can't have containers appearing without an invalidation.

The current exception is when the positioned frame is also a stacking context, since we know that the item in that case is already a container, and can't change when doing a partial build.

I think we can also detect the case where the positioned frame doesn't have any children frame, and also skip the wrap list in this. If there are no children, then a partial build is the same as a full build (as far as the current frame is concerned), so we can skip the wrap list.

This takes maze solver from 7.1 seconds to 5.4 seconds for me locally, with the default 30x30 maze.

Blocks: 1204549
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/65294fe0c614
Don't create wrap lists for positioned frames that are leaves. r=miko

Missed that one, and it exposes a rather large bug :(

If we remove the last child from a frame, then the frame itself isn't marked modified (and probably shouldn't be), but we can then change whether we have a wrap list or not.

Flags: needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ec0a441cb8f9
Don't create wrap lists for positioned frames that are leaves. r=miko
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla67
Depends on: 1533317
You need to log in before you can comment on or make changes to this bug.