Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce scope of generic code in script #26790

Merged
merged 4 commits into from Jun 5, 2020
Merged

Conversation

@jdm
Copy link
Member

jdm commented Jun 4, 2020

Combined, these changes account for almost 100k lines of generated code in a debug build for the script crate.


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • There are tests for these changes
@highfive
Copy link

highfive commented Jun 4, 2020

Heads up! This PR modifies the following files:

  • @asajeffrey: components/script/dom/bindings/cell.rs, components/script/dom/bindings/conversions.rs, components/script/dom/bindings/refcounted.rs, components/script/dom/bindings/utils.rs, components/script/dom/bindings/root.rs
  • @KiChjang: components/script/dom/bindings/cell.rs, components/script/dom/bindings/conversions.rs, components/script/dom/bindings/refcounted.rs, components/script/dom/bindings/utils.rs, components/script/dom/bindings/root.rs
@highfive
Copy link

highfive commented Jun 4, 2020

warning Warning warning

  • These commits modify unsafe code. Please review it carefully!
  • These commits modify script code, but no tests are modified. Please consider adding a test!
@jdm
Copy link
Member Author

jdm commented Jun 4, 2020

Copy link
Member

SimonSapin left a comment

Nice! What does the impact on cargo llvm-lines look like?

/// Creates a new TrustedReference from a pointer to a value that impements DOMObject.
/// This is not enforced by the type system to reduce duplicated generic code,
/// which is acceptable since this method is internal to this module.
unsafe fn new(ptr: *const libc::c_void) -> TrustedReference {
TrustedReference(ptr as *const libc::c_void)

This comment has been minimized.

Copy link
@SimonSapin

SimonSapin Jun 4, 2020

Member

Nit: this as conversion can now be removed

#[cfg(debug_assertions)]
pub(crate) fn assert_in_script() {
debug_assert!(thread_state::get().is_script());
}

#[cfg(debug_assertions)]
pub(crate) fn assert_in_layout() {
debug_assert!(thread_state::get().is_layout());
}

#[cfg(not(debug_assertions))]
pub(crate) fn assert_in_layout() {}

#[cfg(not(debug_assertions))]
fn assert_in_script() {}
Comment on lines 593 to 607

This comment has been minimized.

Copy link
@SimonSapin

SimonSapin Jun 4, 2020

Member

Those #[cfg] attributes and separate function definitions look redundant. The expansion of debug_assert! (instead of assert!) is if false { … } when debug_assertions is not enabled, which is easy for the optimizer to eliminate.

@jdm
Copy link
Member Author

jdm commented Jun 4, 2020

llvm-lines output diff:

--- full-lines	2020-06-04 12:13:14.000000000 -0400
+++ full-lines4	2020-06-04 13:33:26.000000000 -0400
@@ -2,8 +2,8 @@
   -----           ------         -------------
-  7062488 (100%)  181492 (100%)  (TOTAL)
-   176895 (2.5%)   15330 (8.4%)  core::ptr::drop_in_place
-   150282 (2.1%)    6600 (3.6%)  core::ops::function::FnOnce::call_once
-   123312 (1.7%)    1016 (0.6%)  <<&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple::Access<R,O> as serde::de::SeqAccess>::next_element_seed
-   102976 (1.5%)    1670 (0.9%)  core::option::Option<T>::map
-    87479 (1.2%)     782 (0.4%)  core::iter::traits::iterator::Iterator::try_fold
+  6979695 (100%)  180582 (100%)  (TOTAL)
+   176898 (2.5%)   15330 (8.5%)  core::ptr::drop_in_place
+   150282 (2.2%)    6600 (3.7%)  core::ops::function::FnOnce::call_once
+   123312 (1.8%)    1016 (0.6%)  <<&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple::Access<R,O> as serde::de::SeqAccess>::next_element_seed
+   102977 (1.5%)    1670 (0.9%)  core::option::Option<T>::map
+    87479 (1.3%)     782 (0.4%)  core::iter::traits::iterator::Iterator::try_fold
     81546 (1.2%)    1185 (0.7%)  core::result::Result<T,E>::map
@@ -11,5 +11,5 @@
     47048 (0.7%)       4 (0.0%)  <keyboard_types::key::_IMPL_DESERIALIZE_FOR_Key::<impl serde::de::Deserialize for keyboard_types::key::Key>::deserialize::__Visitor as serde::de::Visitor>::visit_enum
-    45499 (0.6%)     615 (0.3%)  std::thread::local::LocalKey<T>::try_with
     44500 (0.6%)     296 (0.2%)  <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_enum::<impl serde::de::EnumAccess for &mut bincode::de::Deserializer<R,O>>::variant_seed
     44173 (0.6%)     645 (0.4%)  core::result::Result<T,E>::map_err
+    37831 (0.5%)     512 (0.3%)  std::thread::local::LocalKey<T>::try_with
     35640 (0.5%)     216 (0.1%)  alloc::raw_vec::RawVec<T,A>::grow_amortized
@@ -17,3 +17,2 @@
     34585 (0.5%)     609 (0.3%)  crossbeam_channel::context::Context::with::{{closure}}
-    34041 (0.5%)     637 (0.4%)  core::result::Result<T,E>::expect
     33009 (0.5%)     643 (0.4%)  core::ptr::swap_nonoverlapping_one
@@ -22,2 +21,3 @@
     31816 (0.5%)     776 (0.4%)  script::dom::bindings::root::Root<T>::new
+    31288 (0.4%)     586 (0.3%)  core::result::Result<T,E>::expect
     30104 (0.4%)     116 (0.1%)  <<script_traits::webdriver_msg::_IMPL_DESERIALIZE_FOR_WebDriverScriptCommand::<impl serde::de::Deserialize for script_traits::webdriver_msg::WebDriverScriptCommand>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq
@@ -32,3 +32,2 @@
     20808 (0.3%)     289 (0.2%)  core::alloc::layout::Layout::array
-    19998 (0.3%)     101 (0.1%)  script::dom::bindings::conversions::private_from_proto_check::{{closure}}
     19467 (0.3%)     304 (0.2%)  core::option::Option<T>::ok_or_else
@@ -38,3 +37,3 @@
     18592 (0.3%)       8 (0.0%)  canvas_traits::canvas::_IMPL_SERIALIZE_FOR_Canvas2dMsg::<impl serde::ser::Serialize for canvas_traits::canvas::Canvas2dMsg>::serialize
-    18167 (0.3%)     478 (0.3%)  core::option::Option<T>::unwrap
+    18168 (0.3%)     478 (0.3%)  core::option::Option<T>::unwrap
     17892 (0.3%)     180 (0.1%)  <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_option
@@ -52,3 +51,2 @@
     15177 (0.2%)      92 (0.1%)  ipc_channel::ipc::OpaqueIpcMessage::to::{{closure}}::{{closure}}
-    15053 (0.2%)     101 (0.1%)  script::dom::bindings::conversions::private_from_proto_check
     14975 (0.2%)      48 (0.0%)  <alloc::vec::Vec<T> as mozjs::conversions::FromJSValConvertible>::from_jsval
@@ -64,3 +62,2 @@
     13416 (0.2%)     237 (0.1%)  core::iter::traits::iterator::Iterator::find::check::{{closure}}
-    13189 (0.2%)     116 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::or_init
     13168 (0.2%)       8 (0.0%)  bluetooth_traits::_IMPL_SERIALIZE_FOR_BluetoothRequest::<impl serde::ser::Serialize for bluetooth_traits::BluetoothRequest>::serialize
@@ -69,2 +66,3 @@
     13065 (0.2%)      65 (0.0%)  crossbeam_channel::flavors::array::Channel<T>::start_recv
+    12609 (0.2%)     116 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::or_init
     12204 (0.2%)     152 (0.1%)  <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
@@ -80,4 +78,3 @@
     10864 (0.2%)     776 (0.4%)  <script::dom::bindings::root::Root<T> as core::ops::drop::Drop>::drop
-    10764 (0.2%)      52 (0.0%)  script::dom::bindings::refcounted::LiveDOMReferences::addref
-    10557 (0.1%)      69 (0.0%)  hashbrown::raw::RawTable<T>::try_with_capacity
+    10557 (0.2%)      69 (0.0%)  hashbrown::raw::RawTable<T>::try_with_capacity
     10304 (0.1%)    1278 (0.7%)  <core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize
@@ -90,3 +87,2 @@
      9912 (0.1%)      57 (0.0%)  <[T] as mozjs::conversions::ToJSValConvertible>::to_jsval
-     9900 (0.1%)     996 (0.5%)  <core::result::Result<T,E> as core::ops::try::Try>::from_error
      9644 (0.1%)      76 (0.0%)  <serde::de::impls::<impl serde::de::Deserialize for alloc::vec::Vec<T>>::deserialize::VecVisitor<T> as serde::de::Visitor>::visit_seq
@@ -97,2 +93,3 @@
      9306 (0.1%)     132 (0.1%)  bincode::internal::serialized_size
+     9186 (0.1%)     945 (0.5%)  <core::result::Result<T,E> as core::ops::try::Try>::from_error
      9174 (0.1%)      33 (0.0%)  ipc_channel::ipc::IpcSender<T>::send::{{closure}}::{{closure}}
@@ -108,3 +105,3 @@
      8008 (0.1%)      28 (0.0%)  indexmap::map::OrderMapCore<K,V>::double_capacity
-     7929 (0.1%)     350 (0.2%)  core::option::Option<T>::as_ref
+     7931 (0.1%)     350 (0.2%)  core::option::Option<T>::as_ref
      7917 (0.1%)      87 (0.0%)  alloc::raw_vec::RawVec<T,A>::allocate_in
@@ -132,3 +129,2 @@
      6884 (0.1%)      65 (0.0%)  crossbeam_channel::flavors::list::Channel<T>::read
-     6647 (0.1%)     391 (0.2%)  script::dom::bindings::root::Dom<T>::from_ref
      6536 (0.1%)      72 (0.0%)  <serde::de::impls::<impl serde::de::Deserialize for core::result::Result<T,E>>::deserialize::ResultVisitor<T,E> as serde::de::Visitor>::visit_enum
@@ -147,5 +143,2 @@
      5922 (0.1%)      63 (0.0%)  crossbeam_channel::counter::new
-     5865 (0.1%)     391 (0.2%)  <script::dom::bindings::root::Dom<T> as core::ops::deref::Deref>::deref
-     5865 (0.1%)     391 (0.2%)  <script::dom::bindings::root::Root<T> as core::ops::deref::Deref>::deref
-     5858 (0.1%)     101 (0.1%)  core::result::Result<T,E>::or_else
      5845 (0.1%)    1169 (0.6%)  core::mem::size_of
@@ -159,3 +152,2 @@
      5621 (0.1%)     591 (0.3%)  core::cell::UnsafeCell<T>::new
-     5619 (0.1%)     412 (0.2%)  std::thread::local::LocalKey<T>::with
      5616 (0.1%)      53 (0.0%)  hashbrown::map::HashMap<K,V,S>::insert
@@ -201,2 +193,3 @@
      4308 (0.1%)     359 (0.2%)  core::ptr::mut_ptr::<impl *mut T>::offset
+     4301 (0.1%)     391 (0.2%)  script::dom::bindings::root::Dom<T>::from_ref
      4276 (0.1%)      62 (0.0%)  <core::slice::Iter<T> as core::iter::traits::iterator::Iterator>::size_hint
@@ -206,2 +199,3 @@
      4205 (0.1%)      47 (0.0%)  <core::slice::Iter<T> as core::iter::traits::iterator::Iterator>::position
+     4180 (0.1%)     309 (0.2%)  std::thread::local::LocalKey<T>::with
      4064 (0.1%)       8 (0.0%)  canvas_traits::canvas::_IMPL_SERIALIZE_FOR_CanvasMsg::<impl serde::ser::Serialize for canvas_traits::canvas::CanvasMsg>::serialize
@@ -211,7 +205,5 @@
      4017 (0.1%)      19 (0.0%)  crossbeam_channel::flavors::zero::Channel<T>::send::{{closure}}
-     4016 (0.1%)     213 (0.1%)  script::dom::bindings::cell::DomRefCell<T>::try_borrow_mut
      4016 (0.1%)       8 (0.0%)  devtools_traits::_IMPL_SERIALIZE_FOR_ComputedNodeLayout::<impl serde::ser::Serialize for devtools_traits::ComputedNodeLayout>::serialize
      3999 (0.1%)     129 (0.1%)  canvas_traits::webgl_channel::webgl_channel::{{closure}}
-     3980 (0.1%)     398 (0.2%)  core::ptr::const_ptr::<impl core::cmp::PartialEq for *const T>::eq
-     3978 (0.1%)     211 (0.1%)  script::dom::bindings::cell::DomRefCell<T>::try_borrow
+     3990 (0.1%)     399 (0.2%)  core::ptr::const_ptr::<impl core::cmp::PartialEq for *const T>::eq
      3971 (0.1%)      19 (0.0%)  crossbeam_channel::flavors::array::Channel<T>::start_send
@@ -238,6 +230,8 @@
      3560 (0.1%)       8 (0.0%)  <webxr_api::hand::_IMPL_DESERIALIZE_FOR_Finger::<impl serde::de::Deserialize for webxr_api::hand::Finger<J>>::deserialize::__Visitor<J> as serde::de::Visitor>::visit_seq
-     3528 (0.0%)     392 (0.2%)  core::ptr::const_ptr::<impl *const T>::add
-     3525 (0.0%)     235 (0.1%)  alloc::vec::Vec<T>::as_mut_ptr
-     3517 (0.0%)     238 (0.1%)  core::iter::traits::iterator::Iterator::find
-     3507 (0.0%)     167 (0.1%)  script::dom::bindings::inheritance::Castable::is
+     3528 (0.1%)     392 (0.2%)  core::ptr::const_ptr::<impl *const T>::add
+     3525 (0.1%)     235 (0.1%)  alloc::vec::Vec<T>::as_mut_ptr
+     3519 (0.1%)     391 (0.2%)  <script::dom::bindings::root::Dom<T> as core::ops::deref::Deref>::deref
+     3519 (0.1%)     391 (0.2%)  <script::dom::bindings::root::Root<T> as core::ops::deref::Deref>::deref
+     3517 (0.1%)     238 (0.1%)  core::iter::traits::iterator::Iterator::find
+     3507 (0.1%)     167 (0.1%)  script::dom::bindings::inheritance::Castable::is
      3468 (0.0%)       4 (0.0%)  <bluetooth_traits::_IMPL_DESERIALIZE_FOR_BluetoothCharacteristicMsg::<impl serde::de::Deserialize for bluetooth_traits::BluetoothCharacteristicMsg>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
@@ -248,3 +242,2 @@
      3396 (0.0%)       4 (0.0%)  <serde::de::impls::ArrayVisitor<[T; 8]> as serde::de::Visitor>::visit_seq
-     3380 (0.0%)      52 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::new::{{closure}}
      3360 (0.0%)      56 (0.0%)  <&mut bincode::ser::Serializer<W,O> as serde::ser::Serializer>::serialize_some
@@ -300,4 +293,5 @@
      2784 (0.0%)      16 (0.0%)  serde::ser::impls::<impl serde::ser::Serialize for (T0,T1,T2)>::serialize
-     2756 (0.0%)      53 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::root::{{closure}}
      2755 (0.0%)      33 (0.0%)  <std::collections::hash::map::HashMap<K,V,S> as malloc_size_of::MallocSizeOf>::size_of
+     2738 (0.0%)     213 (0.1%)  script::dom::bindings::cell::DomRefCell<T>::try_borrow_mut
+     2712 (0.0%)     211 (0.1%)  script::dom::bindings::cell::DomRefCell<T>::try_borrow
      2702 (0.0%)     386 (0.2%)  script::dom::bindings::conversions::native_from_object_static::{{closure}}
@@ -329,3 +323,2 @@
      2441 (0.0%)       1 (0.0%)  script::dom::create::create_native_html_element
-     2415 (0.0%)     105 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::get
      2412 (0.0%)      29 (0.0%)  alloc::sync::Arc<T>::new
@@ -334,2 +327,3 @@
      2409 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::PaintRenderingContext2DBinding::PaintRenderingContext2DBinding::drawImage::{{closure}}::{{closure}}
+     2400 (0.0%)     100 (0.1%)  script::dom::bindings::conversions::native_from_object
      2382 (0.0%)      26 (0.0%)  std::sys_common::poison::map_result
@@ -366,3 +360,2 @@
      2168 (0.0%)       4 (0.0%)  <webxr_api::frame::_IMPL_DESERIALIZE_FOR_Frame::<impl serde::de::Deserialize for webxr_api::frame::Frame>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
-     2163 (0.0%)     103 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::set
      2160 (0.0%)       8 (0.0%)  serde::ser::impls::<impl serde::ser::Serialize for (T0,T1,T2,T3,T4,T5)>::serialize
@@ -424,3 +417,2 @@
      1828 (0.0%)     181 (0.1%)  <core::iter::LoopState<C,B> as core::ops::try::Try>::from_error
-     1800 (0.0%)     100 (0.1%)  script::dom::bindings::conversions::native_from_object
      1800 (0.0%)     100 (0.1%)  script::dom::bindings::conversions::root_from_object
@@ -432,2 +424,3 @@
      1788 (0.0%)       4 (0.0%)  <net_traits::filemanager_thread::_IMPL_DESERIALIZE_FOR_SelectedFile::<impl serde::de::Deserialize for net_traits::filemanager_thread::SelectedFile>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
+     1785 (0.0%)     105 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::get
      1778 (0.0%)      61 (0.0%)  core::alloc::layout::Layout::for_value
@@ -493,2 +486,3 @@
      1561 (0.0%)      24 (0.0%)  <script::task_source::networking::NetworkingTaskSource as script::task_source::TaskSource>::queue_with_canceller
+     1560 (0.0%)      52 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::new
      1560 (0.0%)      39 (0.0%)  script::dom::virtualmethods::VirtualMethods::cloning_steps
@@ -502,2 +496,3 @@
      1548 (0.0%)       4 (0.0%)  <net_traits::blob_url_store::_IMPL_DESERIALIZE_FOR_BlobBuf::<impl serde::de::Deserialize for net_traits::blob_url_store::BlobBuf>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
+     1545 (0.0%)     103 (0.1%)  script::dom::bindings::root::MutNullableDom<T>::set
      1544 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventInit::new
@@ -508,3 +503,3 @@
      1528 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::PerformanceResourceTimingBinding::PerformanceResourceTimingBinding::CollectJSONAttributes
-     1518 (0.0%)      52 (0.0%)  <core::option::Option<T> as core::clone::Clone>::clone
+     1520 (0.0%)      52 (0.0%)  <core::option::Option<T> as core::clone::Clone>::clone
      1516 (0.0%)       4 (0.0%)  <script_traits::serializable::_IMPL_DESERIALIZE_FOR_FileBlob::<impl serde::de::Deserialize for script_traits::serializable::FileBlob>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
@@ -514,3 +509,2 @@
      1504 (0.0%)       4 (0.0%)  <script_traits::_IMPL_DESERIALIZE_FOR_ConstellationControlMsg::<impl serde::de::Deserialize for script_traits::ConstellationControlMsg>::deserialize::__Visitor as serde::de::Visitor>::visit_enum
-     1499 (0.0%)     119 (0.1%)  core::ops::function::Fn::call
      1499 (0.0%)      60 (0.0%)  <hashbrown::map::Iter<K,V> as core::iter::traits::iterator::Iterator>::next::{{closure}}
@@ -541,3 +535,2 @@
      1432 (0.0%)       4 (0.0%)  <script_traits::webdriver_msg::_IMPL_DESERIALIZE_FOR_WebDriverScriptCommand::<impl serde::de::Deserialize for script_traits::webdriver_msg::WebDriverScriptCommand>::deserialize::__Visitor as serde::de::Visitor>::visit_enum
-     1431 (0.0%)      53 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::root
      1425 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::GPUCommandEncoderBinding::GPURenderPassDepthStencilAttachmentDescriptor::new
@@ -587,4 +580,4 @@
      1307 (0.0%)       1 (0.0%)  script::webdriver_handlers::jsval_to_webdriver
+     1305 (0.0%)       1 (0.0%)  <script::dom::servoparser::ParserContext as net_traits::FetchResponseListener>::process_response
      1304 (0.0%)       8 (0.0%)  script_traits::script_msg::_IMPL_SERIALIZE_FOR_ServiceWorkerMsg::<impl serde::ser::Serialize for script_traits::script_msg::ServiceWorkerMsg>::serialize
-     1304 (0.0%)       1 (0.0%)  <script::dom::servoparser::ParserContext as net_traits::FetchResponseListener>::process_response
      1300 (0.0%)      20 (0.0%)  core::sync::atomic::AtomicPtr<T>::compare_exchange
@@ -595,3 +588,2 @@
      1280 (0.0%)      16 (0.0%)  <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_map
-     1278 (0.0%)      71 (0.0%)  <script::dom::bindings::root::MutNullableDom<T> as core::default::Default>::default
      1276 (0.0%)      34 (0.0%)  alloc::vec::Vec<T>::truncate
@@ -720,2 +712,3 @@
      1062 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::bufferData::{{closure}}::{{closure}}
+     1060 (0.0%)      53 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::root
      1060 (0.0%)      18 (0.0%)  script::task_source::networking::NetworkingTaskSource::queue_unconditionally
@@ -870,2 +863,3 @@
       853 (0.0%)       3 (0.0%)  std::sync::mpsc::shared::Packet<T>::try_recv
+      852 (0.0%)      71 (0.0%)  <script::dom::bindings::root::MutNullableDom<T> as core::default::Default>::default
       851 (0.0%)       1 (0.0%)  script::dom::serviceworkerglobalscope::ServiceWorkerGlobalScope::run_serviceworker_scope::{{closure}}
@@ -922,3 +916,2 @@
       798 (0.0%)      57 (0.0%)  <alloc::vec::Vec<T> as core::ops::deref::DerefMut>::deref_mut
-      798 (0.0%)      42 (0.0%)  script::dom::bindings::root::MutNullableDom<T>::new
       798 (0.0%)       1 (0.0%)  <style::values::generics::transform::GenericTransformOperation<Angle,Number,Length,Integer,LoP> as style::values::generics::transform::ToMatrix>::to_3d_matrix
@@ -951,3 +944,2 @@
       784 (0.0%)       4 (0.0%)  <canvas_traits::webgl::_IMPL_DESERIALIZE_FOR_WebGLMsgSender::<impl serde::de::Deserialize for canvas_traits::webgl::WebGLMsgSender>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
-      780 (0.0%)      52 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::new
       780 (0.0%)       4 (0.0%)  <net_traits::filemanager_thread::_IMPL_DESERIALIZE_FOR_RelativePos::<impl serde::de::Deserialize for net_traits::filemanager_thread::RelativePos>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
@@ -1120,3 +1112,3 @@
       670 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::uniform4i::{{closure}}::{{closure}}
-      668 (0.0%)       1 (0.0%)  <script::stylesheet_loader::StylesheetContext as net_traits::FetchResponseListener>::process_response_eof
+      669 (0.0%)       1 (0.0%)  <script::stylesheet_loader::StylesheetContext as net_traits::FetchResponseListener>::process_response_eof
       667 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::WorkerBinding::WorkerOptions::new
@@ -1371,2 +1363,3 @@
       547 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementBinding::setSelectionRange::{{closure}}::{{closure}}
+      546 (0.0%)      42 (0.0%)  script::dom::bindings::root::MutNullableDom<T>::new
       546 (0.0%)      30 (0.0%)  <alloc::sync::Arc<T> as core::ops::drop::Drop>::drop
@@ -1748,2 +1741,3 @@
       432 (0.0%)      48 (0.0%)  serde::ser::impls::<impl serde::ser::Serialize for alloc::vec::Vec<T>>::serialize
+      432 (0.0%)      18 (0.0%)  <script::dom::bindings::refcounted::Trusted<T> as core::clone::Clone>::clone
       432 (0.0%)       4 (0.0%)  <keyboard_types::modifiers::_IMPL_DESERIALIZE_FOR_Modifiers::<impl serde::de::Deserialize for keyboard_types::modifiers::Modifiers>::deserialize::__Visitor as serde::de::Visitor>::visit_seq
@@ -1829,3 +1823,2 @@
       417 (0.0%)       1 (0.0%)  script::script_module::ModuleTree::compile_module_script
-      416 (0.0%)      52 (0.0%)  script::dom::bindings::refcounted::TrustedReference::new
       416 (0.0%)       2 (0.0%)  script::dom::gpu::response_async
@@ -1905,3 +1898,2 @@
       396 (0.0%)      33 (0.0%)  <std::collections::hash::map::HashMap<K,V,S> as malloc_size_of::MallocShallowSizeOf>::shallow_size_of::{{closure}}
-      396 (0.0%)      18 (0.0%)  <script::dom::bindings::refcounted::Trusted<T> as core::clone::Clone>::clone
       396 (0.0%)       3 (0.0%)  html5ever::tokenizer::Tokenizer<Sink>::process_char_ref
@@ -2173,2 +2165,3 @@
       344 (0.0%)       4 (0.0%)  <<alloc::vec::DrainFilter<T,F> as core::ops::drop::Drop>::drop::BackshiftOnDrop<T,F> as core::ops::drop::Drop>::drop
+      344 (0.0%)       1 (0.0%)  <script::dom::dedicatedworkerglobalscope::DedicatedWorkerScriptMsg as script::task_queue::QueuedTaskConversion>::into_queued_task
       344 (0.0%)       1 (0.0%)  <script::dom::xrsession::XRSession as script::dom::bindings::codegen::Bindings::XRSessionBinding::XRSessionBinding::XRSessionMethods>::UpdateRenderState
@@ -2177,3 +2170,2 @@
       343 (0.0%)       3 (0.0%)  <headers::common::content_range::ContentRange as headers_core::Header>::decode::{{closure}}
-      343 (0.0%)       1 (0.0%)  <script::dom::dedicatedworkerglobalscope::DedicatedWorkerScriptMsg as script::task_queue::QueuedTaskConversion>::into_queued_task
       343 (0.0%)       1 (0.0%)  script::dom::windowproxy::WindowProxy::new_dissimilar_origin
@@ -2536,3 +2528,2 @@
       301 (0.0%)       1 (0.0%)  script::dom::globalscope::GlobalScope::broadcast_message_event
-      300 (0.0%)      15 (0.0%)  script::dom::bindings::root::LayoutDom<T>::upcast
       300 (0.0%)      10 (0.0%)  alloc::raw_vec::RawVec<T,A>::shrink::{{closure}}
@@ -2542,2 +2533,3 @@
       299 (0.0%)      23 (0.0%)  <alloc::boxed::Box<T> as script::dom::bindings::trace::JSTraceable>::trace
+      299 (0.0%)      19 (0.0%)  core::ops::function::Fn::call
       299 (0.0%)       1 (0.0%)  <script::dom::bindings::codegen::Bindings::MediaDevicesBinding::MediaTrackConstraintSet as mozjs::conversions::ToJSValConvertible>::to_jsval
@@ -3579,2 +3571,3 @@
       238 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestBinding::getResponseHeader::{{closure}}::{{closure}}
+      238 (0.0%)       1 (0.0%)  script::dom::bindings::utils::generic_call
       238 (0.0%)       1 (0.0%)  script::dom::htmlimageelement::HTMLImageElement::handle_loaded_image
@@ -3607,3 +3600,2 @@
       235 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::WheelEventBinding::WheelEventBinding::CreateInterfaceObjects
-      235 (0.0%)       1 (0.0%)  script::dom::bindings::utils::generic_call
       235 (0.0%)       1 (0.0%)  script::script_module::ModuleTree::resolve_requested_modules
@@ -3903,3 +3895,2 @@
       222 (0.0%)       1 (0.0%)  script::dom::nodelist::ChildrenList::children_changed::replace
-      221 (0.0%)      13 (0.0%)  <script::dom::bindings::root::Dom<T> as core::clone::Clone>::clone
       221 (0.0%)      13 (0.0%)  alloc::collections::vec_deque::VecDeque<T>::cap
@@ -4128,2 +4119,3 @@
       211 (0.0%)       1 (0.0%)  script::script_thread::ScriptThread::handle_visibility_change_msg
+      210 (0.0%)      15 (0.0%)  script::dom::bindings::root::LayoutDom<T>::upcast
       210 (0.0%)       7 (0.0%)  alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend
@@ -4444,3 +4436,2 @@
       209 (0.0%)      19 (0.0%)  <ipc_channel::ipc::IpcSender<T> as core::clone::Clone>::clone
-      209 (0.0%)      11 (0.0%)  script::dom::bindings::root::LayoutDom<T>::downcast
       209 (0.0%)       5 (0.0%)  core::option::Option<T>::unwrap_or_default
@@ -4549,2 +4540,3 @@
       206 (0.0%)       1 (0.0%)  script::dom::bindings::interface::create_named_constructors
+      206 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::LiveDOMReferences::addref
       206 (0.0%)       1 (0.0%)  script::dom::globalscope::GlobalScope::get_blob_bytes_or_file_id
@@ -4689,2 +4681,3 @@
       198 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::XRSubImageBinding::XRSubImageBinding::CreateInterfaceObjects
+      198 (0.0%)       1 (0.0%)  script::dom::bindings::conversions::private_from_proto_check::{{closure}}
       198 (0.0%)       1 (0.0%)  script::dom::stereopannernode::StereoPannerNode::new_inherited
@@ -4934,3 +4927,2 @@
       196 (0.0%)       1 (0.0%)  script::textinput::TextInput<T>::assert_ok_selection
-      195 (0.0%)      15 (0.0%)  script::dom::bindings::root::LayoutDom<T>::unsafe_get
       195 (0.0%)       5 (0.0%)  alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,NodeType>,alloc::collections::btree::node::marker::Edge>::right_kv
@@ -5190,2 +5182,3 @@
       188 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::XRWebGLLayerBinding::XRWebGLLayerBinding::getViewport::{{closure}}::{{closure}}
+      188 (0.0%)       1 (0.0%)  script::dom::bindings::conversions::private_from_proto_check
       188 (0.0%)       1 (0.0%)  script::dom::element::Element::nearest_activable_element
@@ -6511,4 +6504,6 @@
       144 (0.0%)       1 (0.0%)  xml5ever::tokenizer::XmlTokenizer<Sink>::run
+      143 (0.0%)      13 (0.0%)  <script::dom::bindings::root::Dom<T> as core::clone::Clone>::clone
       143 (0.0%)      13 (0.0%)  script::dom::bindings::trace::RootedVec<T>::new
       143 (0.0%)      11 (0.0%)  mozjs::rust::CustomAutoRooterGuard<T>::new
+      143 (0.0%)      11 (0.0%)  script::dom::bindings::root::LayoutDom<T>::downcast
       143 (0.0%)       7 (0.0%)  core::iter::adapters::Peekable<I>::new
@@ -6689,4 +6684,2 @@
       136 (0.0%)       1 (0.0%)  script::dom::webglframebuffer::WebGLFramebuffer::detach_binding
-      135 (0.0%)       8 (0.0%)  script::dom::bindings::cell::DomRefCell<T>::borrow_for_layout
-      135 (0.0%)       3 (0.0%)  script::dom::bindings::root::DomOnceCell<T>::init_once
       135 (0.0%)       3 (0.0%)  script::task_queue::TaskQueue<T>::release_tasks_for_fully_active_documents
@@ -7059,2 +7052,3 @@
       120 (0.0%)       5 (0.0%)  <core::ops::range::Range<usize> as core::slice::SliceIndex<[T]>>::get_unchecked
+      120 (0.0%)       3 (0.0%)  script::dom::bindings::root::DomOnceCell<T>::init_once
       120 (0.0%)       2 (0.0%)  script::dom::node::Node::delete_cell_or_row::{{closure}}
@@ -7471,2 +7465,3 @@
       106 (0.0%)       1 (0.0%)  xml5ever::tokenizer::char_ref::CharRefTokenizer::do_named
+      105 (0.0%)      15 (0.0%)  script::dom::bindings::root::LayoutDom<T>::unsafe_get
       105 (0.0%)       7 (0.0%)  script::dom::webgl_extensions::extensions::WebGLExtensions::is_enabled::{{closure}}
@@ -7499,3 +7494,2 @@
       104 (0.0%)       5 (0.0%)  ipc_channel::router::RouterProxy::route_ipc_receiver_to_crossbeam_sender::{{closure}}
-      104 (0.0%)       4 (0.0%)  script::dom::bindings::root::MutDom<T>::get
       104 (0.0%)       2 (0.0%)  alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Mut,K,V,NodeType>,alloc::collections::btree::node::marker::KV>::kv_mut
@@ -8021,3 +8015,2 @@
        90 (0.0%)       9 (0.0%)  std::collections::hash::map::HashMap<K,V,S>::get_mut
-       90 (0.0%)       5 (0.0%)  script::dom::bindings::root::Dom<T>::to_layout
        90 (0.0%)       4 (0.0%)  <boxfnonce::send::SendBoxFnOnce<(A1,),Result> as core::convert::From<F>>::from
@@ -8153,2 +8146,3 @@
        87 (0.0%)       9 (0.0%)  <core::iter::adapters::flatten::FlatMap<I,U,F> as core::iter::traits::iterator::Iterator>::next
+       87 (0.0%)       8 (0.0%)  script::dom::bindings::cell::DomRefCell<T>::borrow_for_layout
        87 (0.0%)       4 (0.0%)  lazy_static::lazy::Lazy<T>::get::{{closure}}
@@ -9228,2 +9222,3 @@
        80 (0.0%)       4 (0.0%)  mozjs_sys::jsimpls::<impl mozjs_sys::jsgc::Rooted<T>>::add_to_root_stack
+       80 (0.0%)       4 (0.0%)  script::dom::bindings::root::MutDom<T>::get
        80 (0.0%)       3 (0.0%)  hashbrown::rustc_entry::RustcOccupiedEntry<K,V>::remove_entry
@@ -9843,3 +9838,2 @@
        76 (0.0%)       4 (0.0%)  mozjs_sys::jsimpls::<impl mozjs_sys::jsgc::Rooted<T>>::remove_from_root_stack
-       76 (0.0%)       4 (0.0%)  script::dom::bindings::root::MutDom<T>::new
        76 (0.0%)       2 (0.0%)  <script::dom::htmlinputelement::HTMLInputElement as script::dom::activation::Activatable>::activation_behavior::{{closure}}
@@ -9909,2 +9903,3 @@
        75 (0.0%)       1 (0.0%)  script::dom::customelementregistry::CustomElementDefinition::new
+       75 (0.0%)       1 (0.0%)  script::dom::dedicatedworkerglobalscope::AutoWorkerReset::new
        75 (0.0%)       1 (0.0%)  script::dom::document::Document::asap_script_loaded
@@ -9936,3 +9931,2 @@
        74 (0.0%)       1 (0.0%)  script::dom::customelementregistry::CustomElementReactionStack::enqueue_element
-       74 (0.0%)       1 (0.0%)  script::dom::dedicatedworkerglobalscope::AutoWorkerReset::new
        74 (0.0%)       1 (0.0%)  script::dom::domexception::DOMException::new
@@ -11792,2 +11786,3 @@
        63 (0.0%)       1 (0.0%)  script::dom::bindings::interface::create_callback_interface_object
+       63 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::new::add_live_reference::{{closure}}
        63 (0.0%)       1 (0.0%)  script::dom::broadcastchannel::BroadcastChannel::new_inherited
@@ -12596,2 +12591,3 @@
        60 (0.0%)       6 (0.0%)  core::slice::<impl [T]>::is_empty
+       60 (0.0%)       5 (0.0%)  script::dom::bindings::root::Dom<T>::to_layout
        60 (0.0%)       5 (0.0%)  script::dom::node::containing_shadow_root
@@ -12998,2 +12994,3 @@
        58 (0.0%)       1 (0.0%)  <style::stylesheet_set::DocumentStylesheetSet<S> as script::dom::bindings::trace::JSTraceable>::trace
+       58 (0.0%)       1 (0.0%)  core::result::Result<T,E>::or_else
        58 (0.0%)       1 (0.0%)  mozjs::rust::wrappers::JS_ForwardGetPropertyTo
@@ -13597,3 +13594,2 @@
        57 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::LiveDOMReferences::addref_promise
-       57 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::unroot
        57 (0.0%)       1 (0.0%)  script::dom::bluetoothpermissionresult::BluetoothPermissionResult::new_inherited
@@ -14149,2 +14145,3 @@
        52 (0.0%)       4 (0.0%)  script::dom::bindings::iterable::IterableIterator<T>::Next::{{closure}}
+       52 (0.0%)       4 (0.0%)  script::dom::bindings::root::MutDom<T>::new
        52 (0.0%)       2 (0.0%)  <script::dom::bindings::weakref::DOMTracker<T> as malloc_size_of::MallocSizeOf>::size_of
@@ -14383,2 +14380,3 @@
        51 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::TextMetricsBinding::TextMetricsBinding::ConstructorEnabled
+       51 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::unroot
        51 (0.0%)       1 (0.0%)  script::dom::bindings::trace::RootedTraceableSet::trace
@@ -14760,2 +14758,3 @@
        48 (0.0%)       1 (0.0%)  script::dom::bindings::proxyhandler::get_expando_object
+       48 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::root::validate::{{closure}}
        48 (0.0%)       1 (0.0%)  script::dom::document::update_with_current_time_ms
@@ -16100,3 +16099,2 @@
        42 (0.0%)       6 (0.0%)  alloc::collections::vec_deque::VecDeque<T>::capacity
-       42 (0.0%)       3 (0.0%)  <script::dom::bindings::root::DomOnceCell<T> as core::default::Default>::default
        42 (0.0%)       3 (0.0%)  <std::collections::hash::map::HashMap<K,V,S> as core::iter::traits::collect::IntoIterator>::into_iter
@@ -16487,3 +16485,2 @@
        40 (0.0%)       2 (0.0%)  core::iter::adapters::copy_try_fold::{{closure}}
-       40 (0.0%)       2 (0.0%)  script::dom::bindings::root::MutDom<T>::set
        40 (0.0%)       2 (0.0%)  script::dom::htmlformelement::HTMLFormElement::set_url_query_pairs::{{closure}}
@@ -16736,3 +16733,2 @@
        38 (0.0%)       2 (0.0%)  html5ever::tree_builder::TreeBuilder<Handle,Sink>::is_marker_or_open::{{closure}}
-       38 (0.0%)       2 (0.0%)  script::dom::bindings::root::MutNullableDom<T>::get_inner_as_layout
        38 (0.0%)       2 (0.0%)  script::dom::textcontrol::TextControlSelection<E>::new
@@ -24328,2 +24324,3 @@
        28 (0.0%)       2 (0.0%)  mozjs_sys::jsgc::<impl core::convert::From<T> for mozjs_sys::generated::root::JS::Handle<<T as mozjs_sys::jsgc::IntoHandle>::Target>>::from
+       28 (0.0%)       2 (0.0%)  script::dom::bindings::root::MutDom<T>::set
        28 (0.0%)       2 (0.0%)  script::dom::htmllinkelement::HTMLLinkElement::handle_stylesheet_url::{{closure}}
@@ -24848,2 +24845,3 @@
        26 (0.0%)       2 (0.0%)  script::dom::bindings::num::Finite<T>::wrap
+       26 (0.0%)       2 (0.0%)  script::dom::bindings::root::MutNullableDom<T>::get_inner_as_layout
        26 (0.0%)       2 (0.0%)  script::dom::document::Document::get_anchor_by_name::{{closure}}::{{closure}}
@@ -30121,3 +30119,2 @@
        26 (0.0%)       1 (0.0%)  script::dom::bindings::root::ThreadLocalStackRoots::new::{{closure}}
-       26 (0.0%)       1 (0.0%)  script::dom::bindings::utils::generic_call::{{closure}}
        26 (0.0%)       1 (0.0%)  script::dom::biquadfilternode::<impl core::convert::From<script::dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterType> for servo_media_audio::biquad_filter_node::FilterType>::from
@@ -30410,2 +30407,3 @@
        24 (0.0%)       3 (0.0%)  <core::ptr::non_null::NonNull<T> as core::convert::From<core::ptr::unique::Unique<T>>>::from
+       24 (0.0%)       3 (0.0%)  <script::dom::bindings::root::DomOnceCell<T> as core::default::Default>::default
        24 (0.0%)       3 (0.0%)  hashbrown::rustc_entry::RustcOccupiedEntry<K,V>::get_mut
@@ -30581,3 +30579,2 @@
        23 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::RTCPeerConnectionBinding::RTCConfiguration::empty
-       23 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::root
        23 (0.0%)       1 (0.0%)  script::dom::cssrulelist::CSSRuleList::new
@@ -30733,4 +30730,2 @@
        22 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::PrototypeList::proto_id_to_name
-       22 (0.0%)       1 (0.0%)  script::dom::bindings::root::LayoutDom<T>::get_jsobject
-       22 (0.0%)       1 (0.0%)  script::dom::bindings::root::Root<T>::new::add_to_root_list
        22 (0.0%)       1 (0.0%)  script::dom::document::Document::get_anchor_by_name::{{closure}}
@@ -31457,3 +31452,2 @@
        20 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLContextAttributes::empty
-       20 (0.0%)       1 (0.0%)  script::dom::bindings::root::LayoutDom<script::dom::node::Node>::from_trusted_node_address
        20 (0.0%)       1 (0.0%)  script::dom::canvasgradient::CanvasGradient::new
@@ -32224,3 +32218,2 @@
        19 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::RTCPeerConnectionBinding::RTCOfferOptions::empty
-       19 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::new
        19 (0.0%)       1 (0.0%)  script::dom::customelementregistry::CustomElementReaction::invoke::{{closure}}
@@ -32327,3 +32320,2 @@
        18 (0.0%)       1 (0.0%)  <script::dom::bindings::codegen::Bindings::PopStateEventBinding::PopStateEventInit as core::default::Default>::default
-       18 (0.0%)       1 (0.0%)  <script::dom::bindings::root::LayoutDom<T> as core::clone::Clone>::clone
        18 (0.0%)       1 (0.0%)  <script::dom::bindings::root::LayoutDom<script::dom::element::Element> as script::dom::element::LayoutElementHelpers>::get_attr_val_for_layout
@@ -32606,2 +32598,3 @@
        17 (0.0%)       1 (0.0%)  script::dom::bindings::reflector::Reflector::get_jsobject
+       17 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::root
        17 (0.0%)       1 (0.0%)  script::dom::client::Client::new
@@ -32995,3 +32988,2 @@
        16 (0.0%)       1 (0.0%)  script::dom::audionode::<impl core::convert::From<script::dom::bindings::codegen::Bindings::AudioNodeBinding::ChannelCountMode> for servo_media_audio::node::ChannelCountMode>::from
-       16 (0.0%)       1 (0.0%)  script::dom::bindings::cell::DomRefCell<T>::borrow_for_script_deallocation
        16 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::ANGLEInstancedArraysBinding::ANGLEInstancedArraysBinding::_trace
@@ -33386,2 +33378,4 @@
        16 (0.0%)       1 (0.0%)  script::dom::bindings::reflector::Reflector::new
+       16 (0.0%)       1 (0.0%)  script::dom::bindings::root::LayoutDom<T>::get_jsobject
+       16 (0.0%)       1 (0.0%)  script::dom::bindings::root::Root<T>::new::add_to_root_list
        16 (0.0%)       1 (0.0%)  script::dom::bindings::structuredclone::free_transfer_callback
@@ -33684,2 +33678,4 @@
        15 (0.0%)       1 (0.0%)  script::dom::bindings::proxyhandler::is_extensible
+       15 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::new::add_live_reference
+       15 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::Trusted<T>::root::validate
        15 (0.0%)       1 (0.0%)  script::dom::bindings::settings_stack::AutoEntryScript::new
@@ -33974,2 +33970,3 @@
        14 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::TrustedPromise::root
+       14 (0.0%)       1 (0.0%)  script::dom::bindings::root::LayoutDom<script::dom::node::Node>::from_trusted_node_address
        14 (0.0%)       1 (0.0%)  script::dom::bindings::root::STACK_ROOTS::__init
@@ -35425,2 +35422,3 @@
        13 (0.0%)       1 (0.0%)  script::dom::bindings::conversions::<impl mozjs::conversions::ToJSValConvertible for script::dom::bindings::str::USVString>::to_jsval
+       13 (0.0%)       1 (0.0%)  script::dom::bindings::root::RootCollection::new
        13 (0.0%)       1 (0.0%)  script::dom::bindings::str::DOMString::is_valid_email_address_string
@@ -35568,2 +35566,3 @@
        12 (0.0%)       1 (0.0%)  <script::dom::bindings::num::Finite<T> as core::clone::Clone>::clone
+       12 (0.0%)       1 (0.0%)  <script::dom::bindings::root::LayoutDom<T> as core::clone::Clone>::clone
        12 (0.0%)       1 (0.0%)  <script::dom::bindings::root::LayoutDom<script::dom::attr::Attr> as script::dom::attr::AttrHelpersForLayout>::as_str
@@ -37610,3 +37609,2 @@
        10 (0.0%)       1 (0.0%)  style::stylesheet_set::AuthorStylesheetSet<S>::get
-       10 (0.0%)       1 (0.0%)  style::thread_state::ThreadState::contains
        10 (0.0%)       1 (0.0%)  style::values::specified::<impl core::convert::From<style::values::specified::Number> for f64>::from
@@ -38220,2 +38218,4 @@
         9 (0.0%)       1 (0.0%)  script::dom::bindings::root::LayoutDom<T>::to_layout_slice
+        9 (0.0%)       1 (0.0%)  script::dom::bindings::root::assert_in_layout
+        9 (0.0%)       1 (0.0%)  script::dom::bindings::root::assert_in_script
         9 (0.0%)       1 (0.0%)  script::dom::bindings::str::<impl core::convert::From<script::dom::bindings::str::DOMString> for string_cache::atom::Atom<markup5ever::LocalNameStaticSet>>::from
@@ -38529,2 +38529,3 @@
         8 (0.0%)       1 (0.0%)  script::dom::bindings::callback::CallbackInterface::new
+        8 (0.0%)       1 (0.0%)  script::dom::bindings::cell::DomRefCell<T>::borrow_for_script_deallocation
         8 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::BlobBinding::BlobPropertyBag::empty
@@ -39538,2 +39539,3 @@
         7 (0.0%)       1 (0.0%)  script::dom::bindings::codegen::Bindings::GPURenderPipelineBinding::GPUBlendDescriptor::empty
+        7 (0.0%)       1 (0.0%)  script::dom::bindings::refcounted::TrustedReference::new
         7 (0.0%)       1 (0.0%)  script::dom::bindings::str::ByteString::len
@jdm jdm force-pushed the jdm:fewer-generics branch from c620116 to 862d5c0 Jun 4, 2020
@SimonSapin
Copy link
Member

SimonSapin commented Jun 4, 2020

@bors-servo
Copy link
Contributor

bors-servo commented Jun 4, 2020

📌 Commit 862d5c0 has been approved by SimonSapin

@bors-servo
Copy link
Contributor

bors-servo commented Jun 5, 2020

Testing commit 862d5c0 with merge 0478a60...

bors-servo added a commit that referenced this pull request Jun 5, 2020
Reduce scope of generic code in script

Combined, these changes account for almost 100k lines of generated code in a debug build for the script crate.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes
@bors-servo
Copy link
Contributor

bors-servo commented Jun 5, 2020

💔 Test failed - status-taskcluster

@jdm jdm force-pushed the jdm:fewer-generics branch from 862d5c0 to a5d0e0b Jun 5, 2020
@jdm
Copy link
Member Author

jdm commented Jun 5, 2020

@bors-servo r=SimonSapin

@bors-servo
Copy link
Contributor

bors-servo commented Jun 5, 2020

📌 Commit a5d0e0b has been approved by SimonSapin

@bors-servo
Copy link
Contributor

bors-servo commented Jun 5, 2020

Testing commit a5d0e0b with merge bce6ecc...

@bors-servo
Copy link
Contributor

bors-servo commented Jun 5, 2020

☀️ Test successful - status-taskcluster
Approved by: SimonSapin
Pushing bce6ecc to master...

@bors-servo bors-servo merged commit bce6ecc into servo:master Jun 5, 2020
2 checks passed
2 checks passed
Community-TC (pull_request) TaskGroup: success
Details
homu Test successful
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants
You can’t perform that action at this time.