Request for reviews (M): 8001183: incorrect results of char vectors right shift operaiton
vladimir.kozlov at oracle.com
Mon Oct 22 16:13:21 PDT 2012
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.
More information about the hotspot-compiler-dev