|
From: Julian S. <js...@ac...> - 2007-08-28 21:47:23
|
Recently I committed to the trunk, a bunch of minor refinements to Valgrind's code generation and optimisation machinery. Probably the biggest code generation change in some time. The effect is to reduce the amount of code the JIT produces by 0% to 14%, with unfortunately a smaller improvement in performance. This is on all platforms, to varying extents. The changes are, roughly: * improvements to register allocation, which significantly reduce the amount of spill code. This affects all targets but most markedly x86, as that has fewest registers. * improvements to the amd64 code generator, to produce shorter instructions in some cases. * partially redo the way Memcheck does uninitialised-value checks. This offers greater scope for optimising away unneeded checks and computations. * many minor improvements to instruction selection on all platforms. I believe the changes are correct, but would appreciate folks checking out and testing the trunk (see http://valgrind.org/downloads/repository.html) In particular it would be useful to hear of any instability this may have caused. And, because Memcheck optimises away checks more aggressively, I would especially be interested to hear of any situations where the trunk does not report an uninitialised-value error, but the trunk before these changes, does. The changes were committed in the period Sat Aug 25 through to Tues Aug 28 (vex svn revisions 1778 through 1784, valgrind svn revisions 6779 through 6787). J |