<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Could it be related to the change in 1166 to use XCHG between register/mem locations instead of a MOV to a (now unavailable) temp register in genPushRegisterArgsForNumArgs:?<div class="">According to&nbsp;<a href="http://www.agner.org/optimize/instruction_tables.pdf" class="">http://www.agner.org/optimize/instruction_tables.pdf</a>&nbsp;, XCHG with m/r operands has major penalties on most platforms compared to m/r MOV, which would be a problem if it's used for a large percent of sends...</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Henry</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 20 May 2015, at 3:07 , David T. Lewis &lt;<a href="mailto:lewis@mail.msen.com" class="">lewis@mail.msen.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="">The generated source files have a comment block that indicate the VMMaker<br class="">sources from which they were generated. The SVN 3306 src files came from<br class="">VMMaker.oscog-eem.1155, and the SVN 3308 src files were generated from<br class="">VMMaker.oscog-eem.1178. The changes that produce the performances difference<br class="">will be found somewhere in the VMMaker commits it that range.<br class=""><br class="">Dave<br class=""><br class=""><br class="">On Tue, May 19, 2015 at 10:40:15PM +0200, Levente Uzonyi wrote:<br class=""><blockquote type="cite" class=""><br class="">And after that I checked out 3308 of src, and rebuilt the VM again:<br class=""><br class="">'934306569 bytecodes/sec; 46368169 sends/sec'<br class=""><br class="">The files which were changed from 3306 to 3308 are:<br class=""><br class="">U &nbsp;&nbsp;&nbsp;src/vm/cointerp.c<br class="">U &nbsp;&nbsp;&nbsp;src/vm/cointerpmt.c<br class="">U &nbsp;&nbsp;&nbsp;src/vm/cogit.c<br class="">U &nbsp;&nbsp;&nbsp;src/vm/cointerp.h<br class="">U &nbsp;&nbsp;&nbsp;src/vm/gcc3x-cointerp.c<br class="">U &nbsp;&nbsp;&nbsp;src/vm/cointerpmt.h<br class="">U &nbsp;&nbsp;&nbsp;src/vm/gcc3x-cointerpmt.c<br class="">U &nbsp;&nbsp;&nbsp;src/vm/cogit.h<br class="">U &nbsp;&nbsp;&nbsp;src/plugins/QuicktimePlugin/QuicktimePlugin.c<br class=""><br class="">Levente<br class=""><br class="">On Tue, 19 May 2015, Levente Uzonyi wrote:<br class=""><br class=""><blockquote type="cite" class=""><br class="">The difference is somewhere in the sources. I just checked out revision <br class="">3306 of the src directory, and rebuilt a CogVM (ht one, and kept the <br class="">platform files at 3345. I used some extra CFLAGS which are responsible for <br class="">the higher bytecodes/sec, ignore that.). It gives the following:<br class=""><br class="">'941176470 bytecodes/sec; 122927085 sends/sec'<br class=""><br class="">While 3343 gives:<br class=""><br class="">'896672504 bytecodes/sec; 46102703 sends/sec'<br class=""><br class="">Levente<br class=""><br class=""></blockquote></blockquote></div></blockquote></div><br class=""></div></body></html>