Fwd: review (XS): 7047491: C1: registers saved incorrectly when calling checkcast_arraycopy stub
igor.veresov at oracle.com
Wed May 25 23:56:22 PDT 2011
I guess this mail didn't make it. Resending.
-------- Original Message --------
Subject: review (XS): 7047491: C1: registers saved incorrectly when
calling checkcast_arraycopy stub
Date: Mon, 23 May 2011 12:48:50 -0700
From: Igor Veresov <igor.veresov at oracle.com>
To: hotspot-compiler-dev <hotspot-compiler-dev at openjdk.java.net>
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