From 96698779ccdddcf87175db46c379a380317ad48a Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 2 Jun 2020 15:17:32 -0400 Subject: [PATCH 1/2] dom: Remove unnecessary generic from private_from_proto_check_static. --- components/script/dom/bindings/conversions.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index 531ff6ea885..da4334207bf 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -452,13 +452,10 @@ where /// Returns Err(()) if `obj` is a wrapper or if the object is not an object /// for a DOM object of the given type (as defined by the proto_id and proto_depth). #[inline] -pub unsafe fn private_from_proto_check_static( +unsafe fn private_from_proto_check_static( obj: *mut JSObject, - proto_check: F, -) -> Result<*const libc::c_void, ()> -where - F: Fn(&'static DOMClass) -> bool, -{ + proto_check: fn(&'static DOMClass) -> bool, +) -> Result<*const libc::c_void, ()> { let dom_class = get_dom_class(obj).map_err(|_| ())?; if proto_check(dom_class) { trace!("good prototype"); From 1feeb23514118926098f6fab219f38fc22e8f9d7 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 2 Jun 2020 15:34:50 -0400 Subject: [PATCH 2/2] dom: Extract non-generic code from Root::new. --- components/script/dom/bindings/root.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/components/script/dom/bindings/root.rs b/components/script/dom/bindings/root.rs index 59f9b964564..36bc2296ee5 100644 --- a/components/script/dom/bindings/root.rs +++ b/components/script/dom/bindings/root.rs @@ -63,12 +63,17 @@ where /// out references which cannot outlive this new `Root`. #[allow(unrooted_must_root)] pub unsafe fn new(value: T) -> Self { - debug_assert!(thread_state::get().is_script()); - STACK_ROOTS.with(|ref root_list| { - let root_list = &*root_list.get().unwrap(); - root_list.root(value.stable_trace_object()); - Root { value, root_list } - }) + unsafe fn add_to_root_list(object: *const dyn JSTraceable) -> *const RootCollection { + debug_assert!(thread_state::get().is_script()); + STACK_ROOTS.with(|ref root_list| { + let root_list = &*root_list.get().unwrap(); + root_list.root(object); + root_list + }) + } + + let root_list = add_to_root_list(value.stable_trace_object()); + Root { value, root_list } } }