diff options
author | Tim Cuthbertson <tim@gfxmonk.net> | 2015-03-20 11:28:04 +1100 |
---|---|---|
committer | Tim Cuthbertson <tim@gfxmonk.net> | 2015-03-20 22:14:14 +1100 |
commit | 0052a27b1a1882a6b67f2f424d90a0b325480872 (patch) | |
tree | 203e1a82af1c6435c3dbc4656f67383c6ee5559f /components/script/dom/bindings/codegen/CodegenRust.py | |
parent | dea36f981650f027902b4f71f0cdabd2da69fe21 (diff) | |
download | servo-0052a27b1a1882a6b67f2f424d90a0b325480872.tar.gz servo-0052a27b1a1882a6b67f2f424d90a0b325480872.zip |
Free the interface prototype array when Window is finalized
Fixes #1871
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 583a0233c7f..92b05cb5780 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -4061,7 +4061,12 @@ let this: *const %s = native_from_reflector::<%s>(obj); assert(False) def finalizeHook(descriptor, hookName, context): - release = """\ + release = "" + if descriptor.isGlobal(): + release += """\ +finalize_global(obj); +""" + release += """\ let _ = Box::from_raw(this as *mut %s); debug!("%s finalize: {:p}", this);\ """ % (descriptor.concreteType, descriptor.concreteType) @@ -4650,6 +4655,7 @@ class CGBindingRoot(CGThing): 'dom::bindings::utils::{DOMJSClass, JSCLASS_DOM_GLOBAL}', 'dom::bindings::utils::{find_enum_string_index, get_array_index_from_id}', 'dom::bindings::utils::{get_property_on_prototype, get_proto_or_iface_array}', + 'dom::bindings::utils::finalize_global', 'dom::bindings::utils::has_property_on_prototype', 'dom::bindings::utils::is_platform_object', 'dom::bindings::utils::{Reflectable}', |