Open
Bug 518656
Opened 15 years ago
Updated 2 years ago
Changing to no style on nsCSSFrameConstructor.cpp MXR is slow
Categories
(Core :: Layout, defect)
Tracking
()
NEW
People
(Reporter: bzbarsky, Unassigned)
References
Details
BUILD: Current trunk
STEPS TO REPRODUCE:
1) Start a separate browser process that you won't regret killing
2) Load http://mxr.mozilla.org/mozilla-central/source/layout/base/nsCSSFrameConstructor.cpp
3) View > Page Style > No Style
EXPECTED RESULTS: restyle the page
ACTUAL RESULTS: hang
ANALYSIS: The page has rules applying to all the line numbers which give them :before content. Removing those causes us to reframe all those anchors. That means finding frames for them all so we can remove them (O(N) because inlines don't go in the map). That should be helped by bug 500882. Then it means removing them from the frame tree, which is O(N) due to needing to find the previous sibling and the right line in the block. Bug 512336 will help with the former, but finding the right line will still be O(N). Not sure how best to approach that. Then we create a new frame and have to find a previous sibling frame for it, which involves GetPrimaryFor on the prevsibling node (again bug 500882). Then we do FrameNeedsReflow(), which involves finding the right line in ChildIsDirty. Again, O(N). I have no idea why it was showing up less than some of the other line stuff; maybe it has a smaller constant...
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•