On Mon, 6 Oct 2025 08:01:04 GMT, Christian Hagedorn <[email protected]> wrote:
>> The new memory model rules for strict instance fields (see >> [JDK-8366372](https://bugs.openjdk.org/browse/JDK-8366372)) require a memory >> barrier at the beginning of `java.lang.Object::<init>`. The JITs will try to >> omit it if the receiver type is statically known (potentially via CHA + a >> dependency) and the class does not contain any strict fields. >> >> Potentially, there's some more tricks that we can play. Most importantly, I >> think we can omit barriers for final fields at the end of the constructors >> if the field is also strict. I filed >> [JDK-8369166](https://bugs.openjdk.org/browse/JDK-8369166) for this. >> >> I added a test that already caught >> [JDK-8369044](https://bugs.openjdk.org/browse/JDK-8369044) and will fail >> immediately without the JIT changes (on AArch64). >> >> Thanks, >> Tobias > > test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestStrictFieldBarriers.java > line 204: > >> 202: if (res != 1) { >> 203: System.err.println("Incorrect field value >> observed!"); >> 204: System.exit(1); > > Is there any particular reason why you don't throw a `RuntimeException` here > instead? Yes, it's the best way (I think) to make sure all threads immediately exit if one thread observes an error. Throwing an exception will not stop the other threads. ------------- PR Review Comment: https://git.openjdk.org/valhalla/pull/1656#discussion_r2405280126
