aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/interface.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-08-24 23:56:58 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-08-25 14:03:09 +0200
commit0729000b56bffd943bb7ed925e28ebc2f5fb2adf (patch)
treee1d7bf2dd2dcf3e511563e006b43e1be849e49f5 /components/script/dom/bindings/interface.rs
parent5f59bb2e0c61b6f8a009021d8203214ef3602f24 (diff)
downloadservo-0729000b56bffd943bb7ed925e28ebc2f5fb2adf.tar.gz
servo-0729000b56bffd943bb7ed925e28ebc2f5fb2adf.zip
Pass a MutableHandleObject to create_global_object
Diffstat (limited to 'components/script/dom/bindings/interface.rs')
-rw-r--r--components/script/dom/bindings/interface.rs30
1 files changed, 14 insertions, 16 deletions
diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs
index ffb33f8f438..d92510754d5 100644
--- a/components/script/dom/bindings/interface.rs
+++ b/components/script/dom/bindings/interface.rs
@@ -218,35 +218,33 @@ pub unsafe fn create_global_object(
cx: *mut JSContext,
class: &'static JSClass,
private: *const libc::c_void,
- trace: TraceHook)
- -> *mut JSObject {
+ trace: TraceHook,
+ rval: MutableHandleObject) {
+ assert!(rval.is_null());
+
let mut options = CompartmentOptions::default();
options.behaviors_.version_ = JSVersion::JSVERSION_ECMA_5;
options.creationOptions_.traceGlobal_ = Some(trace);
options.creationOptions_.sharedMemoryAndAtomics_ = true;
- rooted!(in(cx) let obj =
- JS_NewGlobalObject(cx,
- class,
- ptr::null_mut(),
- OnNewGlobalHookOption::DontFireOnNewGlobalHook,
- &options));
- if obj.is_null() {
- return ptr::null_mut();
- }
+ rval.set(JS_NewGlobalObject(cx,
+ class,
+ ptr::null_mut(),
+ OnNewGlobalHookOption::DontFireOnNewGlobalHook,
+ &options));
+ assert!(!rval.is_null());
// Initialize the reserved slots before doing anything that can GC, to
// avoid getting trace hooks called on a partially initialized object.
- JS_SetReservedSlot(obj.get(), DOM_OBJECT_SLOT, PrivateValue(private));
+ JS_SetReservedSlot(rval.get(), DOM_OBJECT_SLOT, PrivateValue(private));
let proto_array: Box<ProtoOrIfaceArray> =
box [0 as *mut JSObject; PrototypeList::PROTO_OR_IFACE_LENGTH];
- JS_SetReservedSlot(obj.get(),
+ JS_SetReservedSlot(rval.get(),
DOM_PROTOTYPE_SLOT,
PrivateValue(Box::into_raw(proto_array) as *const libc::c_void));
- let _ac = JSAutoCompartment::new(cx, obj.get());
- JS_FireOnNewGlobalObject(cx, obj.handle());
- obj.get()
+ let _ac = JSAutoCompartment::new(cx, rval.get());
+ JS_FireOnNewGlobalObject(cx, rval.handle());
}
/// Create and define the interface object of a callback interface.