Layout: minor optimizations and bugfix for non-functional details (#38197)

This change adds some minor optimizations and bugfix for non-functional
details with seperated commits:
- fix the omission that stop use `Rayon` in single-thread mode
- add trace for incremental box tree construction
- fix the bug that failed to skip reflow entirely when there is no need
for `restyle` and a fragment tree has already been built.
- add trace for stylist preparation during reflow. In certain scenarios,
this phase might take up a significant amount of time, such as when
there are a large number of shadow trees.

Testing: This should not change observable behavior and is thus covered
by existing WPT tests.

---------

Signed-off-by: sharpshooter_pt <ibluegalaxy_taoj@163.com>
This commit is contained in:
JoeDow 2025-07-22 18:56:52 +08:00 committed by GitHub
parent 19a121e829
commit 8a1cc69717
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 2 deletions

View file

@ -589,7 +589,7 @@ impl LayoutThread {
return false;
}
// We always need to at least build a fragment tree.
if !self.fragment_tree.borrow().is_none() {
if self.fragment_tree.borrow().is_none() {
return false;
}
@ -710,6 +710,7 @@ impl LayoutThread {
(viewport_changed && had_used_viewport_units) || theme_changed
}
#[servo_tracing::instrument(skip_all)]
fn prepare_stylist_for_reflow<'dom>(
&mut self,
reflow_request: &ReflowRequest,