mirror of
https://github.com/servo/servo.git
synced 2025-08-17 11:25:35 +01:00
layout: Make Fragment
hold ArcRefCell
inside (#34923)
Push the interior mutability into enum variants of `Fragment`, so that they can be cloned. This saves memory in the `Fragment` tree as the `Fragment` enum is now a relatively wee 16 bytes and the interior parts can be a variety of sizes. Before, every `Fragment` was the size of the biggest kind (`BoxFragment` - 248 bytes). This a step on the way toward incremental layout. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
c936dd6c4e
commit
de780dcde4
18 changed files with 257 additions and 233 deletions
|
@ -551,7 +551,7 @@ impl TaffyContainer {
|
|||
|
||||
match &mut child.taffy_level_box {
|
||||
TaffyItemBoxInner::InFlowBox(independent_box) => {
|
||||
let fragment = Fragment::Box(
|
||||
let fragment = Fragment::Box(ArcRefCell::new(
|
||||
BoxFragment::new(
|
||||
independent_box.base_fragment_info(),
|
||||
independent_box.style().clone(),
|
||||
|
@ -568,7 +568,7 @@ impl TaffyContainer {
|
|||
last: None,
|
||||
})
|
||||
.with_detailed_layout_info(child_detailed_layout_info),
|
||||
);
|
||||
));
|
||||
|
||||
child
|
||||
.positioning_context
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue