]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
mt_allocator.h: Fixups.
authorStefan Olsson <stefan@snon.net>
Wed, 14 Jan 2004 18:54:18 +0000 (18:54 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Wed, 14 Jan 2004 18:54:18 +0000 (18:54 +0000)
2004-01-14  Stefan Olsson  <stefan@snon.net>

* include/ext/mt_allocator.h: Fixups.
* testsuite/performance/allocator.cc: Enable __mt_alloc tests.
* testsuite/performance/allocator_thread.cc: Same.

From-SVN: r75875

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/mt_allocator.h
libstdc++-v3/testsuite/performance/allocator.cc
libstdc++-v3/testsuite/performance/allocator_thread.cc

index fab586eb6bdaabfe844073ccda69f2093878ad15..2afafcaf9dbcd4d7db33265ae44de737d499d8b8 100644 (file)
@@ -1,3 +1,9 @@
+2004-01-14  Stefan Olsson  <stefan@snon.net>
+
+       * include/ext/mt_allocator.h: Fixups.
+       * testsuite/performance/allocator.cc: Enable __mt_alloc tests.
+       * testsuite/performance/allocator_thread.cc: Same.
+       
 2004-01-13  Benjamin Kosnik  <bkoz@redhat.com>
 
        * testsuite/performance/ifstream_extract_float.cc: Add higher
index ec77192db26127a094bb5b856dea545c343d8130..5b69e6375aefe4a7132af11c996899cc260706e3 100644 (file)
@@ -232,7 +232,7 @@ namespace __gnu_cxx
          * Requests larger than _S_max_bytes are handled by
          * new/delete directly
          */
-        if (__n > _S_max_bytes)
+        if (__n * sizeof(_Tp) > _S_max_bytes)
           {
             void* __ret = malloc(__n * sizeof(_Tp));
             if (!__ret)
@@ -263,7 +263,7 @@ namespace __gnu_cxx
         /*
          * Round up to power of 2 and figure out which bin to use
          */
-        size_t bin = _S_binmap[__n];
+        size_t bin = _S_binmap[__n * sizeof(_Tp)];
 
 #ifdef __GTHREADS
         size_t thread_id = _S_get_thread_id();
@@ -408,7 +408,7 @@ namespace __gnu_cxx
          * Requests larger than _S_max_bytes are handled by
          * malloc/free directly
          */
-        if (__n > _S_max_bytes)
+        if (__n * sizeof(_Tp) > _S_max_bytes)
           {
             free(__p);
             return;
@@ -417,7 +417,7 @@ namespace __gnu_cxx
         /*
          * Round up to power of 2 and figure out which bin to use
          */
-        size_t bin = _S_binmap[__n];
+        size_t bin = _S_binmap[__n * sizeof(_Tp)];
 
 #ifdef __GTHREADS
         size_t thread_id = _S_get_thread_id();
@@ -607,14 +607,8 @@ namespace __gnu_cxx
 
           /*
            * Initialize per thread key to hold pointer to
-           * _S_thread_freelist NOTE! Here's an ugly workaround - if
-           * _S_thread_key_destr is not explicitly called at least
-           * once it won't be linked into the application. This is the
-           * behavior of template methods and __gthread_key_create()
-           * takes only a pointer to the function and does not cause
-           * the compiler to create an instance.
+           * _S_thread_freelist
            */
-          _S_thread_key_destr(NULL);
           __gthread_key_create(&_S_thread_key, _S_thread_key_destr);
         }
 #endif
@@ -647,7 +641,6 @@ namespace __gnu_cxx
 
           if (!_S_bin[bin].free)
             __throw_bad_alloc();
-
           _S_bin[bin].used = (size_t*) malloc(sizeof(size_t) * __n);
 
           if (!_S_bin[bin].used)
index 88314a13bef497aae978224d7fe719193d026e18..c7299fc5508106f9a6611efbd67d9bf817a5ffd4 100644 (file)
@@ -133,12 +133,12 @@ int main(void)
   calibrate_iterations<vector<test_type> >();
   test_container(vector<test_type>());
   test_container(vector<test_type, malloc_allocator<test_type> >());
-  //test_container(vector<test_type, __mt_alloc<test_type> >());
+  test_container(vector<test_type, __mt_alloc<test_type> >());
 
   calibrate_iterations<list<test_type> >();
   test_container(list<test_type>());
   test_container(list<test_type, malloc_allocator<test_type> >());
-  //test_container(list<test_type, __mt_alloc<test_type> >());
+  test_container(list<test_type, __mt_alloc<test_type> >());
 
   return 0;
 }
index 98cf2b14291ad9f94abb51af560c4e9ec01f677c..68da4d7bcc2751ddc6c35f6c282427b08c132d20 100644 (file)
@@ -147,12 +147,12 @@ int main(void)
   calibrate_iterations<vector<test_type> >();
   test_container(vector<test_type>());
   test_container(vector<test_type, malloc_allocator<test_type> >());
-  //test_container(vector<test_type, __mt_alloc<test_type> >());
+  test_container(vector<test_type, __mt_alloc<test_type> >());
 
   calibrate_iterations<list<test_type> >();
   test_container(list<test_type>());
   test_container(list<test_type, malloc_allocator<test_type> >());
-  //test_container(list<test_type, __mt_alloc<test_type> >());
+  test_container(list<test_type, __mt_alloc<test_type> >());
 
   return 0;
 }