review (S) for 6968348: Byteswapped memory access can point to wrong location after JIT
Ulf.Zibis at gmx.de
Thu Sep 30 14:53:20 PDT 2010
Ah, ok, I'm running on Intel 32-bit architecture.
Is it ensured, that this test is always running on 64-bit architectures, but never on 32-bits?
Am 30.09.2010 19:35, schrieb Tom Rodriguez:
> It fails for me.
> % /java/re/jdk/1.7.0/promoted/all/b104/binaries/solaris-amd64/fastdebug/bin/java -d64 Test6968348#
> # A fatal error has been detected by the Java Runtime Environment:
> # SIGSEGV (0xb) at pc=0xfffffd7ff94f5983, pid=14046, tid=2
> # JRE version: 7.0
> # Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0-b05-fastdebug mixed mode solaris-amd64 compressed oops)
> # Problematic frame:
> # J Test6968348.test()V
> # An error report file with more information is saved as:
> # /export/ws/baseline/test/compiler/6968348/hs_err_pid14046.log
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> Maybe you're running in an environment were it happens to hit in mapped memory.
> On Sep 30, 2010, at 3:46 AM, Ulf Zibis wrote:
>> I have run Test6968348.java on b104.
>> It doesn't fail.
>> Am 30.09.2010 03:25, schrieb Tom Rodriguez:
>>> 6968348: Byteswapped memory access can point to wrong location after JIT
>>> x86_64.ad has match rules for (Store (ReverseBytes val)) but the
>>> definition is buggy since the val can be used in address of the store.
>>> It also doesn't record that it changes the input value. The fix is to
>>> simply remove these rules since they are no better than what we'd get
>>> otherwise. x86_32.ad doesn't have these rules. sparc.ad does but it
>>> can generate better code for these forms because it can use the byte
>>> swapped ASI and doesn't have to modify the register before storing it.
>>> Tested with new test case.
More information about the hotspot-compiler-dev