2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
authorbfulgham@webkit.org <bfulgham@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Jul 2009 00:47:46 +0000 (00:47 +0000)
committerbfulgham@webkit.org <bfulgham@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Jul 2009 00:47:46 +0000 (00:47 +0000)
        Reviewed by Darin Adler.

        Add RefCountedCustomAllocated to RefCounted.h
        https://bugs.webkit.org/show_bug.cgi?id=27232

        Some class which are inherited from RefCounted customize
        operator new, but RefCounted is inherited from Noncopyable
        which will be inherited from FastAllocBase. To avoid
        conflicts Noncopyable inheriting was moved down to RefCounted
        and to avoid double inheritance this class has been added.

        * wtf/RefCounted.h:
        (WTF::RefCountedCustomAllocated::deref):
        (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@45885 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/wtf/RefCounted.h

index 5d84795..dbbea15 100644 (file)
@@ -2,6 +2,23 @@
 
         Reviewed by Darin Adler.
 
+        Add RefCountedCustomAllocated to RefCounted.h
+        https://bugs.webkit.org/show_bug.cgi?id=27232
+
+        Some class which are inherited from RefCounted customize
+        operator new, but RefCounted is inherited from Noncopyable
+        which will be inherited from FastAllocBase. To avoid
+        conflicts Noncopyable inheriting was moved down to RefCounted
+        and to avoid double inheritance this class has been added.
+
+        * wtf/RefCounted.h:
+        (WTF::RefCountedCustomAllocated::deref):
+        (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):
+
+2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
+
+        Reviewed by Darin Adler.
+
         Add NoncopyableCustomAllocated to Noncopyable.h.
         https://bugs.webkit.org/show_bug.cgi?id=27228
         
index c174145..761a856 100644 (file)
@@ -29,7 +29,7 @@ namespace WTF {
 // This base class holds the non-template methods and attributes.
 // The RefCounted class inherits from it reducing the template bloat
 // generated by the compiler (technique called template hoisting).
-class RefCountedBase : Noncopyable {
+class RefCountedBase {
 public:
     void ref()
     {
@@ -101,7 +101,7 @@ private:
 };
 
 
-template<class T> class RefCounted : public RefCountedBase {
+template<class T> class RefCounted : public RefCountedBase, public Noncopyable {
 public:
     void deref()
     {
@@ -115,8 +115,23 @@ protected:
     }
 };
 
+template<class T> class RefCountedCustomAllocated : public RefCountedBase, public NoncopyableCustomAllocated {
+public:
+    void deref()
+    {
+        if (derefBase())
+            delete static_cast<T*>(this);
+    }
+
+protected:
+    ~RefCountedCustomAllocated()
+    {
+    }
+};
+
 } // namespace WTF
 
 using WTF::RefCounted;
+using WTF::RefCountedCustomAllocated;
 
 #endif // RefCounted_h