From 787108deaf83cd7bd3e26e4c3aee11469c21c4c8 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 4 Mar 2014 15:08:44 +0100 Subject: [PATCH] Pass &JS to the Wrap functions in codegen. --- .../script/dom/bindings/codegen/CodegenRust.py | 13 +++++++------ src/components/script/dom/bindings/js.rs | 5 ++--- src/components/script/dom/bindings/utils.rs | 2 +- src/components/script/dom/document.rs | 2 +- src/components/script/dom/node.rs | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 71c46b09119..fd6d83d09ec 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -2600,7 +2600,7 @@ class CGWrapMethod(CGAbstractMethod): def __init__(self, descriptor): assert descriptor.interface.hasInterfacePrototypeObject() if not descriptor.createGlobal: - args = [Argument('*JSContext', 'aCx'), Argument('*JSObject', 'aScope'), + args = [Argument('*JSContext', 'aCx'), Argument('&JS', 'aScope'), Argument(DOMObjectPointerArg(descriptor), 'aObject', mutable=True)] else: args = [Argument('*JSContext', 'aCx'), @@ -2610,11 +2610,12 @@ class CGWrapMethod(CGAbstractMethod): def definition_body(self): if not self.descriptor.createGlobal: return """ - assert!(aScope.is_not_null()); - assert!(((*JS_GetClass(aScope)).flags & JSCLASS_IS_GLOBAL) != 0); + let scope = aScope.reflector().get_jsobject(); + assert!(scope.is_not_null()); + assert!(((*JS_GetClass(scope)).flags & JSCLASS_IS_GLOBAL) != 0); - //JSAutoCompartment ac(aCx, aScope); - let proto = GetProtoObject(aCx, aScope, aScope); + //JSAutoCompartment ac(aCx, scope); + let proto = GetProtoObject(aCx, scope, scope); if proto.is_null() { return ptr::null(); } @@ -2623,7 +2624,7 @@ class CGWrapMethod(CGAbstractMethod): (*raw).mut_reflector().set_jsobject(obj); - return obj;""" % CreateBindingJSObject(self.descriptor, "aScope") + return obj;""" % CreateBindingJSObject(self.descriptor, "scope") else: return """ %s diff --git a/src/components/script/dom/bindings/js.rs b/src/components/script/dom/bindings/js.rs index 29efaddd840..9f8e44ba06f 100644 --- a/src/components/script/dom/bindings/js.rs +++ b/src/components/script/dom/bindings/js.rs @@ -32,11 +32,10 @@ impl Clone for JS { impl JS { pub fn new(mut obj: ~T, window: &JS, - wrap_fn: extern "Rust" fn(*JSContext, *JSObject, ~T) -> *JSObject) -> JS { + wrap_fn: extern "Rust" fn(*JSContext, &JS, ~T) -> *JSObject) -> JS { let cx = window.get().get_cx(); - let scope = window.get().reflector().get_jsobject(); let raw: *mut T = &mut *obj; - if wrap_fn(cx, scope, obj).is_null() { + if wrap_fn(cx, window, obj).is_null() { fail!("Could not eagerly wrap object"); } JS { diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 6f82d161811..b27b75646b5 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -494,7 +494,7 @@ pub trait Reflectable { pub fn reflect_dom_object (obj: ~T, window: &JS, - wrap_fn: extern "Rust" fn(*JSContext, *JSObject, ~T) -> *JSObject) + wrap_fn: extern "Rust" fn(*JSContext, &JS, ~T) -> *JSObject) -> JS { JS::new(obj, window, wrap_fn) } diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index f0bf35db84b..f2e6370f599 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -86,7 +86,7 @@ impl Document { pub fn reflect_document (document: ~D, window: &JS, - wrap_fn: extern "Rust" fn(*JSContext, *JSObject, ~D) -> *JSObject) + wrap_fn: extern "Rust" fn(*JSContext, &JS, ~D) -> *JSObject) -> JS { assert!(document.reflector().get_jsobject().is_null()); let raw_doc = reflect_dom_object(document, window, wrap_fn); diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 60e53504417..f323421a8d7 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -754,7 +754,7 @@ impl Node { pub fn reflect_node (node: ~N, document: &JS, - wrap_fn: extern "Rust" fn(*JSContext, *JSObject, ~N) -> *JSObject) + wrap_fn: extern "Rust" fn(*JSContext, &JS, ~N) -> *JSObject) -> JS { assert!(node.reflector().get_jsobject().is_null()); let node = reflect_dom_object(node, &document.get().window, wrap_fn);