aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen
diff options
context:
space:
mode:
authorConnor Brewster <connor.brewster@eagles.oc.edu>2017-06-12 21:50:53 -0600
committerConnor Brewster <connor.brewster@eagles.oc.edu>2017-06-13 15:24:03 -0600
commit0713257adde476cc0a0f74365acf52f19fcd9440 (patch)
treeb751151580fbd747294e2d752bc39d6f3905e133 /components/script/dom/bindings/codegen
parent147dfcc99bd546e84eb77dddce754365aacb543c (diff)
downloadservo-0713257adde476cc0a0f74365acf52f19fcd9440.tar.gz
servo-0713257adde476cc0a0f74365acf52f19fcd9440.zip
Generate GetConstructorObject for all interfaces
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py2
-rw-r--r--components/script/dom/bindings/codegen/Configuration.py6
2 files changed, 6 insertions, 2 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index bf6ca70e6c0..130d2008448 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2863,7 +2863,7 @@ create_noncallback_interface_object(cx,
%(length)s,
interface.handle_mut());
assert!(!interface.is_null());""" % properties))
- if self.descriptor.hasDescendants():
+ if self.descriptor.shouldCacheConstructor():
code.append(CGGeneric("""\
assert!((*cache)[PrototypeList::Constructor::%(id)s as usize].is_null());
(*cache)[PrototypeList::Constructor::%(id)s as usize] = interface.get();
diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py
index 0fe9bf6c004..df6c0a36c76 100644
--- a/components/script/dom/bindings/codegen/Configuration.py
+++ b/components/script/dom/bindings/codegen/Configuration.py
@@ -398,7 +398,11 @@ class Descriptor(DescriptorProvider):
assert self.interface.hasInterfaceObject()
if self.interface.getExtendedAttribute("Inline"):
return False
- return self.interface.isCallback() or self.interface.isNamespace() or self.hasDescendants()
+ return (self.interface.isCallback() or self.interface.isNamespace() or
+ self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor"))
+
+ def shouldCacheConstructor(self):
+ return self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor")
def isExposedConditionally(self):
return self.interface.isExposedConditionally()