<div dir="ltr">Hi John,<div><br></div><div>Please look at the new webrev for the RFR:&nbsp;<a href="http://cr.openjdk.java.net/~kmo/8003585/webrev.02/">http://cr.openjdk.java.net/~kmo/8003585/webrev.02/</a></div><div><br></div>
<div>The rationale and results are in the RFR thread.</div><div><br></div><div>Thanks,</div><div>Kris</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 13, 2014 at 12:32 PM, John Rose <span dir="ltr">&lt;<a href="mailto:john.r.rose@oracle.com" target="_blank">john.r.rose@oracle.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><div><div>On Feb 13, 2014, at 9:11 AM, Krystal Mok &lt;<a href="mailto:rednaxelafx@gmail.com" target="_blank">rednaxelafx@gmail.com</a>&gt; wrote:</div>
<br><blockquote type="cite"><div style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
Here, the code in line 1 should ensure a.length &gt; 2, and that predicate should propagate to line 2. But in the generated code, there&#39;s still a bounds check (a.length != 0) in line 2, right before the actual element load.</div>
</blockquote><br></div></div><div>We use two main sources of information to delete redundant tests: type information (such as integer ranges) and pattern matching on dominating tests (IfNode::). &nbsp;In this case, the array type information does not carry the path-dependent information about a.length. &nbsp;And, the dominating checks are not sufficiently similar to fold together. &nbsp;But the common case is optimized, so I&#39;m happy.</div>
<div><br></div><div>You might want to look at the code for HashMap.getNode, which (I think) optimizes with your existing logic.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>&mdash; John</div><br></font></span></div>
</blockquote></div><br></div>