This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [v3] testsuite_allocator fixups


Benjamin Kosnik wrote:

Simplify this stuff.


I'm adding also the bitmap_allocator bits. Tested x86-linux.

Paolo.

/////////////
2004-10-30  Paolo Carlini  <pcarlini@suse.de>

	* include/ext/bitmap_allocator.h (allocate(size_type)): Minor tweak.

	* testsuite/ext/bitmap_allocator/check_delete.cc: New.
	* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
diff -urN libstdc++-v3-orig/include/ext/bitmap_allocator.h libstdc++-v3/include/ext/bitmap_allocator.h
--- libstdc++-v3-orig/include/ext/bitmap_allocator.h	2004-10-21 02:06:00.000000000 +0200
+++ libstdc++-v3/include/ext/bitmap_allocator.h	2004-10-30 23:05:53.000000000 +0200
@@ -1087,13 +1087,13 @@
       pointer 
       allocate(size_type __n)
       {
-	if (__builtin_expect(__n > this->max_size(), false))
-	  std::__throw_bad_alloc();
-
 	if (__builtin_expect(__n == 1, true))
 	  return this->_M_allocate_single_object();
 	else
-	  { 
+	  {
+	    if (__builtin_expect(__n > this->max_size(), false))
+	      std::__throw_bad_alloc();
+
 	    const size_type __b = __n * sizeof(value_type);
 	    return reinterpret_cast<pointer>(::operator new(__b));
 	  }
diff -urN libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_delete.cc libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
--- libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_delete.cc	1970-01-01 01:00:00.000000000 +0100
+++ libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc	2004-10-30 21:07:31.000000000 +0200
@@ -0,0 +1,54 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.1.1 allocator members
+
+#include <cstdlib>
+#include <ext/bitmap_allocator.h>
+#include <testsuite_hooks.h>
+#include <testsuite_allocator.h>
+
+using __gnu_cxx::bitmap_allocator;
+
+void* 
+operator new(std::size_t n) throw(std::bad_alloc)
+{
+  new_called = true;
+  return std::malloc(n);
+}
+
+void
+operator delete(void *v) throw()
+{
+  delete_called = true;
+  return std::free(v);
+}
+
+// These just help tracking down error messages.
+void test01() 
+{ 
+  bool test __attribute__((unused)) = true;
+  typedef bitmap_allocator<unsigned int> allocator_type;
+  VERIFY( bool(__gnu_test::check_delete<allocator_type, true>()) ); 
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff -urN libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_new.cc libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
--- libstdc++-v3-orig/testsuite/ext/bitmap_allocator/check_new.cc	1970-01-01 01:00:00.000000000 +0100
+++ libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc	2004-10-30 21:07:21.000000000 +0200
@@ -0,0 +1,54 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 20.4.1.1 allocator members
+
+#include <cstdlib>
+#include <ext/bitmap_allocator.h>
+#include <testsuite_hooks.h>
+#include <testsuite_allocator.h>
+
+using __gnu_cxx::bitmap_allocator;
+
+void* 
+operator new(std::size_t n) throw(std::bad_alloc)
+{
+  new_called = true;
+  return std::malloc(n);
+}
+
+void
+operator delete(void *v) throw()
+{
+  delete_called = true;
+  return std::free(v);
+}
+
+// These just help tracking down error messages.
+void test01() 
+{ 
+  bool test __attribute__((unused)) = true;
+  typedef bitmap_allocator<unsigned int> allocator_type;
+  VERIFY( bool(__gnu_test::check_new<allocator_type, true>()) ); 
+}
+
+int main()
+{
+  test01();
+  return 0;
+}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]