diff options
author | Alan Jeffrey <ajeffrey@mozilla.com> | 2018-06-01 17:24:25 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2018-08-20 18:22:29 -0400 |
commit | 74c1e00d8163f255bb4141ff3549bbdedd7ea766 (patch) | |
tree | d3960a6cff086d3ca2240fcc6eaa863dba4910c2 /components/script/dom/bindings/weakref.rs | |
parent | d34403047e806fa6c8c2468946f64429622ec434 (diff) | |
download | servo-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.rs | 13 |
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()); |