aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/trace.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-12-06 11:56:37 -1000
committerAnthony Ramine <n.oxyde@gmail.com>2016-12-06 13:15:15 -1000
commit291a131dd8c73e4cc00044ce1f4cc93eb9b0a501 (patch)
tree75437c32a6c855b78962d719c4cb7c0a147ccaea /components/script/dom/bindings/trace.rs
parentb40681e2312a2c3fd3c34f0f70760c768dda0753 (diff)
downloadservo-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.rs17
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);