<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">On Sep 10, 2014, at 5:41 AM, Vitaly Davidovich <<a href="mailto:vitalyd@gmail.com">vitalyd@gmail.com</a>> wrote:<div><br><div><blockquote type="cite">I think there's a fundamental problem in trying to "convey" things to the compiler.  Clearly, it can't be some metadata approach since compiler can't just trust user blindly.  The only way I know to convey things is through code shape.<br></blockquote><div><br></div>+1<br><blockquote type="cite"><p dir="ltr">One thing that bothers me is that even fields marked final aren't really treated as such by compiler because it's paranoid of things like reflection.  If there was some way to reassure it that final fields aren't modified behind its back, then more type info can be captured at init time (e.g. array is not null and length is captured as a constant).</p></blockquote>Yup.  See <a href="https://bugs.openjdk.java.net/browse/JDK-6912065">https://bugs.openjdk.java.net/browse/JDK-6912065</a><br></div><div><br></div><div>Actually, this is worth tracking more carefully.  So I created:</div><div>  <a href="https://bugs.openjdk.java.net/browse/JDK-8058164">https://bugs.openjdk.java.net/browse/JDK-8058164</a></div><div><br></div><div> John</div></div></body></html>