diff options
Diffstat (limited to 'components/script/dom/bindings/trace.rs')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 119 |
1 files changed, 62 insertions, 57 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index ca01ff600d8..2c395094e7f 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -149,9 +149,11 @@ pub fn trace_jsval(tracer: *mut JSTracer, description: &str, val: &Heap<JSVal>) } trace!("tracing value {}", description); - CallValueTracer(tracer, - val.ptr.get() as *mut _, - GCTraceKindToAscii(val.get().trace_kind())); + CallValueTracer( + tracer, + val.ptr.get() as *mut _, + GCTraceKindToAscii(val.get().trace_kind()), + ); } } @@ -166,9 +168,11 @@ pub fn trace_reflector(tracer: *mut JSTracer, description: &str, reflector: &Ref pub fn trace_object(tracer: *mut JSTracer, description: &str, obj: &Heap<*mut JSObject>) { unsafe { trace!("tracing {}", description); - CallObjectTracer(tracer, - obj.ptr.get() as *mut _, - GCTraceKindToAscii(TraceKind::Object)); + CallObjectTracer( + tracer, + obj.ptr.get() as *mut _, + GCTraceKindToAscii(TraceKind::Object), + ); } } @@ -295,9 +299,10 @@ unsafe impl<T: JSTraceable, U: JSTraceable> JSTraceable for Result<T, U> { } unsafe impl<K, V, S> JSTraceable for HashMap<K, V, S> - where K: Hash + Eq + JSTraceable, - V: JSTraceable, - S: BuildHasher, +where + K: Hash + Eq + JSTraceable, + V: JSTraceable, + S: BuildHasher, { #[inline] unsafe fn trace(&self, trc: *mut JSTracer) { @@ -309,8 +314,9 @@ unsafe impl<K, V, S> JSTraceable for HashMap<K, V, S> } unsafe impl<T, S> JSTraceable for HashSet<T, S> - where T: Hash + Eq + JSTraceable, - S: BuildHasher, +where + T: Hash + Eq + JSTraceable, + S: BuildHasher, { #[inline] unsafe fn trace(&self, trc: *mut JSTracer) { @@ -365,7 +371,12 @@ unsafe_no_jsmanaged_fields!(PropertyDeclarationBlock); // These three are interdependent, if you plan to put jsmanaged data // in one of these make sure it is propagated properly to containing structs unsafe_no_jsmanaged_fields!(DocumentActivity, WindowSizeData, WindowSizeType); -unsafe_no_jsmanaged_fields!(BrowsingContextId, HistoryStateId, PipelineId, TopLevelBrowsingContextId); +unsafe_no_jsmanaged_fields!( + BrowsingContextId, + HistoryStateId, + PipelineId, + TopLevelBrowsingContextId +); unsafe_no_jsmanaged_fields!(TimerEventId, TimerSource); unsafe_no_jsmanaged_fields!(TimelineMarkerType); unsafe_no_jsmanaged_fields!(WorkerId); @@ -459,7 +470,10 @@ unsafe impl<'a, A, B> JSTraceable for fn(&A) -> B { } } -unsafe impl<T> JSTraceable for IpcSender<T> where T: for<'de> Deserialize<'de> + Serialize { +unsafe impl<T> JSTraceable for IpcSender<T> +where + T: for<'de> Deserialize<'de> + Serialize, +{ #[inline] unsafe fn trace(&self, _: *mut JSTracer) { // Do nothing @@ -481,7 +495,10 @@ unsafe impl JSTraceable for () { } } -unsafe impl<T> JSTraceable for IpcReceiver<T> where T: for<'de> Deserialize<'de> + Serialize { +unsafe impl<T> JSTraceable for IpcReceiver<T> +where + T: for<'de> Deserialize<'de> + Serialize, +{ #[inline] unsafe fn trace(&self, _: *mut JSTracer) { // Do nothing @@ -509,14 +526,20 @@ unsafe impl<T: Send> JSTraceable for Sender<T> { } } -unsafe impl<T: Send> JSTraceable for WebGLReceiver<T> where T: for<'de> Deserialize<'de> + Serialize { +unsafe impl<T: Send> JSTraceable for WebGLReceiver<T> +where + T: for<'de> Deserialize<'de> + Serialize, +{ #[inline] unsafe fn trace(&self, _: *mut JSTracer) { // Do nothing } } -unsafe impl<T: Send> JSTraceable for WebGLSender<T> where T: for<'de> Deserialize<'de> + Serialize { +unsafe impl<T: Send> JSTraceable for WebGLSender<T> +where + T: for<'de> Deserialize<'de> + Serialize, +{ #[inline] unsafe fn trace(&self, _: *mut JSTracer) { // Do nothing @@ -665,7 +688,10 @@ unsafe impl JSTraceable for StyleLocked<MediaList> { } } -unsafe impl<T> JSTraceable for TypedArray<T, Box<Heap<*mut JSObject>>> where T: TypedArrayElement { +unsafe impl<T> JSTraceable for TypedArray<T, Box<Heap<*mut JSObject>>> +where + T: TypedArrayElement, +{ unsafe fn trace(&self, trc: *mut JSTracer) { self.underlying_object().trace(trc); } @@ -682,34 +708,26 @@ where } } - /// Holds a set of JSTraceables that need to be rooted struct RootedTraceableSet { set: Vec<*const JSTraceable>, } -thread_local!( - /// TLV Holds a set of JSTraceables that need to be rooted - static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> = - RefCell::new(RootedTraceableSet::new()); -); +thread_local!(/// TLV Holds a set of JSTraceables that need to be rooted +static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> = RefCell::new(RootedTraceableSet::new());); impl RootedTraceableSet { fn new() -> RootedTraceableSet { - RootedTraceableSet { - set: vec![], - } + RootedTraceableSet { set: vec![] } } unsafe fn remove(traceable: *const JSTraceable) { ROOTED_TRACEABLES.with(|ref traceables| { let mut traceables = traceables.borrow_mut(); - let idx = - match traceables.set.iter() - .rposition(|x| *x == traceable) { - Some(idx) => idx, - None => unreachable!(), - }; + let idx = match traceables.set.iter().rposition(|x| *x == traceable) { + Some(idx) => idx, + None => unreachable!(), + }; traceables.set.remove(idx); }); } @@ -744,9 +762,7 @@ impl<'a, T: JSTraceable + 'static> RootedTraceable<'a, T> { unsafe { RootedTraceableSet::add(traceable); } - RootedTraceable { - ptr: traceable, - } + RootedTraceable { ptr: traceable } } } @@ -787,16 +803,14 @@ impl<T: JSTraceable + 'static> RootedTraceableBox<T> { unsafe { RootedTraceableSet::add(traceable); } - RootedTraceableBox { - ptr: traceable, - } + RootedTraceableBox { ptr: traceable } } } impl<T> RootedTraceableBox<Heap<T>> - where - Heap<T>: JSTraceable + 'static, - T: GCMethods + Copy, +where + Heap<T>: JSTraceable + 'static, + T: GCMethods + Copy, { pub fn handle(&self) -> Handle<T> { unsafe { Handle::from_raw((*self.ptr).handle()) } @@ -812,17 +826,13 @@ impl<T: JSTraceable + Default> Default for RootedTraceableBox<T> { impl<T: JSTraceable> Deref for RootedTraceableBox<T> { type Target = T; fn deref(&self) -> &T { - unsafe { - &*self.ptr - } + unsafe { &*self.ptr } } } impl<T: JSTraceable> DerefMut for RootedTraceableBox<T> { fn deref_mut(&mut self) -> &mut T { - unsafe { - &mut *self.ptr - } + unsafe { &mut *self.ptr } } } @@ -849,9 +859,7 @@ pub struct RootableVec<T: JSTraceable> { impl<T: JSTraceable> RootableVec<T> { /// Create a vector of items of type T that can be rooted later. pub fn new_unrooted() -> RootableVec<T> { - RootableVec { - v: vec![], - } + RootableVec { v: vec![] } } } @@ -868,9 +876,7 @@ impl<'a, T: 'static + JSTraceable> RootedVec<'a, T> { unsafe { RootedTraceableSet::add(root); } - RootedVec { - root: root, - } + RootedVec { root: root } } } @@ -878,15 +884,14 @@ impl<'a, T: 'static + JSTraceable + DomObject> RootedVec<'a, Dom<T>> { /// Create a vector of items of type Dom<T> that is rooted for /// the lifetime of this struct pub fn from_iter<I>(root: &'a mut RootableVec<Dom<T>>, iter: I) -> Self - where I: Iterator<Item = DomRoot<T>> + where + I: Iterator<Item = DomRoot<T>>, { unsafe { RootedTraceableSet::add(root); } root.v.extend(iter.map(|item| Dom::from_ref(&*item))); - RootedVec { - root: root, - } + RootedVec { root: root } } } |