Thx! I will start some discussion with STL people and get more advice as to what is the right approach. Sun
On Sun, Jun 12, 2011 at 8:38 PM, <[email protected]> wrote: > Author: dibyendu > Date: 2011-06-12 23:38:27 -0400 (Sun, 12 Jun 2011) > New Revision: 3645 > > Modified: > trunk/osprey-gcc-4.2.0/libstdc++-v3/include/bits/stl_tree.h > Log: > Removing fast STL set/map implementation. > > > Modified: trunk/osprey-gcc-4.2.0/libstdc++-v3/include/bits/stl_tree.h > =================================================================== > --- trunk/osprey-gcc-4.2.0/libstdc++-v3/include/bits/stl_tree.h 2011-06-10 > 22:08:19 UTC (rev 3644) > +++ trunk/osprey-gcc-4.2.0/libstdc++-v3/include/bits/stl_tree.h 2011-06-13 > 03:38:27 UTC (rev 3645) > @@ -100,11 +100,6 @@ > _Base_ptr _M_left; > _Base_ptr _M_right; > > -#ifdef __OPEN64_FAST_SET > - _Base_ptr _M_prev; > - _Base_ptr _M_next; > -#endif > - > static _Base_ptr > _S_minimum(_Base_ptr __x) > { > @@ -185,11 +180,7 @@ > _Self& > operator++() > { > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_next; > -#else > _M_node = _Rb_tree_increment(_M_node); > -#endif > return *this; > } > > @@ -197,23 +188,14 @@ > operator++(int) > { > _Self __tmp = *this; > - > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_next; > -#else > _M_node = _Rb_tree_increment(_M_node); > -#endif > return __tmp; > } > > _Self& > operator--() > { > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_prev; > -#else > _M_node = _Rb_tree_decrement(_M_node); > -#endif > return *this; > } > > @@ -221,12 +203,7 @@ > operator--(int) > { > _Self __tmp = *this; > - > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_prev; > -#else > _M_node = _Rb_tree_decrement(_M_node); > -#endif > return __tmp; > } > > @@ -278,11 +255,7 @@ > _Self& > operator++() > { > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_next; > -#else > _M_node = _Rb_tree_increment(_M_node); > -#endif > return *this; > } > > @@ -290,23 +263,14 @@ > operator++(int) > { > _Self __tmp = *this; > - > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_next; > -#else > _M_node = _Rb_tree_increment(_M_node); > -#endif > return __tmp; > } > > _Self& > operator--() > { > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_prev; > -#else > _M_node = _Rb_tree_decrement(_M_node); > -#endif > return *this; > } > > @@ -314,12 +278,7 @@ > operator--(int) > { > _Self __tmp = *this; > - > -#ifdef __OPEN64_FAST_SET > - _M_node = _M_node->_M_prev; > -#else > _M_node = _Rb_tree_decrement(_M_node); > -#endif > return __tmp; > } > > @@ -365,16 +324,6 @@ > _Rb_tree_node_base& __header); > > > -#ifdef __OPEN64_FAST_SET > - void > - _Rb_tree_insert_into_sorted_list(const bool __insert_left, > - _Rb_tree_node_base* __x, > - _Rb_tree_node_base* __p, > - _Rb_tree_node_base& __header); > - void > - _Rb_tree_recreate_sorted_list(_Rb_tree_node_base& __header); > -#endif > - > template<typename _Key, typename _Val, typename _KeyOfValue, > typename _Compare, typename _Alloc = allocator<_Val> > > class _Rb_tree > @@ -442,12 +391,6 @@ > __tmp->_M_color = __x->_M_color; > __tmp->_M_left = 0; > __tmp->_M_right = 0; > - > -#ifdef __OPEN64_FAST_SET > - __tmp->_M_prev = __tmp; > - __tmp->_M_next = __tmp; > -#endif > - > return __tmp; > } > > @@ -476,11 +419,6 @@ > this->_M_header._M_parent = 0; > this->_M_header._M_left = &this->_M_header; > this->_M_header._M_right = &this->_M_header; > - > -#ifdef __OPEN64_FAST_SET > - this->_M_header._M_prev = &this->_M_header; > - this->_M_header._M_next = &this->_M_header; > -#endif > } > }; > > @@ -502,12 +440,6 @@ > this->_M_header._M_parent = 0; > this->_M_header._M_left = &this->_M_header; > this->_M_header._M_right = &this->_M_header; > - > -#ifdef __OPEN64_FAST_SET > - this->_M_header._M_prev = &this->_M_header; > - this->_M_header._M_next = &this->_M_header; > -#endif > - > } > }; > > @@ -653,10 +585,6 @@ > _M_leftmost() = _S_minimum(_M_root()); > _M_rightmost() = _S_maximum(_M_root()); > _M_impl._M_node_count = __x._M_impl._M_node_count; > - > -#ifdef __OPEN64_FAST_SET > - _Rb_tree_recreate_sorted_list(this->_M_impl._M_header); > -#endif > } > } > > @@ -785,11 +713,6 @@ > _M_root() = 0; > _M_rightmost() = _M_end(); > _M_impl._M_node_count = 0; > - > -#ifdef __OPEN64_FAST_SET > - _M_end()->_M_next = _M_end(); > - _M_end()->_M_prev = _M_end(); > -#endif > } > > // Set operations. > @@ -897,10 +820,6 @@ > _M_leftmost() = _S_minimum(_M_root()); > _M_rightmost() = _S_maximum(_M_root()); > _M_impl._M_node_count = __x._M_impl._M_node_count; > - > -#ifdef __OPEN64_FAST_SET > - _Rb_tree_recreate_sorted_list(this->_M_impl._M_header); > -#endif > } > } > return *this; > @@ -918,10 +837,6 @@ > > _Link_type __z = _M_create_node(__v); > > -#ifdef __OPEN64_FAST_SET > - _Rb_tree_insert_into_sorted_list(__insert_left, __z, __p, > - this->_M_impl._M_header); > -#endif > _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, > this->_M_impl._M_header); > ++_M_impl._M_node_count; > @@ -940,10 +855,6 @@ > > _Link_type __z = _M_create_node(__v); > > -#ifdef __OPEN64_FAST_SET > - _Rb_tree_insert_into_sorted_list(__insert_left, __z, __p, > - this->_M_impl._M_header); > -#endif > _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, > this->_M_impl._M_header); > ++_M_impl._M_node_count; > @@ -962,11 +873,6 @@ > > _Link_type __z = _M_create_node(__v); > > -#ifdef __OPEN64_FAST_SET > - _Rb_tree_insert_into_sorted_list(__insert_left, __z, > - const_cast<_Base_ptr>(__p), > - this->_M_impl._M_header); > -#endif > _Rb_tree_insert_and_rebalance(__insert_left, __z, > const_cast<_Base_ptr>(__p), > this->_M_impl._M_header); > @@ -1022,23 +928,10 @@ > _M_leftmost() = __t._M_leftmost(); > _M_rightmost() = __t._M_rightmost(); > _M_root()->_M_parent = _M_end(); > - > -#ifdef __OPEN64_FAST_SET > - _M_end()->_M_next = _M_leftmost(); > - _M_leftmost()->_M_prev = _M_end(); > - _M_end()->_M_prev = _M_rightmost(); > - _M_rightmost()->_M_next = _M_end(); > -#endif > > __t._M_root() = 0; > __t._M_leftmost() = __t._M_end(); > __t._M_rightmost() = __t._M_end(); > - > -#ifdef __OPEN64_FAST_SET > - __t._M_end()->_M_prev = __t._M_end(); > - __t._M_end()->_M_next = __t._M_end(); > -#endif > - > } > } > else if (__t._M_root() == 0) > @@ -1047,24 +940,10 @@ > __t._M_leftmost() = _M_leftmost(); > __t._M_rightmost() = _M_rightmost(); > __t._M_root()->_M_parent = __t._M_end(); > - > -#ifdef __OPEN64_FAST_SET > - __t._M_end()->_M_next = __t._M_leftmost(); > - __t._M_leftmost()->_M_prev = __t._M_end(); > - __t._M_end()->_M_prev = __t._M_rightmost(); > - __t._M_rightmost()->_M_next = __t._M_end(); > -#endif > > - > _M_root() = 0; > _M_leftmost() = _M_end(); > _M_rightmost() = _M_end(); > - > -#ifdef __OPEN64_FAST_SET > - _M_end()->_M_prev = _M_end(); > - _M_end()->_M_next = _M_end(); > -#endif > - > } > else > { > @@ -1074,19 +953,6 @@ > > _M_root()->_M_parent = _M_end(); > __t._M_root()->_M_parent = __t._M_end(); > - > -#ifdef __OPEN64_FAST_SET > - _M_end()->_M_next = _M_leftmost(); > - _M_leftmost()->_M_prev = _M_end(); > - _M_end()->_M_prev = _M_rightmost(); > - _M_rightmost()->_M_next = _M_end(); > - __t._M_end()->_M_next = __t._M_leftmost(); > - __t._M_leftmost()->_M_prev = __t._M_end(); > - __t._M_end()->_M_prev = __t._M_rightmost(); > - __t._M_rightmost()->_M_next = __t._M_end(); > -#endif > - > - > } > // No need to swap header's color as it does not change. > std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); > @@ -1379,12 +1245,6 @@ > static_cast<_Link_type>(_Rb_tree_rebalance_for_erase > (__position._M_node, > this->_M_impl._M_header)); > - > -#ifdef __OPEN64_FAST_SET > - __y->_M_prev->_M_next = __y->_M_next; > - __y->_M_next->_M_prev = __y->_M_prev; > -#endif > - > _M_destroy_node(__y); > --_M_impl._M_node_count; > } > @@ -1399,11 +1259,6 @@ > static_cast<_Link_type>(_Rb_tree_rebalance_for_erase > (const_cast<_Base_ptr>(__position._M_node), > this->_M_impl._M_header)); > -#ifdef __OPEN64_FAST_SET > - __y->_M_prev->_M_next = __y->_M_next; > - __y->_M_next->_M_prev = __y->_M_prev; > -#endif > - > _M_destroy_node(__y); > --_M_impl._M_node_count; > } > @@ -1426,7 +1281,7 @@ > _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: > _M_copy(_Const_Link_type __x, _Link_type __p) > { > - > + // Structural copy. __x and __p must be non-null. > _Link_type __top = _M_clone_node(__x); > __top->_M_parent = __p; > > @@ -1434,11 +1289,9 @@ > { > if (__x->_M_right) > __top->_M_right = _M_copy(_S_right(__x), __top); > - > __p = __top; > __x = _S_left(__x); > > - > while (__x != 0) > { > _Link_type __y = _M_clone_node(__x); > @@ -1446,7 +1299,6 @@ > __y->_M_parent = __p; > if (__x->_M_right) > __y->_M_right = _M_copy(_S_right(__x), __y); > - > __p = __y; > __x = _S_left(__x); > } > @@ -1470,11 +1322,6 @@ > { > _M_erase(_S_right(__x)); > _Link_type __y = _S_left(__x); > - > -#ifdef __OPEN64_FAST_SET > - __x->_M_prev->_M_next = __x->_M_next; > - __x->_M_next->_M_prev = __x->_M_prev; > -#endif > _M_destroy_node(__x); > __x = __y; > } > @@ -1705,49 +1552,6 @@ > return true; > } > > -#ifdef __OPEN64_FAST_SET > -inline void > -_Rb_tree_insert_into_sorted_list(const bool __insert_left, > - _Rb_tree_node_base* __x, > - _Rb_tree_node_base* __p, > - _Rb_tree_node_base& __header ) > -{ > - if ( __insert_left) > - { > - __x->_M_next = __p; > - __x->_M_prev = __p->_M_prev; > - __p->_M_prev->_M_next = __x; > - __p->_M_prev = __x; > - } > - else { > - __x->_M_prev = __p; > - __x->_M_next = __p->_M_next; > - __p->_M_next->_M_prev = __x; > - __p->_M_next = __x; > - } > -} > -inline void > -_Rb_tree_recreate_sorted_list(_Rb_tree_node_base& __header ) > -{ > - _Rb_tree_node_base *__x, *__y, *__rightmost; > - > - __rightmost = __header._M_right; > - __x = __header._M_left; > - __x->_M_prev = &__header; > - __header._M_next = __x; > - > - while ( __x != __rightmost ) > - { > - __y = _Rb_tree_increment(__x); > - __x->_M_next = __y; > - __y->_M_prev = __x; > - __x = __y; > - } > - __rightmost->_M_next = &__header; > - __header._M_prev = __rightmost; > -} > -#endif > - > _GLIBCXX_END_NAMESPACE > > #endif > > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Open64-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/open64-devel > ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ Open64-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/open64-devel
