RFR (M): 8000805: JMM issue: short loads are non-atomic
vladimir.kozlov at oracle.com
Mon Oct 22 08:25:59 PDT 2012
Instead of checking phase->is_IterGVN() you should check can_reshape flag which is used exactly for such purpose.
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:
>> 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