<div dir="ltr"><div>Wouldn't a generally better solution be to make the no_native the default and instead have to explicitly turn it on with a --native flag? I have found I unless I am checking very many files it usually goes faster to turn it off, at least when looking at the total time.<br><br></div>Robert<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 1 December 2014 at 14:58, Kostis Sagonas <span dir="ltr"><<a href="mailto:kostis@cs.ntua.gr" target="_blank">kostis@cs.ntua.gr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 12/01/2014 10:42 AM, Mikael Pettersson wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Background: ARM processors typically support two related but different<br>
instruction sets and execution modes: ARM (the ordinary one) and Thumb<br>
(an alternative one which offers higher code density at the expense of<br>
lower performance).  With ARMv7, the Thumb mode has been improved and<br>
some environments make it the default.<br></span>
...<span class=""><br>
It's possible to work around this problem by forcing the VM to be<br>
compiled in ARM mode (by adding "-marm" to CFLAGS).  I prepared a<br>
patch to do that, and it fixed the problem on Mattias' system.<br>
<br>
Since changing the compilation mode may or may not be what the<br>
user or system builder intended, I'm reluctant to do this silently.<br>
Therefore I'm considering removing the auto-enable of HiPE on ARM.<br>
Users will have to explicitly enable HiPE, and accept that BEAM will<br>
be in ARM mode not Thumb.<br>
</span></blockquote>
<br>
I do not have a strong opinion but, from what you are describing and from some googling on ARM vs thumb on the internet, it seems to me that adding -marm to the CFLAGS will result in BEAM itself executing faster (or at least not slower than with thumb), and the main advantage of the Thumb mode is in better memory (i-cache?) utilization.  I am not sure why some (recent?) C compilers make Thumb the default, but I guess it's because the ARM processors are often used in embedded applications and they primarily want to optimize for code size rather than speed.  Not sure this is the primary goal of Erlang developers who download and install Erlang/OTP and e.g. want to run dialyzer (as Mattias) on that machine.<br>
<br>
So my current vote would go to add the -marm option anyway when building BEAM, and leave HiPE enabled by default on that platform too.  Erlang developers who are primarily interested in the memory benefits of the Thumb mode can explicitly enable it with an appropriate flag which would also disable HiPE then, at least until the following is fixed.<br>
<br>
It would be nice to investigate where the incorrect mode switch between HiPE and BEAM is and eliminate this if it's not too much work.<span class="HOEnZb"><font color="#888888"><br>
<br>
Kostis</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
erlang-bugs mailing list<br>
<a href="mailto:erlang-bugs@erlang.org" target="_blank">erlang-bugs@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-bugs</a><br>
</div></div></blockquote></div><br></div>