[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-dev
Subject:    Output register allocation constrain fix for HotSpot
From:       David.Holmes () oracle ! com (David Holmes)
Date:       2011-03-26 3:11:45
Message-ID: 4D8D5971.5000207 () oracle ! com
[Download RAW message or body]

Forgot to mention that you can't push directly to Hotspot as it needs to 
go through our internal JPRT submission system. So someone from the 
runtime team will have to shepherd this for you.

David

Deepak Bhole said the following on 03/26/11 12:59:
> Hi,
> 
> When trying to build IcedTea with GCC 4.6, we encountered an error that
> stems from incorrect register allocation in release_store_fence(volatile
> jbyte*  p, jbyte  v) in orderAccess_linux_x86.inline.hpp.
> 
> Specifically, the inline assembly call trying to do an atomic 8-bit
> exchange sets the output register constrain to r. The older versions GCC
> (by chance) ended up assigning the l-part of one of the a/b/c/d
> registers. However with 4.6, it attempts to do this with the
> %*bp register. This is fine on x86_64, but on i686 the bp register
> cannot be addressed in 8-bit (%bpl). This leads to a compilation
> failure:
> 
> /builddir/build/BUILD/icedtea6-1.10/openjdk-ecj/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp: \
>                 Assembler messages:
> /builddir/build/BUILD/icedtea6-1.10/openjdk-ecj/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp:160: \
>                 Error: bad register name `%bpl'
> /builddir/build/BUILD/icedtea6-1.10/openjdk-ecj/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp:160: \
> Error: bad register name `%bpl' 
> It is possible to make it work on both 32 and 64-bit by constraining the
> output register further to only be one of a/b/c/d (=q).
> 
> Though it was only that function that caused an error, I think it'd be
> best to change both uses of xchgb in orderAccess_linux_x86.inline.hpp to
> use =q. Here is the webrev for it:
> http://cr.openjdk.java.net/~dbhole/register-allocation-fix/webrev.00/
> 
> If there are no issues, I'd be happy to push the above change.
> 
> Cheers,
> Deepak


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic