re PR libstdc++/28765 (__gnu_cxx::__vstring::clear() is slow)
authorPaolo Carlini <pcarlini@suse.de>
Fri, 18 Aug 2006 15:42:05 +0000 (15:42 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 18 Aug 2006 15:42:05 +0000 (15:42 +0000)
2006-08-18  Paolo Carlini  <pcarlini@suse.de>

PR libstdc++/28765
* include/ext/rc_string_base.h (_M_clear): New.
* include/ext/sso_string_base.h (_M_clear): Likewise.
* include/ext/vstring.h (clear): Use it.

From-SVN: r116240

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/rc_string_base.h
libstdc++-v3/include/ext/sso_string_base.h
libstdc++-v3/include/ext/vstring.h

index a9556d7..9d692ab 100644 (file)
@@ -1,3 +1,10 @@
+2006-08-18  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/28765
+       * include/ext/rc_string_base.h (_M_clear): New.
+       * include/ext/sso_string_base.h (_M_clear): Likewise.
+       * include/ext/vstring.h (clear): Use it.
+
 2006-08-15  Paolo Carlini  <pcarlini@suse.de>
 
        * include/tr1/random (poisson_distribution<>::_M_initialize): Add.
index eec6f2d..1a896d8 100644 (file)
@@ -338,6 +338,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
       void
       _M_erase(size_type __pos, size_type __n);
 
+      void
+      _M_clear()
+      { _M_erase(size_type(0), _M_length()); }
+
       bool
       _M_compare(const __rc_string_base&) const
       { return false; }
index 1282eb6..3098826 100644 (file)
@@ -226,6 +226,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
       void
       _M_erase(size_type __pos, size_type __n);
 
+      void
+      _M_clear()
+      { _M_set_length(0); }
+
       bool
       _M_compare(const __sso_string_base&) const
       { return false; }
index 5cd84b1..d858949 100644 (file)
@@ -409,7 +409,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
        */
       void
       clear()
-      { this->_M_erase(size_type(0), this->size()); }
+      { this->_M_clear(); }
 
       /**
        *  Returns true if the %string is empty.  Equivalent to *this == "".