This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
PATCH: profile mode fix for threads on solaris and cleanup
- From: Silvius Rus <rus at google dot com>
- To: gcc-patches at gcc dot gnu dot org, Paolo Carlini <paolo dot carlini at oracle dot com>
- Cc: "libstdc++" <libstdc++ at gcc dot gnu dot org>
- Date: Mon, 10 May 2010 15:32:40 -0700
- Subject: PATCH: profile mode fix for threads on solaris and cleanup
Hello Paolo,
Could you please review the attached trunk patch. Note that it
reverts partially some of the emergency changes you made last week to
avoid including <algorithm> with -std=c++. Instead of inlining the
code by hand, I preferred to keep it in different functions and
implement simple versions of 'for_each' and 'remove', which come with
unit tests.
The formatting mistakes you pointed out throughout include/profile/...
(bracket at end of line) will be fixed in a later patch.
Thank you,
Silvius
Summary:
- Fix 43259 by using __gnu_cxx::__mutex instead of fiddling with macro names.
- Fix TODO. Instead of sorting and then keeping top 10 diagnostics,
implement simple "top n" algorithm.
- Implement a few simple algorithms to avoid including <algorithm>.
- Remove all calls to setenv.
Tested:
1. make check-profile on linux x86_64.
A few tests had execution failures in backtrace due to a config
error on my system. I will make sure the tests pass *before*
submitting.
2. Karel Gardas validated (Thanks!) that the patch fixes 43259 on
SunOS thinkpad 5.11 snv_134 i86pc.
Changelog entry:
2010-05-10 Silvius Rus <silvius.rus@gmail.com>
PR libstdc++/43259
* include/Makefile.am: Add profiler_algos.h.
* include/Makefile.in: Add profiler_algos.h.
* include/profile/impl/profiler_algos.h: New.
* testsuite/ext/profile/profiler_algos.cc: New.
* include/profile/impl/profiler.h: Add
(_GLIBCXX_PROFILE_DEFINE_UNINIT_DATA): Add.
* include/profile/impl/profiler_trace.h:
(__read_cost_factors): Remove call to setenv.
(__mutex_t, __lock, __unlock): Remove.
(__lock_object_table, __lock_stack_table): Remove. Replace uses with
calls to __gnu_cxx::__mutex::lock.
(__unlock_object_table, __unlock_stack_table): Remove. Replace uses
with calls to __gnu_cxx::__mutex::unlock.
(__warn, __cost_factor_writer, __cost_factor_setter): Add.