RFR (M): 8000805: JMM issue: short loads are non-atomic

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Oct 22 08:25:59 PDT 2012


Vladimir I.

Instead of checking phase->is_IterGVN() you should check can_reshape flag which is used exactly for such purpose.

Thanks,
Vladimir K.

On Oct 22, 2012, at 8:09 AM, Vladimir Ivanov wrote:

> Updated version: http://cr.openjdk.java.net/~vlivanov/8000805/webrev.01/
> 
> Removed changes in AD files and perform transforms during IGVN phase
> when Load has a single user.
> 
> Best regards,
> Vladimir Ivanov
> 
> On 10/19/12 22:39, Vladimir Ivanov wrote:
>> http://cr.openjdk.java.net/~vlivanov/8000805/webrev.00/
>> 282 lines changed: 255 ins; 27 del; 0 mod
>> 
>> Ideal transformations during parsing & IGVN may rematerialize loads in
>> order to reify useful information (like signed/unsigned load). Such
>> behavior breaks JMM - instead of a single atomic load, multiple loads
>> are performed violating consistency of loaded data.
>> 
>> The fix is to disable such transformations at all, but perform relevant
>> optimizations during matching.
>> 
>> It fixes only C2 part of problem. С1 has similar deficiency, but it'll
>> be addressed separately.
>> 
>> Testing: failing test, test for new matching rules, JPRT, CTW (x86, x64
>> & sparc).
>> 
>> Best regards,
>> Vladimir Ivanov



More information about the hotspot-compiler-dev mailing list