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]

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.


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