RFR(S) 8031743: C2: loadI2L_immI broken for negative memory values

Igor Veresov igor.veresov at oracle.com
Sat Jan 18 13:18:46 PST 2014

We have this convention already in quite some places, so I was trying to follow it... For example on sparc there is  immU13, which actually means simm13 & >= 0, which means it’s actually 12 bit. Likewise on ARM we have immURot that works that same way. So, the way these things go, I think, is that immUX means: fits in X bits and is positive.


On Jan 18, 2014, at 1:02 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> immU32 name is not correct, it should be immU31.
> Vladimir K
> On 1/18/14 12:51 PM, Igor Veresov wrote:
>> Transformation of (ConvI2L (AndI (LoadI mem) mask)) to (AndI (LoadUI2L (mem) mask) is only valid for positive mask, otherwise the sign extending effect of ConvI2L is missed. The solution is to restrict the optimization for the positive values of mask.
>> Webrev: http://cr.openjdk.java.net/~iveresov/8031743/webrev.00/
>> Testing: new regression test, jprt
>> Thanks!
>> igor

More information about the hotspot-compiler-dev mailing list