Open Bug 86950 Opened 22 years ago Updated 11 months ago

make floats not require state recovery


(Core :: Layout: Floats, task, P3)






(Reporter: dbaron, Unassigned)



(Keywords: perf, Whiteboard: [whitebox])

Right now we create and destroy space managers during each reflow (for every
frame that could possibly need a space manager).  This leads to O(N^2) state
recovery for an incremental reflow.  This seems complicated to fix, but some
thoughts on how it could be done are:
 * store the frame that would have the space manager in the reflow state rather
than (or in addition to) the space manager itself, and store the space manager
for the lifetime of the frame tree as a property of the frame, but only for
frames that actually contain floats.
 * (the hard part, perhaps) Keep the space manager updated when things change
between reflows
Blocks: 78911
Priority: -- → P2
Target Milestone: --- → mozilla0.9.3
Depends on: 90725
Target Milestone: mozilla0.9.3 → mozilla0.9.4
Target Milestone: mozilla0.9.4 → mozilla0.9.5
Note that the float damage stored by the space manager (see bug 86947) must be
cleared each reflow, or perhaps maintained separately from the space manager.
Target Milestone: mozilla0.9.5 → mozilla0.9.6
Target Milestone: mozilla0.9.6 → mozilla0.9.7
Target Milestone: mozilla0.9.7 → mozilla0.9.8
Keywords: perf
Blocks: 114584
Target Milestone: mozilla0.9.8 → mozilla0.9.9
Target Milestone: mozilla0.9.9 → Future
This one has a huge impact on performance (just see the dependency-tree).
Keywords: nsbeta1
Why do you say it's huge?  My memory is that it's one of the smaller of the
remaining O(N^2) issues with loading long pages incrementally.
Well, you know this best. Which are the big killers (bugs) you'd say?
QA Contact: petersen → praveenqa
Component: Layout → Layout: Floats
Whiteboard: [whitebox]
QA Contact: praveenqa → dsirnapalli
Flags: blocking1.4?
adt: nsbeta1-
Keywords: nsbeta1nsbeta1-
Flags: blocking1.4? → blocking1.4-
Blocks: 226737
Blocks: 121330
QA Contact: dsirnapalli → layout.floats
Moving to p3 because no activity for at least 2 years.
See for more information
Priority: P2 → P3
Assignee: dbaron → nobody
QA Whiteboard: qa-not-actionable
Severity: major → S3
Type: defect → task
You need to log in before you can comment on or make changes to this bug.