Branch removal

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Sep 28 11:01:25 PDT 2012


Add flags -XX:+PrintCompilation -XX:+PrintInlining (and may be 
-XX:-TieredCompilation to look only on C2 compilations). Could be one of inlined 
method has loop. The graph could be also complicated if it is OSR compilation 
(there is % next to compilation number in PrintCompilation output).

Vladimir

Patrick Metzler wrote:
> Hi Vladimir,
> 
> On 09/27/2012 09:04 PM, Vladimir Kozlov wrote:
>  > I think the best solution for you is to modify the java code:
>  >
>  > aSwap = a.getCopy();
>  > for (E e : arrayList) {
>  >    aSwap.do();
>  >    if (e.condition())
>  >      a = aSwap;
>  >    aSwap = a.getCopy();
>  > }
> 
> I changed the source code like above and adapted my transformation. It 
> seems to work now, but I still need to test whether the result of the 
> algorithm is correct.
> 
> It would be interesting to know why a loop with only one back edge in 
> bytecode gets two back edges in IDEAL directly after parsing and how 
> common/uncommon this is. Maybe I'll investigate this further, but for 
> now I'll stick with the working (non-general) solution.
> 
> Thanks again for your advise.
> 
> Best regards,
> Patrick


More information about the hotspot-compiler-dev mailing list