aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/weakref.rs
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2018-06-01 17:24:25 -0500
committerJosh Matthews <josh@joshmatthews.net>2018-08-20 18:22:29 -0400
commit74c1e00d8163f255bb4141ff3549bbdedd7ea766 (patch)
treed3960a6cff086d3ca2240fcc6eaa863dba4910c2 /components/script/dom/bindings/weakref.rs
parentd34403047e806fa6c8c2468946f64429622ec434 (diff)
downloadservo-74c1e00d8163f255bb4141ff3549bbdedd7ea766.tar.gz
servo-74c1e00d8163f255bb4141ff3549bbdedd7ea766.zip
Upgraded to SM 60
Diffstat (limited to 'components/script/dom/bindings/weakref.rs')
-rw-r--r--components/script/dom/bindings/weakref.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/components/script/dom/bindings/weakref.rs b/components/script/dom/bindings/weakref.rs
index abb1e07bc08..4cafafc0440 100644
--- a/components/script/dom/bindings/weakref.rs
+++ b/components/script/dom/bindings/weakref.rs
@@ -15,8 +15,10 @@ use dom::bindings::cell::DomRefCell;
use dom::bindings::reflector::DomObject;
use dom::bindings::root::DomRoot;
use dom::bindings::trace::JSTraceable;
-use js::jsapi::{JSTracer, JS_GetReservedSlot, JS_SetReservedSlot};
+use js::glue::JS_GetReservedSlot;
+use js::jsapi::{JSTracer, JS_SetReservedSlot};
use js::jsval::PrivateValue;
+use js::jsval::UndefinedValue;
use libc::c_void;
use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
use std::cell::{Cell, UnsafeCell};
@@ -53,16 +55,17 @@ pub trait WeakReferenceable: DomObject + Sized {
fn downgrade(&self) -> WeakRef<Self> {
unsafe {
let object = self.reflector().get_jsobject().get();
- let mut ptr = JS_GetReservedSlot(object,
- DOM_WEAK_SLOT)
- .to_private() as *mut WeakBox<Self>;
+ let mut slot = UndefinedValue();
+ JS_GetReservedSlot(object, DOM_WEAK_SLOT, &mut slot);
+ let mut ptr = slot.to_private() as *mut WeakBox<Self>;
if ptr.is_null() {
trace!("Creating new WeakBox holder for {:p}.", self);
ptr = Box::into_raw(Box::new(WeakBox {
count: Cell::new(1),
value: Cell::new(Some(ptr::NonNull::from(self))),
}));
- JS_SetReservedSlot(object, DOM_WEAK_SLOT, PrivateValue(ptr as *const c_void));
+ let val = PrivateValue(ptr as *const c_void);
+ JS_SetReservedSlot(object, DOM_WEAK_SLOT, &val);
}
let box_ = &*ptr;
assert!(box_.value.get().is_some());