diff options
author | Igor Matuszewski <Xanewok@gmail.com> | 2018-03-13 14:57:09 +0100 |
---|---|---|
committer | Igor Matuszewski <Xanewok@gmail.com> | 2018-03-16 16:53:30 +0100 |
commit | 760e0a5b5792fb3c8967aee53cc41e1e25adf07d (patch) | |
tree | 89459751b65ff9d83daf2c5a5595c92d6826a4f3 /components/script/dom | |
parent | b49acf40baf2e8559c5a067c609323c2b5400eef (diff) | |
download | servo-760e0a5b5792fb3c8967aee53cc41e1e25adf07d.tar.gz servo-760e0a5b5792fb3c8967aee53cc41e1e25adf07d.zip |
Root JS object members in dictionaries
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 8 | ||||
-rw-r--r-- | components/script/dom/testbinding.rs | 2 |
2 files changed, 4 insertions, 6 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 1207b050797..916c8770d34 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -1121,13 +1121,10 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, templateBody = "${val}.get().to_object()" default = "ptr::null_mut()" - # TODO: Do we need to do the same for dictionaries? - if isMember == "Union": + if isMember in ("Dictionary", "Union"): templateBody = "RootedTraceableBox::from_box(Heap::boxed(%s))" % templateBody default = "RootedTraceableBox::new(Heap::default())" declType = CGGeneric("RootedTraceableBox<Heap<*mut JSObject>>") - elif isMember == "Dictionary": - declType = CGGeneric("Heap<*mut JSObject>") else: # TODO: Need to root somehow # https://github.com/servo/servo/issues/6382 @@ -6168,7 +6165,8 @@ class CGDictionary(CGThing): conversion = self.getMemberConversion(memberInfo, member.type) if isInitial: return CGGeneric("%s: %s,\n" % (name, conversion.define())) - if member.type.isAny() or member.type.isObject(): + # TODO: Root Heap<JSVal> using RootedTraceableBox + if member.type.isAny(): return CGGeneric("dictionary.%s.set(%s);\n" % (name, conversion.define())) return CGGeneric("dictionary.%s = %s;\n" % (name, conversion.define())) diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 80159a30068..d450c282885 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -369,7 +369,7 @@ impl TestBindingMethods for TestBinding { nullableFloatValue: None, nullableLongLongValue: None, nullableLongValue: None, - nullableObjectValue: Heap::default(), + nullableObjectValue: RootedTraceableBox::new(Heap::default()), nullableOctetValue: None, nullableShortValue: None, nullableStringValue: None, |