aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/servoparser
diff options
context:
space:
mode:
authorDelan Azabani <dazabani@igalia.com>2024-11-15 17:10:01 +0800
committerGitHub <noreply@github.com>2024-11-15 09:10:01 +0000
commitaa7116c75d2f13f554ce4db162344aaea59e60b0 (patch)
tree6b23fa65221101ac202e0742dc749c255627beb1 /components/script/dom/servoparser
parent495cceb7de813f6f1936d77821e8cf04ca2857cd (diff)
downloadservo-aa7116c75d2f13f554ce4db162344aaea59e60b0.tar.gz
servo-aa7116c75d2f13f554ce4db162344aaea59e60b0.zip
Plumb time profiler output into tracing (#34238)
* Plumb time profiler output into tracing Signed-off-by: Delan Azabani <dazabani@igalia.com> * Enter the span tightly around the callback Signed-off-by: Delan Azabani <dazabani@igalia.com> * Use `info_span!()` shorthand Signed-off-by: Delan Azabani <dazabani@igalia.com> --------- Signed-off-by: Delan Azabani <dazabani@igalia.com>
Diffstat (limited to 'components/script/dom/servoparser')
-rw-r--r--components/script/dom/servoparser/mod.rs48
1 files changed, 28 insertions, 20 deletions
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs
index ca1c20aaf03..82128477f33 100644
--- a/components/script/dom/servoparser/mod.rs
+++ b/components/script/dom/servoparser/mod.rs
@@ -27,8 +27,9 @@ use net_traits::{
ResourceTimingType,
};
use profile_traits::time::{
- profile, ProfilerCategory, TimerMetadata, TimerMetadataFrameType, TimerMetadataReflowType,
+ ProfilerCategory, TimerMetadata, TimerMetadataFrameType, TimerMetadataReflowType,
};
+use profile_traits::time_profile;
use script_traits::DocumentActivity;
use servo_config::pref;
use servo_url::ServoUrl;
@@ -521,17 +522,32 @@ impl ServoParser {
iframe: TimerMetadataFrameType::RootWindow,
incremental: TimerMetadataReflowType::FirstReflow,
};
- let profiler_category = self.tokenizer.profiler_category();
- profile(
- profiler_category,
- Some(metadata),
- self.document
- .window()
- .upcast::<GlobalScope>()
- .time_profiler_chan()
- .clone(),
- || self.do_parse_sync(can_gc),
- )
+ let profiler_chan = self
+ .document
+ .window()
+ .upcast::<GlobalScope>()
+ .time_profiler_chan()
+ .clone();
+ match self.tokenizer {
+ Tokenizer::Html(_) => time_profile!(
+ ProfilerCategory::ScriptParseHTML,
+ Some(metadata),
+ profiler_chan,
+ || self.do_parse_sync(can_gc),
+ ),
+ Tokenizer::AsyncHtml(_) => time_profile!(
+ ProfilerCategory::ScriptParseHTML,
+ Some(metadata),
+ profiler_chan,
+ || self.do_parse_sync(can_gc),
+ ),
+ Tokenizer::Xml(_) => time_profile!(
+ ProfilerCategory::ScriptParseXML,
+ Some(metadata),
+ profiler_chan,
+ || self.do_parse_sync(can_gc),
+ ),
+ }
}
fn do_parse_sync(&self, can_gc: CanGc) {
@@ -720,14 +736,6 @@ impl Tokenizer {
Tokenizer::Xml(_) => unimplemented!(),
}
}
-
- fn profiler_category(&self) -> ProfilerCategory {
- match *self {
- Tokenizer::Html(_) => ProfilerCategory::ScriptParseHTML,
- Tokenizer::AsyncHtml(_) => ProfilerCategory::ScriptParseHTML,
- Tokenizer::Xml(_) => ProfilerCategory::ScriptParseXML,
- }
- }
}
/// The context required for asynchronously fetching a document