[lworld] RFR: 8373202: [lworld] ObjectReference.equals should follow == semantics for value objects [v5]
Chris Plummer
cjplummer at openjdk.org
Fri Jan 23 20:27:29 UTC 2026
On Fri, 23 Jan 2026 20:16:12 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:
>> src/jdk.jdi/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java line 838:
>>
>>> 836: }
>>> 837:
>>> 838: public boolean supportsValueClasses() {
>>
>> What happens if not running in preview mode? Value classes are not supported in that case, but as implemented this API will say they are supported, leading to isValueClass() looking at modifiers in a way that is not compatible when value classes are not supported.
>>
>> JDI didn't really run into this type of problem with virtual thread support. It did modify a couple of new public APIs with:
>>
>> @PreviewFeature(feature = PreviewFeature.Feature.VIRTUAL_THREADS)
>>
>> However, I don't see how that helps us here. It seems we need to query the debug agent to find out if value classes are supported. There's no good way to do that. Is there any way for JDI to somewhat detect that value class support is supported (preview mode is enabled).
>
>> What happens if not running in preview mode? Value classes are not supported in that case, but as implemented this API will say they are supported, leading to isValueClass() looking at modifiers in a way that is not compatible when value classes are not supported.
>
> It should work correctly. The IDENTITY modifier bit is not used for other purposes in JDK 27 (Alex, please, fix me if it is wrong). So, the check for version >= 27 is needed. If preview is not enabled in target VM, so it does not support value classes then the IDENTITY modifier bit will be always set which results in `isValueClass()` to always return `false`.
So in JDK 27, with or without enable preview, the IDENTITY modifier bit is accurate and can be looked at, but in previous JDK versions it might be used for something else?
-------------
PR Review Comment: https://git.openjdk.org/valhalla/pull/1834#discussion_r2722726810
More information about the valhalla-dev
mailing list