<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Yes, the modern java JIT does not need final as does the analysis. &nbsp; However, it is very nice to be able to specify constness, not only to help the JIT along, but also in terms of documenting intent. &nbsp; Given that C# does not have such a construct (too bad) / const is too constrained, the next best thing would be an attribute of some sort. &nbsp; It gets pretty ugly though. &nbsp;&nbsp;</div><div><br></div><div>An analysis of the code tree through the loop body should allow one to observe local invariance for trivial cases without too much trouble (I would think). &nbsp; This would get increasingly complex and murky within delegates and other situations.</div><br><div><div>On Nov 20, 2011, at 1:39 PM, Dawid Weiss wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br></div>As far as I know the final on local variables is only a hint for the java compiler (javac), not jit (hotspot) engine. Detection of loop invariants is done at runtime (during code jitting) so there's really no difference between any of the following in modern Java jits:<div>

<br></div><div>1) (final) int max = array.length;</div><div>for (int i = 0; i &lt; max; i++) {}</div><div><br></div><div><div>2)&nbsp;for (int i = 0; i &lt; array.length; i++) {}</div><div><br></div><div>Dawid</div><div><br></div>

<br><div class="gmail_quote">2011/11/20 Konrad M. <span dir="ltr">&lt;<a href="mailto:konrad.kruczynski@gmail.com">konrad.kruczynski@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

On the other hand, maybe it could be possible to add the final-like<br>
mechanism to Mono's compiler. Such mechanism would be beneficial if the<br>
CLR had some notion of local readonly variables. F# uses non-mutable<br>
variables a lot, so maybe CLR recognizes it. I am not sure what kind of<br>
transparent denotation could be used - maybe some kind of comment, like<br>
it was done in MS Java in the pre-annotations days.<br>
<br>
Does Mono team see this as something worth considering? Probably proper<br>
analysis of assignments is a better idea.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Regards,<br>
&nbsp;Konrad<br>
<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</div></div></blockquote></div><br></div>
</blockquote></div><br></body></html>