diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2023-08-04 12:17:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 10:17:43 +0000 |
commit | 9514f670d12b4d92514c1402d686e694f3f234a5 (patch) | |
tree | cd847449b332ac27b6018fbe8a83a248af020c5a /components/script/dom/documentorshadowroot.rs | |
parent | 66e0d543cfbaecb08ade2e071d6575f9f72f4dbb (diff) | |
download | servo-9514f670d12b4d92514c1402d686e694f3f234a5.tar.gz servo-9514f670d12b4d92514c1402d686e694f3f234a5.zip |
No tracing of nop traceable fields (#29926)
* Add `no_trace` option to JSTraceable derive
* NoTrace wrapper
* Port some types to no_trace schematics
* Fixing my unsafe mistakes (not tracing traceables)
* Add docs & safety guards for no_trace
Safety guards (trait shenanigans) guarantees safety usage of `no_trace`
* Port canvas_traits to no_trace
* Port servo_media to no_trace
* Port net_traits to no_trace
* Port style to no_trace
* Port webgpu to no_trace
* Port script_traits to no_trace
* Port canvas_traits, devtools_traits, embedder_traits, profile_traits to no_trace
* unrooted_must_root lint in seperate file
* Add trace_in_no_trace_lint as script_plugin
* Composable types in must_not_have_traceable
* Introduced HashMapTracedValues wrapper
* `HashMap<NoTrace<K>,V>`->`HashMapTracedValues<K,V>`
* Port rest of servo's types to no_trace
* Port html5ever, euclid, mime and http to no_trace
* Port remaining externals to no_trace
* Port webxr and Arc<Mutex<_>>
* Fix spelling in notrace doc
Diffstat (limited to 'components/script/dom/documentorshadowroot.rs')
-rw-r--r-- | components/script/dom/documentorshadowroot.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/components/script/dom/documentorshadowroot.rs b/components/script/dom/documentorshadowroot.rs index 5ed1e19f0ab..14e4774c55b 100644 --- a/components/script/dom/documentorshadowroot.rs +++ b/components/script/dom/documentorshadowroot.rs @@ -17,17 +17,19 @@ use script_layout_interface::message::{NodesFromPointQueryType, QueryMsg}; use script_traits::UntrustedNodeAddress; use servo_arc::Arc; use servo_atoms::Atom; -use std::collections::HashMap; use std::fmt; use style::invalidation::media_queries::{MediaListKey, ToMediaListKey}; use style::media_queries::MediaList; use style::shared_lock::{SharedRwLock as StyleSharedRwLock, SharedRwLockReadGuard}; use style::stylesheets::{Stylesheet, StylesheetContents}; +use super::bindings::trace::HashMapTracedValues; + #[derive(Clone, JSTraceable, MallocSizeOf)] #[unrooted_must_root_lint::must_root] pub struct StyleSheetInDocument { #[ignore_malloc_size_of = "Arc"] + #[no_trace] pub sheet: Arc<Stylesheet>, pub owner: Dom<Element>, } @@ -247,7 +249,7 @@ impl DocumentOrShadowRoot { /// Remove any existing association between the provided id/name and any elements in this document. pub fn unregister_named_element( &self, - id_map: &DomRefCell<HashMap<Atom, Vec<Dom<Element>>>>, + id_map: &DomRefCell<HashMapTracedValues<Atom, Vec<Dom<Element>>>>, to_unregister: &Element, id: &Atom, ) { @@ -275,7 +277,7 @@ impl DocumentOrShadowRoot { /// Associate an element present in this document with the provided id/name. pub fn register_named_element( &self, - id_map: &DomRefCell<HashMap<Atom, Vec<Dom<Element>>>>, + id_map: &DomRefCell<HashMapTracedValues<Atom, Vec<Dom<Element>>>>, element: &Element, id: &Atom, root: DomRoot<Node>, |