aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-06-07 10:47:14 -0500
committerbors-servo <metajack+bors@gmail.com>2015-06-07 10:47:14 -0500
commitca6a34a1cdf3b74f9eab04cf6ff914e47b37b640 (patch)
tree12dff078beb6327a6d23f2f1c22cebbffd1175b9 /components/script/dom
parent1587d8a301983b881b038c7e443ba6d1deb1f72f (diff)
parent15c4f7fe2d399ec49175428d5b8ad3f3aa70f6ae (diff)
downloadservo-ca6a34a1cdf3b74f9eab04cf6ff914e47b37b640.tar.gz
servo-ca6a34a1cdf3b74f9eab04cf6ff914e47b37b640.zip
Auto merge of #6299 - GreenRecycleBin:#6271, r=Ms2ger
get_proto_or_iface_array now returns *mut ProtoOrIfaceArray Fix #6271 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6299) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py4
-rw-r--r--components/script/dom/bindings/utils.rs11
2 files changed, 8 insertions, 7 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 7a3c1a3abb1..e33314c0f6d 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2165,11 +2165,11 @@ assert!(((*JS_GetClass(global)).flags & JSCLASS_DOM_GLOBAL) != 0);
/* Check to see whether the interface objects are already installed */
let proto_or_iface_array = get_proto_or_iface_array(global);
-let cached_object: *mut JSObject = *proto_or_iface_array.offset(%s as isize);
+let cached_object: *mut JSObject = (*proto_or_iface_array)[%s as usize];
if cached_object.is_null() {
let tmp: *mut JSObject = CreateInterfaceObjects(cx, global, receiver);
assert!(!tmp.is_null());
- *proto_or_iface_array.offset(%s as isize) = tmp;
+ (*proto_or_iface_array)[%s as usize] = tmp;
tmp
} else {
cached_object
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index e7db5ce70ee..bee42bbe2d3 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -156,10 +156,10 @@ unsafe impl Sync for DOMJSClass {}
/// Returns the ProtoOrIfaceArray for the given global object.
/// Fails if `global` is not a DOM global object.
-pub fn get_proto_or_iface_array(global: *mut JSObject) -> *mut *mut JSObject {
+pub fn get_proto_or_iface_array(global: *mut JSObject) -> *mut ProtoOrIfaceArray {
unsafe {
assert!(((*JS_GetClass(global)).flags & JSCLASS_DOM_GLOBAL) != 0);
- JS_GetReservedSlot(global, DOM_PROTOTYPE_SLOT).to_private() as *mut *mut JSObject
+ JS_GetReservedSlot(global, DOM_PROTOTYPE_SLOT).to_private() as *mut ProtoOrIfaceArray
}
}
@@ -330,7 +330,8 @@ pub unsafe extern fn throwing_constructor(cx: *mut JSContext, _argc: c_uint,
return 0;
}
-type ProtoOrIfaceArray = [*mut JSObject; PrototypeList::ID::Count as usize];
+/// An array of *mut JSObject of size PrototypeList::ID::Count
+pub type ProtoOrIfaceArray = [*mut JSObject; PrototypeList::ID::Count as usize];
/// Construct and cache the ProtoOrIfaceArray for the given global.
/// Fails if the argument is not a DOM global.
@@ -594,12 +595,12 @@ pub fn create_dom_global(cx: *mut JSContext, class: *const JSClass)
/// Drop the resources held by reserved slots of a global object
pub unsafe fn finalize_global(obj: *mut JSObject) {
let _: Box<ProtoOrIfaceArray> =
- Box::from_raw(get_proto_or_iface_array(obj) as *mut ProtoOrIfaceArray);
+ Box::from_raw(get_proto_or_iface_array(obj));
}
/// Trace the resources held by reserved slots of a global object
pub unsafe fn trace_global(tracer: *mut JSTracer, obj: *mut JSObject) {
- let array = get_proto_or_iface_array(obj) as *mut ProtoOrIfaceArray;
+ let array = get_proto_or_iface_array(obj);
for &proto in (*array).iter() {
if !proto.is_null() {
trace_object(tracer, "prototype", proto);