[vsipl++] [patch] Pool allocation

Stefan Seefeld stefan at codesourcery.com
Tue Apr 22 14:14:42 UTC 2008


Jules,

sorry for having dropped the ball here. The patch looks good. I only 
have the usual nit-picks, but nothing blocking.

A general question concerning the expected usage: By replacing the 
template parameter by a function parameter you make the choice of a pool 
a runtime-only thing. Who do you expect will use pools explicitly, and 
how ? Is this runtime-binding really going to be used by end-users, or 
is it merely a convenience for us during R&D ?
(I could think of ways to keep the allocator a compile-time parameter, 
but allow us to configure in a special allocator that calls into a 
runtime-polymorphic pool type such as the one you implement here...)


Jules Bergmann wrote:

> Index: src/vsip/core/pool.hpp
> ===================================================================
> --- src/vsip/core/pool.hpp	(revision 0)
> +++ src/vsip/core/pool.hpp	(revision 0)
> @@ -0,0 +1,81 @@
> +/* Copyright (c) 2007 by CodeSourcery, LLC.  All rights reserved. */

This should be Inc., not LLC., right ?

> +
> +/** @file    vsip/core/pool.hpp
> +    @author  Jules Bergmann
> +    @date    2007-04-11

Is this patch really this old ? :-)

> +    @brief   VSIPL++ Library: Memory allocation pool
> +*/

I would prefer to name the pool actually Memory_pool, to make it clear 
that we are talking about memory management here, not threading (say).

> +template <typename T>
> +inline T*
> +pool_alloc(
> +  Pool*       pool,
> +  length_type size)
> +{
> +  return (T*)(pool->allocate(size * sizeof(T)));
> +}

I understand the need for 'pool_alloc' being a separate function from 
the virtual Pool::allocate, but I'd still prefer this to become a member 
function. What about

class Memory_pool
{
public:
   virtual void *allocate(length_type);
   template <typename T>
   T * allocate(length_type);
};

?

Thanks,
		Stefan


-- 
Stefan Seefeld
CodeSourcery
stefan at codesourcery.com
(650) 331-3385 x718



More information about the vsipl++ mailing list