Commit df9cb15f by Paolo Carlini

2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>

	Revert unintended changes to include/parallel files.

From-SVN: r173066
parent 9f1163b1
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms // software; you can redistribute it and/or modify it under the terms
...@@ -116,11 +116,7 @@ namespace __gnu_parallel ...@@ -116,11 +116,7 @@ namespace __gnu_parallel
* @brief The destructor. * @brief The destructor.
*/ */
~_LoserTreeBase() ~_LoserTreeBase()
{ { ::operator delete(_M_losers); }
for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
_M_losers[__i].~_Loser();
::operator delete(_M_losers);
}
/** /**
* @brief Initializes the sequence "_M_source" with the element "__key". * @brief Initializes the sequence "_M_source" with the element "__key".
...@@ -135,15 +131,15 @@ namespace __gnu_parallel ...@@ -135,15 +131,15 @@ namespace __gnu_parallel
{ {
unsigned int __pos = _M_k + __source; unsigned int __pos = _M_k + __source;
if (_M_first_insert) if(_M_first_insert)
{ {
// Construct all keys, so we can easily destruct them. // Construct all keys, so we can easily deconstruct them.
for (unsigned int __i = 0; __i < (2 * _M_k); ++__i) for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
new(&(_M_losers[__i]._M_key)) _Tp(__key); new(&(_M_losers[__i]._M_key)) _Tp(__key);
_M_first_insert = false; _M_first_insert = false;
} }
else else
_M_losers[__pos]._M_key = __key; new(&(_M_losers[__pos]._M_key)) _Tp(__key);
_M_losers[__pos]._M_sup = __sup; _M_losers[__pos]._M_sup = __sup;
_M_losers[__pos]._M_source = __source; _M_losers[__pos]._M_source = __source;
...@@ -383,7 +379,7 @@ namespace __gnu_parallel ...@@ -383,7 +379,7 @@ namespace __gnu_parallel
} }
~_LoserTreePointerBase() ~_LoserTreePointerBase()
{ delete[] _M_losers; } { ::operator delete[](_M_losers); }
int __get_min_source() int __get_min_source()
{ return _M_losers[0]._M_source; } { return _M_losers[0]._M_source; }
...@@ -596,17 +592,13 @@ namespace __gnu_parallel ...@@ -596,17 +592,13 @@ namespace __gnu_parallel
for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i) for (unsigned int __i = _M_k + _M_ik - 1; __i < (2 * _M_k); ++__i)
{ {
::new(&(_M_losers[__i]._M_key)) _Tp(__sentinel); _M_losers[__i]._M_key = __sentinel;
_M_losers[__i]._M_source = -1; _M_losers[__i]._M_source = -1;
} }
} }
~_LoserTreeUnguardedBase() ~_LoserTreeUnguardedBase()
{ { ::operator delete(_M_losers); }
for (unsigned int __i = 0; __i < (2 * _M_k); ++__i)
_M_losers[__i].~_Loser();
::operator delete(_M_losers);
}
int int
__get_min_source() __get_min_source()
...@@ -623,7 +615,7 @@ namespace __gnu_parallel ...@@ -623,7 +615,7 @@ namespace __gnu_parallel
{ {
unsigned int __pos = _M_k + __source; unsigned int __pos = _M_k + __source;
::new(&(_M_losers[__pos]._M_key)) _Tp(__key); new(&(_M_losers[__pos]._M_key)) _Tp(__key);
_M_losers[__pos]._M_source = __source; _M_losers[__pos]._M_source = __source;
} }
}; };
......
...@@ -1045,12 +1045,11 @@ namespace __gnu_parallel ...@@ -1045,12 +1045,11 @@ namespace __gnu_parallel
_ValueType; _ValueType;
// __k sequences. // __k sequences.
const _SeqNumber __k _SeqNumber __k = static_cast<_SeqNumber>(__seqs_end - __seqs_begin);
= static_cast<_SeqNumber>(__seqs_end - __seqs_begin);
const _ThreadIndex __num_threads = omp_get_num_threads(); _ThreadIndex __num_threads = omp_get_num_threads();
const _DifferenceType __num_samples = _DifferenceType __num_samples =
__gnu_parallel::_Settings::get().merge_oversampling * __num_threads; __gnu_parallel::_Settings::get().merge_oversampling * __num_threads;
_ValueType* __samples = static_cast<_ValueType*> _ValueType* __samples = static_cast<_ValueType*>
...@@ -1097,10 +1096,6 @@ namespace __gnu_parallel ...@@ -1097,10 +1096,6 @@ namespace __gnu_parallel
__pieces[__slab][__seq].second = __pieces[__slab][__seq].second =
_GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__seq]); _GLIBCXX_PARALLEL_LENGTH(__seqs_begin[__seq]);
} }
for (_SeqNumber __s = 0; __s < __k; ++__s)
for (_DifferenceType __i = 0; __i < __num_samples; ++__i)
__samples[__s * __num_samples + __i].~_ValueType();
::operator delete(__samples); ::operator delete(__samples);
} }
......
...@@ -378,8 +378,6 @@ namespace __gnu_parallel ...@@ -378,8 +378,6 @@ namespace __gnu_parallel
# pragma omp barrier # pragma omp barrier
for (_DifferenceType __i = 0; __i < __length_local; ++__i)
__sd->_M_temporary[__iam][__i].~_ValueType();
::operator delete(__sd->_M_temporary[__iam]); ::operator delete(__sd->_M_temporary[__iam]);
} }
...@@ -415,7 +413,6 @@ namespace __gnu_parallel ...@@ -415,7 +413,6 @@ namespace __gnu_parallel
// shared variables // shared variables
_PMWMSSortingData<_RAIter> __sd; _PMWMSSortingData<_RAIter> __sd;
_DifferenceType* __starts; _DifferenceType* __starts;
_DifferenceType __size;
# pragma omp parallel num_threads(__num_threads) # pragma omp parallel num_threads(__num_threads)
{ {
...@@ -430,7 +427,7 @@ namespace __gnu_parallel ...@@ -430,7 +427,7 @@ namespace __gnu_parallel
if (!__exact) if (!__exact)
{ {
__size = _DifferenceType __size =
(_Settings::get().sort_mwms_oversampling * __num_threads - 1) (_Settings::get().sort_mwms_oversampling * __num_threads - 1)
* __num_threads; * __num_threads;
__sd._M_samples = static_cast<_ValueType*> __sd._M_samples = static_cast<_ValueType*>
...@@ -466,11 +463,7 @@ namespace __gnu_parallel ...@@ -466,11 +463,7 @@ namespace __gnu_parallel
delete[] __sd._M_temporary; delete[] __sd._M_temporary;
if (!__exact) if (!__exact)
{
for (_DifferenceType __i = 0; __i < __size; ++__i)
__sd._M_samples[__i].~_ValueType();
::operator delete(__sd._M_samples); ::operator delete(__sd._M_samples);
}
delete[] __sd._M_offsets; delete[] __sd._M_offsets;
delete[] __sd._M_pieces; delete[] __sd._M_pieces;
......
...@@ -91,7 +91,8 @@ namespace __gnu_parallel ...@@ -91,7 +91,8 @@ namespace __gnu_parallel
_ThreadIndex __iam = omp_get_thread_num(); _ThreadIndex __iam = omp_get_thread_num();
// Neutral element. // Neutral element.
_Result* __reduct; _Result* __reduct = static_cast<_Result*>
(::operator new(sizeof(_Result)));
_DifferenceType _DifferenceType
__start = __equally_split_point(__length, __num_threads, __iam), __start = __equally_split_point(__length, __num_threads, __iam),
...@@ -99,7 +100,7 @@ namespace __gnu_parallel ...@@ -99,7 +100,7 @@ namespace __gnu_parallel
if (__start < __stop) if (__start < __stop)
{ {
__reduct = new _Result(__f(__o, __begin + __start)); new(__reduct) _Result(__f(__o, __begin + __start));
++__start; ++__start;
__constructed[__iam] = true; __constructed[__iam] = true;
} }
...@@ -109,26 +110,18 @@ namespace __gnu_parallel ...@@ -109,26 +110,18 @@ namespace __gnu_parallel
for (; __start < __stop; ++__start) for (; __start < __stop; ++__start)
*__reduct = __r(*__reduct, __f(__o, __begin + __start)); *__reduct = __r(*__reduct, __f(__o, __begin + __start));
if (__constructed[__iam]) __thread_results[__iam] = *__reduct;
{
::new(&__thread_results[__iam]) _Result(*__reduct);
delete __reduct;
}
} //parallel } //parallel
for (_ThreadIndex __i = 0; __i < __num_threads; ++__i) for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
if (__constructed[__i]) if (__constructed[__i])
{
__output = __r(__output, __thread_results[__i]); __output = __r(__output, __thread_results[__i]);
__thread_results[__i].~_Result();
}
// Points to last element processed (needed as return value for // Points to last element processed (needed as return value for
// some algorithms like transform). // some algorithms like transform).
__f._M_finish_iterator = __begin + __length; __f._M_finish_iterator = __begin + __length;
::operator delete(__thread_results); delete[] __thread_results;
delete[] __constructed; delete[] __constructed;
return __o; return __o;
......
...@@ -184,10 +184,7 @@ namespace __gnu_parallel ...@@ -184,10 +184,7 @@ namespace __gnu_parallel
__bin_op, __sums[__iam]); __bin_op, __sums[__iam]);
} //parallel } //parallel
for (_ThreadIndex __i = 0; __i < __num_threads; ++__i)
__sums[__i].~_ValueType();
::operator delete(__sums); ::operator delete(__sums);
delete[] __borders; delete[] __borders;
return __result + __n; return __result + __n;
......
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms // software; you can redistribute it and/or modify it under the terms
...@@ -82,8 +82,6 @@ namespace __gnu_parallel ...@@ -82,8 +82,6 @@ namespace __gnu_parallel
_DifferenceType __split = __parallel_partition(__begin, __end, _DifferenceType __split = __parallel_partition(__begin, __end,
__pred, __num_threads); __pred, __num_threads);
for (_DifferenceType __s = 0; __s < __num_samples; ++__s)
__samples[__s].~_ValueType();
::operator delete(__samples); ::operator delete(__samples);
return __split; return __split;
......
// -*- C++ -*- // -*- C++ -*-
// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. // Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms // software; you can redistribute it and/or modify it under the terms
...@@ -227,7 +227,7 @@ namespace __gnu_parallel ...@@ -227,7 +227,7 @@ namespace __gnu_parallel
(__sd->_M_temporaries[__iam] (__sd->_M_temporaries[__iam]
+ (__b == __d->_M_bins_begin + (__b == __d->_M_bins_begin
? 0 : __sd->_M_dist[__b][__d->_M_num_threads])), ? 0 : __sd->_M_dist[__b][__d->_M_num_threads])),
*__end = (__sd->_M_temporaries[__iam] * __end = (__sd->_M_temporaries[__iam]
+ __sd->_M_dist[__b + 1][__d->_M_num_threads]); + __sd->_M_dist[__b + 1][__d->_M_num_threads]);
__sequential_random_shuffle(__begin, __end, __rng); __sequential_random_shuffle(__begin, __end, __rng);
...@@ -236,8 +236,6 @@ namespace __gnu_parallel ...@@ -236,8 +236,6 @@ namespace __gnu_parallel
? 0 : __sd->_M_dist[__b][__d->_M_num_threads])); ? 0 : __sd->_M_dist[__b][__d->_M_num_threads]));
} }
for (_SequenceIndex __i = 0; __i < __offset; ++__i)
__sd->_M_temporaries[__iam][__i].~_ValueType();
::operator delete(__sd->_M_temporaries[__iam]); ::operator delete(__sd->_M_temporaries[__iam]);
} }
...@@ -503,9 +501,6 @@ namespace __gnu_parallel ...@@ -503,9 +501,6 @@ namespace __gnu_parallel
delete[] __dist0; delete[] __dist0;
delete[] __dist1; delete[] __dist1;
delete[] __oracles; delete[] __oracles;
for (_DifferenceType __i = 0; __i < __n; ++__i)
__target[__i].~_ValueType();
::operator delete(__target); ::operator delete(__target);
} }
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment