mt_allocator.h: Fixups.
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
This commit is contained in:
parent
f96540656c
commit
41f2472503
@ -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>
|
2004-01-13 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
* testsuite/performance/ifstream_extract_float.cc: Add higher
|
* testsuite/performance/ifstream_extract_float.cc: Add higher
|
||||||
|
@ -232,7 +232,7 @@ namespace __gnu_cxx
|
|||||||
* Requests larger than _S_max_bytes are handled by
|
* Requests larger than _S_max_bytes are handled by
|
||||||
* new/delete directly
|
* new/delete directly
|
||||||
*/
|
*/
|
||||||
if (__n > _S_max_bytes)
|
if (__n * sizeof(_Tp) > _S_max_bytes)
|
||||||
{
|
{
|
||||||
void* __ret = malloc(__n * sizeof(_Tp));
|
void* __ret = malloc(__n * sizeof(_Tp));
|
||||||
if (!__ret)
|
if (!__ret)
|
||||||
@ -263,7 +263,7 @@ namespace __gnu_cxx
|
|||||||
/*
|
/*
|
||||||
* Round up to power of 2 and figure out which bin to use
|
* 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
|
#ifdef __GTHREADS
|
||||||
size_t thread_id = _S_get_thread_id();
|
size_t thread_id = _S_get_thread_id();
|
||||||
@ -408,7 +408,7 @@ namespace __gnu_cxx
|
|||||||
* Requests larger than _S_max_bytes are handled by
|
* Requests larger than _S_max_bytes are handled by
|
||||||
* malloc/free directly
|
* malloc/free directly
|
||||||
*/
|
*/
|
||||||
if (__n > _S_max_bytes)
|
if (__n * sizeof(_Tp) > _S_max_bytes)
|
||||||
{
|
{
|
||||||
free(__p);
|
free(__p);
|
||||||
return;
|
return;
|
||||||
@ -417,7 +417,7 @@ namespace __gnu_cxx
|
|||||||
/*
|
/*
|
||||||
* Round up to power of 2 and figure out which bin to use
|
* 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
|
#ifdef __GTHREADS
|
||||||
size_t thread_id = _S_get_thread_id();
|
size_t thread_id = _S_get_thread_id();
|
||||||
@ -607,14 +607,8 @@ namespace __gnu_cxx
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize per thread key to hold pointer to
|
* Initialize per thread key to hold pointer to
|
||||||
* _S_thread_freelist NOTE! Here's an ugly workaround - if
|
* _S_thread_freelist
|
||||||
* _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_key_destr(NULL);
|
|
||||||
__gthread_key_create(&_S_thread_key, _S_thread_key_destr);
|
__gthread_key_create(&_S_thread_key, _S_thread_key_destr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -647,7 +641,6 @@ namespace __gnu_cxx
|
|||||||
|
|
||||||
if (!_S_bin[bin].free)
|
if (!_S_bin[bin].free)
|
||||||
__throw_bad_alloc();
|
__throw_bad_alloc();
|
||||||
|
|
||||||
_S_bin[bin].used = (size_t*) malloc(sizeof(size_t) * __n);
|
_S_bin[bin].used = (size_t*) malloc(sizeof(size_t) * __n);
|
||||||
|
|
||||||
if (!_S_bin[bin].used)
|
if (!_S_bin[bin].used)
|
||||||
|
@ -133,12 +133,12 @@ int main(void)
|
|||||||
calibrate_iterations<vector<test_type> >();
|
calibrate_iterations<vector<test_type> >();
|
||||||
test_container(vector<test_type>());
|
test_container(vector<test_type>());
|
||||||
test_container(vector<test_type, malloc_allocator<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> >();
|
calibrate_iterations<list<test_type> >();
|
||||||
test_container(list<test_type>());
|
test_container(list<test_type>());
|
||||||
test_container(list<test_type, malloc_allocator<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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -147,12 +147,12 @@ int main(void)
|
|||||||
calibrate_iterations<vector<test_type> >();
|
calibrate_iterations<vector<test_type> >();
|
||||||
test_container(vector<test_type>());
|
test_container(vector<test_type>());
|
||||||
test_container(vector<test_type, malloc_allocator<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> >();
|
calibrate_iterations<list<test_type> >();
|
||||||
test_container(list<test_type>());
|
test_container(list<test_type>());
|
||||||
test_container(list<test_type, malloc_allocator<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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user