modest cpus can run 5-10M memcheck'd bbs per second and the previous
limit of 50k gives a 100Hz switch rate, which causes cache pollution
(a known performance problem) and other context-switch overheads.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5882
40% speedup on artificial programs which just do realloc() and nothing
else, and about a 3-4% speedup on starting kpresenter-1.5.0 and
loading a 16-slide presentation.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5880
with self hosting. Without this, the symbol has
size 0 and type NOT, and is ignored by the symbol loader.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5872
This adds an option to change the default handling of jumps
between functions. Usually, a jump between functions is
interpreted as call, because such jumps are typically
generated by compilers on tail recursion optimization, and
we want to present this as call to the user. Thus, such
a jump pushes a call onto callgrinds shadow stack.
The option "--pop-on-jump" changes this to pop+push the
shadow callstack: then, a jump between functions is seen
as a return to the caller and a new call.
The default behaviour is _bad_ for using callgrind with
self-hosting. Valgrinds inner loop VG_(run_innerloop)
jumps to generated code, and this code jumps back to
the inner loop. Thus, every executed BB adds 2 calls
to an ever increasing shadow call stack, leading to
memory consumption increasing with runtime :-(
So: For self-hosting valgrind with an outer callgrind,
always use option "--pop-on-jump" for the outer callgrind.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5869
since it trashed the regs that gcc assigned for %0 and %1 before reading
them. local_sys_write_stderr() for the 3 other targets suffer from the
same problem.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5865
the --base option, which allows to specify another
directory for dumps and control/result files.
With "--base=/tmp/foo", we want control/result files
in "/tmp", and not in a directory "/tmp/foo/".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5862
- callgrind_control was not working, because it checks the
"command syntax version" to be at most 1 before doing anything.
But callgrind used Valgrinds version for this (3.2.0). Now we
define a separate version COMMAND_VERSION for the syntax format
of control and result files.
Strictly, such a version is not needed for interaction of
callgrind and the script callgrind_control itself, as they are
delivered in the same package. But there are also external
controlling tools (most notable KCachegrind)
- Some systems make it difficult for callgrind_control to
automatically detect running callgrind processes. To make
interactivity work, one has to provide the cwd with -w.
For commands expecting a result from callgrind, this result
was delivered in the wrong result file.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5861
- In the same section, use VG_(percentify) to avoid overflow when computing
information for -v printing.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5857