Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use jsapi::JSClass to make DOMJSClass instead of jsapi::Class #13049

Closed
Closed
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Use jsapi::JSClass to make DOMJSClass instead of jsapi::Class

  • Loading branch information
tetsuharuohzeki committed Aug 26, 2016
commit 15f9ab05bbf7653afb5806f8b6eb1da2ecde5ece
@@ -36,6 +36,9 @@
AUTOGENERATED_WARNING_COMMENT = \
"/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */\n\n"
FINALIZE_HOOK_NAME = '_finalize'
FINALIZE_HOOK_NAME_GENERIC = FINALIZE_HOOK_NAME + "<T>" # use for define the function
FINALIZE_HOOK_NAME_FOR_PROXYTRAP = FINALIZE_HOOK_NAME + "::<FreeOp>"
FINALIZE_HOOK_NAME_FOR_JSCLASSOPS = FINALIZE_HOOK_NAME + "::<JSFreeOp>"
TRACE_HOOK_NAME = '_trace'
CONSTRUCT_HOOK_NAME = '_constructor'
HASINSTANCE_HOOK_NAME = '_hasInstance'
@@ -1977,7 +1980,7 @@ def define(self):
args = {
"domClass": DOMClass(self.descriptor),
"enumerateHook": "None",
"finalizeHook": FINALIZE_HOOK_NAME,
"finalizeHook": FINALIZE_HOOK_NAME_FOR_JSCLASSOPS,
"flags": "0",
"name": str_to_const_array(self.descriptor.interface.identifier.name),
"resolveHook": "None",
@@ -1994,7 +1997,7 @@ def define(self):
elif self.descriptor.weakReferenceable:
args["slots"] = "2"
return """\
static CLASS_OPS: js::jsapi::ClassOps = js::jsapi::ClassOps {
static CLASS_OPS: js::jsapi::JSClassOps = js::jsapi::JSClassOps {
addProperty: None,
delProperty: None,
getProperty: None,
@@ -2010,15 +2013,13 @@ def define(self):
};
static Class: DOMJSClass = DOMJSClass {
base: js::jsapi::Class {
base: js::jsapi::JSClass {
name: %(name)s as *const u8 as *const libc::c_char,
flags: JSCLASS_IS_DOMJSCLASS | %(flags)s |
(((%(slots)s) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT)
/* JSCLASS_HAS_RESERVED_SLOTS(%(slots)s) */,
cOps: &CLASS_OPS,
spec: ptr::null(),
ext: ptr::null(),
oOps: ptr::null(),
reserved: [0 as *mut _; 3],
},
dom_class: %(domClass)s
};""" % args
@@ -2390,7 +2391,7 @@ def CreateBindingJSObject(descriptor, parent=None):
""" % (descriptor.name, parent)
else:
create += ("rooted!(in(cx) let obj = JS_NewObjectWithGivenProto(\n"
" cx, &Class.base as *const js::jsapi::Class as *const JSClass, proto.handle()));\n"
" cx, &Class.base as *const JSClass, proto.handle()));\n"
"assert!(!obj.is_null());\n"
"\n"
"JS_SetReservedSlot(obj.get(), DOM_OBJECT_SLOT,\n"
@@ -2529,7 +2530,7 @@ def definition_body(self):
rooted!(in(cx) let mut obj = ptr::null_mut());
create_global_object(
cx,
&*(&Class.base as *const js::jsapi::Class as *const _),
&Class.base,
raw as *const libc::c_void,
_trace,
obj.handle_mut());
@@ -2841,7 +2842,7 @@ def defineAliasesFor(m):
holderClass = "ptr::null()"
holderProto = "HandleObject::null()"
else:
holderClass = "&Class.base as *const js::jsapi::Class as *const JSClass"
holderClass = "&Class.base as *const JSClass"
holderProto = "prototype.handle()"
code.append(CGGeneric("""
rooted!(in(cx) let mut unforgeable_holder = ptr::null_mut());
@@ -2953,7 +2954,7 @@ def definition_body(self):
"delete": customDelete,
"getOwnEnumerablePropertyKeys": getOwnEnumerablePropertyKeys,
"trace": TRACE_HOOK_NAME,
"finalize": FINALIZE_HOOK_NAME,
"finalize": FINALIZE_HOOK_NAME_FOR_PROXYTRAP,
}

return CGGeneric("""\
@@ -5186,8 +5187,8 @@ class CGClassFinalizeHook(CGAbstractClassHook):
A hook for finalize, used to release our native object.
"""
def __init__(self, descriptor):
args = [Argument('*mut FreeOp', '_fop'), Argument('*mut JSObject', 'obj')]
CGAbstractClassHook.__init__(self, descriptor, FINALIZE_HOOK_NAME,
args = [Argument('*mut T', '_fop'), Argument('*mut JSObject', 'obj')]
CGAbstractClassHook.__init__(self, descriptor, FINALIZE_HOOK_NAME_GENERIC,
'void', args)

def generate_code(self):
@@ -100,7 +100,7 @@ unsafe impl Sync for DOMClass {}
#[derive(Copy)]
pub struct DOMJSClass {
/// The actual JSClass.
pub base: js::jsapi::Class,
pub base: js::jsapi::JSClass,
/// Associated data for DOM object reflectors.
pub dom_class: DOMClass,
}
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.