diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-12-06 11:56:37 -1000 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-12-06 13:15:15 -1000 |
commit | 291a131dd8c73e4cc00044ce1f4cc93eb9b0a501 (patch) | |
tree | 75437c32a6c855b78962d719c4cb7c0a147ccaea /components/script/dom/bindings/trace.rs | |
parent | b40681e2312a2c3fd3c34f0f70760c768dda0753 (diff) | |
download | servo-291a131dd8c73e4cc00044ce1f4cc93eb9b0a501.tar.gz servo-291a131dd8c73e4cc00044ce1f4cc93eb9b0a501.zip |
Properly trace HashSet<T>
Diffstat (limited to 'components/script/dom/bindings/trace.rs')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index b0d4621e36b..766556efd16 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -32,8 +32,7 @@ use canvas_traits::{CanvasGradientStop, LinearGradientStyle, RadialGradientStyle}; use canvas_traits::{CompositionOrBlending, LineCapStyle, LineJoinStyle, RepetitionStyle}; use cssparser::RGBA; -use devtools_traits::CSSError; -use devtools_traits::WorkerId; +use devtools_traits::{CSSError, TimelineMarkerType, WorkerId}; use dom::abstractworker::SharedRt; use dom::bindings::cell::DOMRefCell; use dom::bindings::js::{JS, Root}; @@ -268,6 +267,18 @@ 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 +{ + #[inline] + unsafe fn trace(&self, trc: *mut JSTracer) { + for v in &*self { + v.trace(trc); + } + } +} + unsafe impl<K: Ord + JSTraceable, V: JSTraceable> JSTraceable for BTreeMap<K, V> { #[inline] unsafe fn trace(&self, trc: *mut JSTracer) { @@ -313,11 +324,11 @@ unsafe_no_jsmanaged_fields!(Atom, Prefix, LocalName, Namespace, QualName); unsafe_no_jsmanaged_fields!(Trusted<T: Reflectable>); unsafe_no_jsmanaged_fields!(TrustedPromise); unsafe_no_jsmanaged_fields!(PropertyDeclarationBlock); -unsafe_no_jsmanaged_fields!(HashSet<T>); // 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!(FrameId, FrameType, WindowSizeData, WindowSizeType, PipelineId); unsafe_no_jsmanaged_fields!(TimerEventId, TimerSource); +unsafe_no_jsmanaged_fields!(TimelineMarkerType); unsafe_no_jsmanaged_fields!(WorkerId); unsafe_no_jsmanaged_fields!(BufferQueue, QuirksMode); unsafe_no_jsmanaged_fields!(Runtime); |