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


(Core :: Web Painting, enhancement)

Not set



Tracking Status
firefox67 --- fixed


(Reporter: mattwoodrow, Assigned: mattwoodrow)


(Blocks 1 open bug)



(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
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
Don't create wrap lists for positioned frames that are leaves. r=miko
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.