diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-06-07 10:47:14 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-06-07 10:47:14 -0500 |
commit | ca6a34a1cdf3b74f9eab04cf6ff914e47b37b640 (patch) | |
tree | 12dff078beb6327a6d23f2f1c22cebbffd1175b9 /components/script/dom | |
parent | 1587d8a301983b881b038c7e443ba6d1deb1f72f (diff) | |
parent | 15c4f7fe2d399ec49175428d5b8ad3f3aa70f6ae (diff) | |
download | servo-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.py | 4 | ||||
-rw-r--r-- | components/script/dom/bindings/utils.rs | 11 |
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); |