diff options
author | Delan Azabani <dazabani@igalia.com> | 2024-11-15 17:10:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-15 09:10:01 +0000 |
commit | aa7116c75d2f13f554ce4db162344aaea59e60b0 (patch) | |
tree | 6b23fa65221101ac202e0742dc749c255627beb1 /components/script/dom/servoparser | |
parent | 495cceb7de813f6f1936d77821e8cf04ca2857cd (diff) | |
download | servo-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.rs | 48 |
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 |