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] __pool_alloc rework


Benjamin Kosnik wrote:

Hey Paolo. Here's another way to do __pool_alloc. This exports two
protected member functions, which seems fine to me. Let me know what you
think.


Hi Benjamin. I'm not sure to understand why you are using GLIBCXX_3.4.2
for this?

I'm still working on the locking bits, which is the only part of this
patch that I'm unhappy with at the moment.

Indeed, in the case of __pool _alloc the template parameter was *not* unused...

I'd like to check this in
anyway, and continue work on that part along with mt_alloc and the fix
to 13583.


Ok! Please keep me updated: mt_alloc is still missing some alignments bits,
as you remember.

Some final observation: as I had noticed, following this standard approach
src/allocator.cc becomes rather, well, "populated", I wonder whether we can
do something about this...

Wrt the original SGI design, some functions are not static anymore, but I
don't think this is a problem, actually, besides the non-inlining, perhaps.

A last thing. The new _M_get_free_list reads:

! // Static members of __pool_alloc and base class.

(comment out of date, I think)

! __pool_base::_Obj* volatile*
! __pool_base::_M_get_free_list(size_t __bytes)
! { ! size_t __i = ((__bytes + (size_t)_S_align - 1) / (size_t)_S_align - 1);
! return _S_free_list + __i - 1;
! }


Are you sure about the final '- 1'??? If I'm not mistaken, _M_get_free_list replaces
the previous _S_free_list + _S_freelist_index


Paolo.


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