DefineDOMInterfaceMethod now takes a SafeJSContext instead of a JSContext

as first argument.
This commit is contained in:
marmeladema 2019-07-21 01:25:29 +01:00
parent aa0e4f5c76
commit 6e4caf1153
3 changed files with 9 additions and 8 deletions

View file

@ -47,7 +47,7 @@ fn main() {
let mut phf = File::create(&phf).unwrap();
write!(
&mut phf,
"pub static MAP: phf::Map<&'static [u8], unsafe fn(*mut JSContext, HandleObject)> = "
"pub static MAP: phf::Map<&'static [u8], unsafe fn(JSContext, HandleObject)> = "
)
.unwrap();
map.build(&mut phf).unwrap();

View file

@ -3268,7 +3268,7 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
def __init__(self, descriptor):
assert descriptor.interface.hasInterfaceObject()
args = [
Argument('*mut JSContext', 'cx'),
Argument('SafeJSContext', 'cx'),
Argument('HandleObject', 'global'),
]
CGAbstractMethod.__init__(self, descriptor, 'DefineDOMInterface',
@ -3285,12 +3285,12 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
return CGGeneric("""\
assert!(!global.get().is_null());
if !ConstructorEnabled(SafeJSContext::from_ptr(cx), global) {
if !ConstructorEnabled(cx, global) {
return;
}
rooted!(in(cx) let mut proto = ptr::null_mut::<JSObject>());
%s(SafeJSContext::from_ptr(cx), global, proto.handle_mut());
rooted!(in(*cx) let mut proto = ptr::null_mut::<JSObject>());
%s(cx, global, proto.handle_mut());
assert!(!proto.is_null());""" % (function,))
@ -7312,7 +7312,7 @@ class GlobalGenRoots():
def InterfaceObjectMap(config):
mods = [
"crate::dom::bindings::codegen",
"js::jsapi::JSContext",
"crate::script_runtime::JSContext",
"js::rust::HandleObject",
"phf",
]

View file

@ -13,6 +13,7 @@ use crate::dom::bindings::inheritance::TopTypeId;
use crate::dom::bindings::str::DOMString;
use crate::dom::bindings::trace::trace_object;
use crate::dom::windowproxy;
use crate::script_runtime::JSContext as SafeJSContext;
use js::glue::{CallJitGetterOp, CallJitMethodOp, CallJitSetterOp, IsWrapper};
use js::glue::{GetCrossCompartmentWrapper, JS_GetReservedSlot, WrapperNew};
use js::glue::{UnwrapObjectDynamic, RUST_JSID_TO_INT, RUST_JSID_TO_STRING};
@ -353,7 +354,7 @@ pub unsafe extern "C" fn enumerate_global(
return false;
}
for init_fun in InterfaceObjectMap::MAP.values() {
init_fun(cx, Handle::from_raw(obj));
init_fun(SafeJSContext::from_ptr(cx), Handle::from_raw(obj));
}
true
}
@ -388,7 +389,7 @@ pub unsafe extern "C" fn resolve_global(
let bytes = slice::from_raw_parts(ptr, length as usize);
if let Some(init_fun) = InterfaceObjectMap::MAP.get(bytes) {
init_fun(cx, Handle::from_raw(obj));
init_fun(SafeJSContext::from_ptr(cx), Handle::from_raw(obj));
*rval = true;
} else {
*rval = false;