Request for reviews (M): 8001183: incorrect results of char vectors right shift operaiton

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Oct 22 16:13:21 PDT 2012


http://cr.openjdk.java.net/~kvn/8001183/webrev

In java when small integer values are loaded they are converted to Int with sign 
extension for byte and short or with zero extension for boolean and char. Any 
following arithmetic operation may produce result which will not fit into value 
of the original type. Because of that right shift vector operations produce 
incorrect result when they operate on not just loaded data.

Generate right shift vector operations only if the preceding operation is load.

To get correct result of boolean and char vectors arithmetic right shift 
operation we should use unsigned right shift operation.

Disable unsigned right shift for vectors with signed elements (byte, short) in 
shared code since they are not valid on all platforms.

Added new regression tests prepared by Dean Long and me.

Thanks,
Vladimir


More information about the hotspot-compiler-dev mailing list