review (XS): 7047491: C1: registers saved incorrectly when calling checkcast_arraycopy stub

Igor Veresov igor.veresov at
Mon May 23 12:48:50 PDT 2011

Incorrect handling of the registers made runThese fail one of the 
arraycopy tests on 64bit windows with -d64 -Xcomp -XX:+TieredCompilation.

The problem is that when we call the checkcast_arraycopy stub we assume 
that it abides to C calling convention, but in fact it doesn't, so it 
can kill the registers containing arguments that are expected later by 
the slow stub. The easiest solution is to save argument registers before 
the call and then restore them.


Tested with JPRT by passing -XX:+TieredCompilation to every test.


More information about the hotspot-compiler-dev mailing list