aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/weakref.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-08-20 18:23:22 -0400
committerGitHub <noreply@github.com>2018-08-20 18:23:22 -0400
commit5c8ede4b05f3940cfaa94d6341984502c920685d (patch)
treea80924c2d87b67e8963c1f23dee425f012ed23a5 /components/script/dom/bindings/weakref.rs
parent561908a965e6eef79800d3cc7598e5e6ea534cf9 (diff)
parent74c1e00d8163f255bb4141ff3549bbdedd7ea766 (diff)
downloadservo-5c8ede4b05f3940cfaa94d6341984502c920685d.tar.gz
servo-5c8ede4b05f3940cfaa94d6341984502c920685d.zip
Auto merge of #21029 - asajeffrey:smup, r=Manishearth,nox
Upgrade to SM 60 <!-- Please describe your changes on the following line: --> This is the mozjs_sys smup PR. Depends on https://github.com/servo/mozjs/pull/138 and https://github.com/servo/rust-mozjs/pull/430. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #20585 <!-- Either: --> - [X] These changes do not require tests because the existing tests will ensure SM is still working <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21029) <!-- Reviewable:end -->
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());