|
From: Nicholas N. <nj...@cs...> - 2006-12-15 03:35:06
|
On Thu, 14 Dec 2006, Ben Liblit wrote: > Heh. :-D I'm a bit surprised too. My best guess is that the > VALGRIND_DISCARD_TRANSLATIONS call is behaving as a no-op just like any > other client call would when executed in non-Valgrind-translated code. > I'm invoking VALGRIND_DISCARD_TRANSLATIONS from an external function, > and presumably Valgrind leaves these alone. Ah, yes, that's what'll happen. If you run Valgrind under Valgrind things will be different :) >> If so, I'd probably use the support for conditional dirty calls > > Ah, I hadn't noticed that before. OK, I may give this a try. It's > likely that this will be slower than doing things unconditionally, > though. The actual instrumentation work is pretty fast, and can even be > "inlined" using just a handful of UCode instructions instead of a dirty > call if I'm not trying to do crazy things like call > VALGRIND_DISCARD_TRANSLATIONS. Which version of Valgrind are you using? The UCode representation hasn't been used since version 3.0.0, when we switched to the "Vex" representation. This was about two years ago. Vex supports conditional calls, but I don't think UCode did. Nick |