Bug 1302826: Rename ServoNodeData's default destructor to Servo_NodeData_DefaultDelete. r?xidorn draft
authorEmilio Cobos Álvarez <ecoal95@gmail.com>
Tue, 13 Sep 2016 06:03:46 -0700
changeset 413791 5b3ccea873986844531b0e272f55c9c2a9624342
parent 413790 47cb8cfb900317b3b5c8613a75a82e8d47f9e47a
child 413792 cfec73f138c1068028c26bf19203d9523d5794eb
push id29513
push userbmo:ecoal95@gmail.com
push dateWed, 14 Sep 2016 21:36:26 +0000
reviewersxidorn
bugs1302826
milestone51.0a1
Bug 1302826: Rename ServoNodeData's default destructor to Servo_NodeData_DefaultDelete. r?xidorn The previous version of this was unsound, and was declaring the same extern "C" function with two different prototypes. Move the implementation to ServoBindings.cpp, with a doc comment that is also generated in the Servo file. Signed-off-by: Emilio Cobos Álvarez <ecoal95@gmail.com> MozReview-Commit-ID: GtQHaFnbwLw
dom/base/nsINode.h
layout/style/ServoBindings.cpp
--- a/dom/base/nsINode.h
+++ b/dom/base/nsINode.h
@@ -51,25 +51,29 @@ class nsIPrincipal;
 class nsIURI;
 class nsNodeSupportsWeakRefTearoff;
 class nsNodeWeakReference;
 class nsDOMMutationObserver;
 
 // We declare the bare minimum infrastructure here to allow us to have a
 // UniquePtr<ServoNodeData> on nsINode.
 struct ServoNodeData;
-extern "C" void Servo_NodeData_Drop(ServoNodeData*);
+/**
+ * NB: This function is not meant to be implemented in Servo, it's a proxy to
+ * a Servo function instead, see the comment in layout/style/ServoBindings.h.
+ */
+void Servo_NodeData_DefaultDelete(ServoNodeData*);
 namespace mozilla {
 template<>
 class DefaultDelete<ServoNodeData>
 {
 public:
   void operator()(ServoNodeData* aPtr) const
   {
-    Servo_NodeData_Drop(aPtr);
+    Servo_NodeData_DefaultDelete(aPtr);
   }
 };
 } // namespace mozilla
 
 namespace mozilla {
 class EventListenerManager;
 namespace dom {
 /**
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -43,16 +43,25 @@ using namespace mozilla::dom;
   }
 
 IMPL_STRONG_REF_TYPE_FOR(ServoComputedValues)
 IMPL_STRONG_REF_TYPE_FOR(RawServoStyleSheet)
 IMPL_STRONG_REF_TYPE_FOR(ServoDeclarationBlock)
 
 #undef IMPL_STRONG_REF_TYPE_FOR
 
+/**
+ * NB: Declared in dom/base/nsINode.h, not to be implemented from Servo.
+ */
+void
+Servo_NodeData_DefaultDelete(ServoNodeData* aServoNodeData)
+{
+  Servo_NodeData_Drop(aServoNodeData);
+}
+
 uint32_t
 Gecko_ChildrenCount(RawGeckoNodeBorrowed aNode)
 {
   return aNode->GetChildCount();
 }
 
 bool
 Gecko_NodeIsElement(RawGeckoNodeBorrowed aNode)