Unwind: hoist placement delete into base class
authorSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 6 Feb 2015 20:34:17 +0000 (20:34 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Fri, 6 Feb 2015 20:34:17 +0000 (20:34 +0000)
Move the placement delete into the base class.  This permits the proper emission
of the virtual destructor in UnwindCursor by using the class specific placement
delete instead of the normal single element ::operator delete.  With this patch,
we can finally build libunwind as a DSO without a runtime dependency on
libc++/libc++abi.

llvm-svn: 228436

libcxxabi/src/Unwind/UnwindCursor.hpp

index 3121693..e65ae2c 100644 (file)
@@ -368,6 +368,10 @@ private:
 
 class _LIBUNWIND_HIDDEN AbstractUnwindCursor {
 public:
+  // NOTE: provide a class specific placement deallocation function (S5.3.4 p20)
+  // This avoids an unnecessary dependency to libc++abi.
+  void operator delete(void *, size_t) {}
+
   virtual ~AbstractUnwindCursor() {}
   virtual bool validReg(int) { _LIBUNWIND_ABORT("validReg not implemented"); }
   virtual unw_word_t getReg(int) { _LIBUNWIND_ABORT("getReg not implemented"); }
@@ -431,8 +435,6 @@ public:
   virtual void        saveVFPAsX();
 #endif
 
-  void            operator delete(void *, size_t) {}
-
 private:
 
 #if LIBCXXABI_ARM_EHABI