aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2013-09-04 10:33:50 -0700
committerbors-servo <release+servo@mozilla.com>2013-09-04 10:33:50 -0700
commit3afcddcc67f9829302d8b22175392366e7bbb0a2 (patch)
treed6a19849bedd9e9733ccd226aefc0bc56bd4d835 /src/components/script/dom/bindings/codegen/CodegenRust.py
parentdf2906fc29b4b22be753ae18349ec0ee08e7c0e6 (diff)
parent329f92a41d13913c7ffe4b845c668a742bc82b3a (diff)
downloadservo-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.py19
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():