On Thu, 27 Nov 2025 16:16:05 GMT, Chen Liang <[email protected]> wrote:
> Currently, the hotspot compiler (as in ciField) trusts final fields in hidden > classes, record classes, and selected jdk packages. Some classes in the JDK > wish to be trusted, but they cannot apply package-wide opt-in due to other > legacy classes in the package, such as java.util. > > They currently can use `@Stable` as a workaround, but this is fragile because > a stable final field may hold a trusted null, zero, or false value, which is > currently treated as non-constant by ciField. > > We should add an annotation to opt-in for a whole class, mainly for legacy > packages. This would benefit greatly some of our classes already using a lot > of Stable, such as java.util.Optional, whose empty instance is now > constant-foldable, as demonstrated in a new IR test. > > Paging @minborg who requested Optional folding for review. > > I think we can remove redundant Stable in a few other java.util classes after > this patch is integrated. I plan to do that in subsequent patches. This uses another one of the 16-bit instanceKlassFlags, which requires runtime engineers to agree. Need compiler review to check if such IR tests are the best way to ensure constant folding for core library classes. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28540#issuecomment-3586679853
