Hi everyone,

We're starting on incremental layout, in order to improve performance of the layout benchmarks we are most focused on (`test_hammer_layout` and `test_slam_layout`). It was also felt, based on past experience, that having incremental layout from the start is important to get in early (at least in some form) to avoid problems later.

We're trying to figure out what to do when an inline RenderBox of an inline flow becomes non-inline. This is a vexing issue, as it violates the invariant that a flow's descendants and the flow itself are the only flows that need to be reconstructed from scratch when a box's style changes. This is because the adjacent inlines turn into anonymous block flows.

The code in Gecko that is responsible for this is WipeContainingBlock in nsCSSFrameConstructor.cpp [1]. The code in WebKit that is responsible for this is childBecameNonInline() in RenderInline.cpp [2].

I'm wondering if any layout gurus have any advice as to what to do here. What is the most elegant way to handle this case? Is there anything we should be aware of in order to optimize this path?

Thanks!

Patrick

[1]: http://mxr.mozilla.org/mozilla-central/source/layout/base/nsCSSFrameConstructor.cpp#11280

[2]: http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/rendering/RenderInline.cpp
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to