aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/promise.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2017-01-19 13:46:43 -0500
committerJosh Matthews <josh@joshmatthews.net>2017-01-20 11:32:19 -0500
commite5eaab35234b45609b2eca2f33b07bede7627edc (patch)
tree0c2a35df55dfbe23e55f2146a2dbb5fd3333aed2 /components/script/dom/promise.rs
parentbe3f35878af1d9210abc65358c99782c119ceaa6 (diff)
downloadservo-e5eaab35234b45609b2eca2f33b07bede7627edc.tar.gz
servo-e5eaab35234b45609b2eca2f33b07bede7627edc.zip
Use Heap in DOM object reflector implementation to ensure GC barriers are used.
Diffstat (limited to 'components/script/dom/promise.rs')
-rw-r--r--components/script/dom/promise.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs
index 89bbd088f2c..a727e5049f5 100644
--- a/components/script/dom/promise.rs
+++ b/components/script/dom/promise.rs
@@ -90,12 +90,12 @@ impl Promise {
#[allow(unsafe_code, unrooted_must_root)]
unsafe fn new_with_js_promise(obj: HandleObject, cx: *mut JSContext) -> Rc<Promise> {
assert!(IsPromiseObject(obj));
- let mut promise = Promise {
+ let promise = Promise {
reflector: Reflector::new(),
permanent_js_root: MutHeapJSVal::new(),
};
- promise.init_reflector(obj.get());
- let promise = Rc::new(promise);
+ let mut promise = Rc::new(promise);
+ Rc::get_mut(&mut promise).unwrap().init_reflector(obj.get());
promise.initialize(cx);
promise
}