On Fri, 3 Apr 2026 01:55:56 GMT, Chris Plummer <[email protected]> wrote:
> com/sun/jdi/EATests.java synchronizes on an Integer instance. Although this > currently works, it is discouraged. See the following doc on value based > classes: > > https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/doc-files/ValueBased.html > > "Synchronization on instances of value-based classes is strongly discouraged, > because the programmer cannot guarantee exclusive ownership of the associated > monitor. > > Identity-related behavior of value-based classes may change in a future > release. For example, synchronization may fail." > > That second part is realized by Valhalla. The synchronization fails with: > > `java.lang.IdentityException: Cannot synchronize on an instance of value > class java.lang.Integer` > > Valhalla CR [JDK-8372831](https://bugs.openjdk.org/browse/JDK-8372831) covers > that failure, but I thought it best to address this in mainline first. > > Tested with all of CI tier1, tier2 svc, and tier5 svc. Marked as reviewed by lmesnik (Reviewer). test/jdk/com/sun/jdi/EATests.java line 2411: > 2409: * Test relocking eliminated @ValueBased object. > 2410: */ > 2411: class EARelockingObject extends EATestCaseBaseDebugger { The goal of testcase was to specifically lock on the ValueBased object. I think this testacase now doing the same as EARelockingSimple and the best fix would be just to delete this testcase. ------------- PR Review: https://git.openjdk.org/jdk/pull/30560#pullrequestreview-4053956492 PR Review Comment: https://git.openjdk.org/jdk/pull/30560#discussion_r3031128644
