Update of /cvsroot/boost/boost/boost/interprocess/mem_algo
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19387/mem_algo
Modified Files:
rbtree_best_fit.hpp simple_seq_fit.hpp
Log Message:
Changes to correct regression tests for intel-win-9.1 & cw-9.4
Index: rbtree_best_fit.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/interprocess/mem_algo/rbtree_best_fit.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- rbtree_best_fit.hpp 4 May 2007 21:10:02 -0000 1.1
+++ rbtree_best_fit.hpp 12 May 2007 12:51:21 -0000 1.2
@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
-// (C) Copyright Ion Gaztañaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
@@ -95,6 +95,8 @@
friend bool operator<(const block_ctrl &a, const block_ctrl &b)
{ return a.m_size < b.m_size; }
+ friend bool operator==(const block_ctrl &a, const block_ctrl &b)
+ { return a.m_size == b.m_size; }
};
struct size_block_ctrl_compare
@@ -581,9 +583,6 @@
//biggest of all possibilities
if(!only_preferred_backwards){
needs_backwards = min_size -
detail::get_truncated_size(received_size, backwards_multiple);
-/* needs_backwards =
- max_value(min_size - detail::get_truncated_size(received_size,
backwards_multiple)
-
,min_value(prev_block->m_size*Alignment/backwards_multiple*backwards_multiple,
needs_backwards));*/
}
assert((needs_backwards % backwards_multiple) == 0);
@@ -591,11 +590,8 @@
const std::size_t needs_backwards_aligned =
detail::get_rounded_size(needs_backwards, lcm);
-// const std::size_t needs_backwards_remaining =
-// needs_backwards_aligned -
detail::get_truncated_size(needs_backwards_aligned, backwards_multiple);
-
//Check if previous block has enough size
- if(prev_block->m_size*Alignment >= needs_backwards_aligned){
+ if(std::size_t(prev_block->m_size*Alignment) >= needs_backwards_aligned){
//Now take all next space. This will succeed
if(command & expand_fwd){
if(!priv_expand(reuse_ptr, received_size, received_size,
received_size)){
@@ -634,14 +630,7 @@
//If the backwards expansion has remaining bytes in the
//first bytes, fill them with a pattern
void *p = priv_get_user_buffer(new_block);
-/*
- if(needs_backwards_remaining){
- for(std::size_t i = 0; i < needs_backwards_remaining; ++i){
- detail::char_ptr_cast(p)[i] = (char)i;
- }
- }
-*/
- void *user_ptr = detail::char_ptr_cast(p)/* +
needs_backwards_remaining*/;
+ void *user_ptr = detail::char_ptr_cast(p);
assert(((char*)reuse_ptr - (char*)user_ptr) % backwards_multiple
== 0);
return user_ptr;
}
@@ -655,8 +644,6 @@
//Just merge the whole previous block
const std::size_t needs_backwards_aligned =
prev_block->m_size*Alignment;
const std::size_t needs_backwards =
detail::get_truncated_size(needs_backwards_aligned, backwards_multiple);
-// const std::size_t needs_backwards_remaining =
needs_backwards_aligned - needs_backwards;
-
received_size =
received_size/backwards_multiple*backwards_multiple + needs_backwards;
m_header.m_allocated += prev_block->m_size*Alignment;
@@ -670,21 +657,7 @@
//If the backwards expansion has remaining bytes in the
//first bytes, fill them with a pattern
void *p = priv_get_user_buffer(prev_block);
-/*
- if(needs_backwards_remaining){
- if(needs_backwards_remaining >= Alignment){
- detail::char_ptr_cast(p)[0] =
needs_backwards_remaining/Alignment;
- }
- else{
- detail::char_ptr_cast(p)[0] = 0;
- }
-
- for(std::size_t i = 1; i < needs_backwards_remaining; ++i){
- detail::char_ptr_cast(p)[i] = (char)i;
- }
- }
-*/
- void *user_ptr = detail::char_ptr_cast(p)/* +
needs_backwards_remaining*/;
+ void *user_ptr = detail::char_ptr_cast(p);
assert(((char*)reuse_ptr - (char*)user_ptr) % backwards_multiple
== 0);
return user_ptr;
}
@@ -694,151 +667,6 @@
}
}
return 0;
-/*
- if(reuse_ptr == (void*)0x00393db1)
- reuse_ptr = reuse_ptr;
- if(command & expand_fwd){
- if(priv_expand(reuse_ptr, min_size, preferred_size, received_size))
- return reuse_ptr;
- }
- else{
- received_size = this->size(reuse_ptr);
- if(received_size >= preferred_size)
- return reuse_ptr;
- }
-
- BOOST_ASSERT(0 == (min_size % backwards_multiple));
- BOOST_ASSERT(0 == (preferred_size % backwards_multiple));
-
- if(command & expand_bwd){
- //Obtain the real size of the block
- block_ctrl *reuse = priv_get_block(reuse_ptr);
-
- //Sanity check
- assert(reuse->m_size == priv_tail_size(reuse));
- priv_check_alignment(reuse);
-
- block_ctrl *prev_block;
-
- //If the previous block is not free, there is nothing to do
- if(priv_is_allocated_block(prev_block = priv_prev_block(reuse))){
- return 0;
- }
-
- //Some sanity checks
- assert(prev_block->m_size == priv_tail_size(prev_block));
- priv_check_alignment(prev_block);
-
- //Let's calculate the number of extra bytes of data before the current
- //block's begin. The value is a multiple of backwards_multiple
- std::size_t needs_backwards = preferred_size -
- detail::get_truncated_size(received_size, backwards_multiple);
-
- //If we want to use min_size data to get a buffer between preferred_size
- //and min_size if preferred_size can't be achieved, calculate the
- //biggest of all possibilities
- if(!only_preferred_backwards){
- needs_backwards =
- max_value(min_size - detail::get_truncated_size(received_size,
backwards_multiple)
-
,min_value(prev_block->m_size*Alignment/backwards_multiple*backwards_multiple,
needs_backwards));
- }
-
- assert((needs_backwards % backwards_multiple) == 0);
-
- const std::size_t needs_backwards_aligned =
- priv_multiple_of_units(needs_backwards);
-
- const std::size_t needs_backwards_remaining =
- needs_backwards_aligned -
detail::get_truncated_size(needs_backwards_aligned, backwards_multiple);
-
- //Check if previous block has enough size
- if(prev_block->m_size*Alignment >= needs_backwards_aligned){
- //Now take all next space. This will succeed
- if(command & expand_fwd){
- if(!priv_expand(reuse_ptr, received_size, received_size,
received_size)){
- assert(0);
- }
- }
- //Erase old previous block, since we will change it
- m_header.m_imultiset.erase(Imultiset::iterator_to(*prev_block));
-
- //We need a minimum size to split the previous one
- if(prev_block->m_size >= (needs_backwards_aligned/Alignment +
BlockCtrlUnits)){
- block_ctrl *new_block = reinterpret_cast<block_ctrl *>
- (detail::char_ptr_cast(reuse) - needs_backwards_aligned);
-
- //Free old previous buffer
- new_block->m_size =
- AllocatedCtrlUnits + (needs_backwards_aligned +
received_size)/Alignment;
- assert(new_block->m_size >= BlockCtrlUnits);
- priv_tail_size(new_block, new_block->m_size);
- priv_mark_as_allocated_block(new_block);
-
- prev_block->m_size = (detail::char_ptr_cast(new_block) -
- detail::char_ptr_cast(prev_block))/Alignment;
- assert(prev_block->m_size >= BlockCtrlUnits);
- priv_tail_size(prev_block, prev_block->m_size);
- priv_mark_as_free_block(prev_block);
-
- //Insert the remaining previous block in the free tree
- m_header.m_imultiset.insert( m_header.m_imultiset.begin(),
*prev_block);
- received_size = needs_backwards_aligned + received_size;
- m_header.m_allocated += needs_backwards_aligned;
-
- //Check alignment
- priv_check_alignment(new_block);
-
- //If the backwards expansion has remaining bytes in the
- //first bytes, fill them with a pattern
- void *p = priv_get_user_buffer(new_block);
- if(needs_backwards_remaining){
- for(std::size_t i = 0; i < needs_backwards_remaining; ++i){
- detail::char_ptr_cast(p)[i] = (char)i;
- }
- }
- void *user_ptr = detail::char_ptr_cast(p) +
needs_backwards_remaining;
- assert(((char*)reuse_ptr - (char*)user_ptr) % backwards_multiple
== 0);
- return user_ptr;
- }
- else if(prev_block->m_size >= needs_backwards_aligned/Alignment){
- //Just merge the whole previous block
- const std::size_t needs_backwards_aligned =
prev_block->m_size*Alignment;
- const std::size_t needs_backwards =
detail::get_truncated_size(needs_backwards_aligned, backwards_multiple);
- const std::size_t needs_backwards_remaining =
needs_backwards_aligned - needs_backwards;
-
- received_size =
received_size/backwards_multiple*backwards_multiple + needs_backwards;
-
- m_header.m_allocated += prev_block->m_size*Alignment;
- //Now update sizes
- prev_block->m_size = prev_block->m_size + reuse->m_size;
- assert(prev_block->m_size >= BlockCtrlUnits);
- priv_tail_size(prev_block, prev_block->m_size);
- priv_mark_as_allocated_block(prev_block);
- priv_check_alignment(prev_block);
-
- //If the backwards expansion has remaining bytes in the
- //first bytes, fill them with a pattern
- void *p = priv_get_user_buffer(prev_block);
- if(needs_backwards_remaining){
- if(needs_backwards_remaining >= Alignment){
- detail::char_ptr_cast(p)[0] =
needs_backwards_remaining/Alignment;
- }
- else{
- detail::char_ptr_cast(p)[0] = 0;
- }
-
- for(std::size_t i = 1; i < needs_backwards_remaining; ++i){
- detail::char_ptr_cast(p)[i] = (char)i;
- }
- }
- void *user_ptr = detail::char_ptr_cast(p) +
needs_backwards_remaining;
- assert(((char*)reuse_ptr - (char*)user_ptr) % backwards_multiple
== 0);
- return user_ptr;
- }
- }
- }
- return 0;
-*/
}
template<class MutexFamily, class VoidPointer>
Index: simple_seq_fit.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/interprocess/mem_algo/simple_seq_fit.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- simple_seq_fit.hpp 4 May 2007 20:53:10 -0000 1.3
+++ simple_seq_fit.hpp 12 May 2007 12:51:21 -0000 1.4
@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
-// (C) Copyright Ion Gaztañaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs