[8u20] [9] RFR (S): 8043546: C1 optimizes @Stable instance fields with default values

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Wed Jul 9 18:47:42 UTC 2014


http://cr.openjdk.java.net/~vlivanov/8043546/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8043546
(not public because contains internal links)

C1 doesn't respect @Stable contract and constant folds loads from stable 
instance fields w/ default values. The fix is to add missing check.

C1 already optimizes stable static fields and after this change it also 
optimizes stable instance fields. C1 doesn't support stable array, so 
tests are changed to distiguish 3 outcomes: no @Stable support, C1 & C2. 
I'll try to extend C1 support to arrays in the future.

The fix is very focused, since it's targeted for 8u20. I want to 
refactor the code for 9 & 8u40 and separate is_constant() and 
is_stable() properties for instance fields. Current implementation is 
error-prone, since it requires every place where is_constant() for 
instance field is used to have a check for stable. It's safer to miss 
optimization opportunity rather than doing wrong optimization.

Improved unit tests to test C1 as well. Also, removed dependency on JMX.

Testing: regression tests

Thanks!

Best regards,
Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list