RFR(XS): 8148353: [linux-sparc] Crash in libawt.so on Linux SPARC
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Feb 22 18:18:43 UTC 2016
Use macroassembler instruction signx() for sign extension. Otherwise it
is good.
Do you know where move32_64() is called from in this case? Compiled code
should clean upper bits for int arguments.
Thanks,
Vladimir
On 2/22/16 2:05 AM, Roland Westrelin wrote:
> Native code is passed an int (in a 64 bit register) which has some bits set in the upper 32 bit half. The native code uses that value for an address computation. That results in a wrong memory access. From a few experiments with code generated by gcc, it seems it expects values to be clean on function entry. The fix cleans the 32 bit value before the native call.
>
> http://cr.openjdk.java.net/~roland/8148353/webrev.00/
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list