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.


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