diff options
author | bors-servo <release+servo@mozilla.com> | 2013-09-04 10:33:50 -0700 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2013-09-04 10:33:50 -0700 |
commit | 3afcddcc67f9829302d8b22175392366e7bbb0a2 (patch) | |
tree | d6a19849bedd9e9733ccd226aefc0bc56bd4d835 /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | df2906fc29b4b22be753ae18349ec0ee08e7c0e6 (diff) | |
parent | 329f92a41d13913c7ffe4b845c668a742bc82b3a (diff) | |
download | servo-3afcddcc67f9829302d8b22175392366e7bbb0a2.tar.gz servo-3afcddcc67f9829302d8b22175392366e7bbb0a2.zip |
auto merge of #820 : jdm/servo/tracehook, r=metajack
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 1fa65e67c02..1f9bd685ce7 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -3961,10 +3961,9 @@ class CGAbstractClassHook(CGAbstractExternMethod): args) def definition_body_prologue(self): - return "" #XXXjdm we may want to do a proper unwrap here return """ - let this: *%s = &(unwrap::<*rust_box<%s>>(obj).payload); -""" % (self.descriptor.nativeType, self.descriptor.nativeType) + let this: *%s = &(*unwrap::<*rust_box<%s>>(obj)).payload; +""" % (self.descriptor.concreteType, self.descriptor.concreteType) def definition_body(self): return self.definition_body_prologue() + self.generate_code() @@ -3990,6 +3989,18 @@ let _: @mut %s = cast::transmute(RUST_JSVAL_TO_PRIVATE(val)); #return clearWrapper + release return release +class CGClassTraceHook(CGAbstractClassHook): + """ + A hook to trace through our native object; used for GC and CC + """ + def __init__(self, descriptor): + args = [Argument('*mut JSTracer', 'trc'), Argument('*JSObject', 'obj')] + CGAbstractClassHook.__init__(self, descriptor, TRACE_HOOK_NAME, 'void', + args) + + def generate_code(self): + return " (*this).trace(%s);" % self.args[0].name + class CGClassConstructHook(CGAbstractExternMethod): """ JS-visible constructor for our objects @@ -4154,7 +4165,7 @@ class CGDescriptor(CGThing): # Only generate a trace hook if the class wants a custom hook. if (descriptor.customTrace): - #cgThings.append(CGClassTraceHook(descriptor)) + cgThings.append(CGClassTraceHook(descriptor)) pass if descriptor.interface.hasInterfaceObject(): |