Thanks for the explanation Tom and Steve.<br><br><div class="gmail_quote">On Jan 14, 2008 2:48 PM, Tom Rodriguez <<a href="mailto:Thomas.Rodriguez@sun.com">Thomas.Rodriguez@sun.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>Was your original loop representative of the problems you are seeing or<br>was it just an oddity your noticed during analysis?<br><font color="#888888"><br>tom<br></font><div><div></div><div class="Wj3C7c"><br></div></div>
</blockquote><div><br>The original loop only has the extra-block problem. Method calls happen to be completely inlined in the inner loop so there are no spills due to registers being SOC in the normal runs. I stumbled onto the SOC/SOE issue when I disabled inlining as it is easier to study the code with smaller code footprint.
<br><br>At this moment I don't think either the extra block or the change in calling convention can account for significant portion of the 25% performance loss, as the extra jmp should be accurately predicted by the hardware and the important calls are all inlined. I will try to use oprofile to get a global view of both versions.