On Tue, 4 Nov 2025 19:50:25 GMT, Quan Anh Mai <[email protected]> wrote:
> Hi, > > Currently, the layout of a nullable `j.l.Long`, if flattened, must be at > least 65 bits. This exceeds the maximum size a GPR can generally hold, as > well as the default object alignment of Hotspot. As a result, accessing such > elements atomically require 128-bit atomic accesses, as well as mechanism > from the GC to allocate overaligned objects. And even then, we will encounter > the same issue, just with larger objects. > > We can observe that, a nullable element does not really have an additional > bit of information, it just has an additional state (e.g. a nullable > `j.l.Long` has `2^64 + 1` states, not `2^65`), and it is just unfortunate > that we need a whole bit to be able to represent such an element. However, > we can rely on the fact that all payload bits are irrelevant when the null > marker is 0 to make a sequence of more than 1 memory access instructions look > atomic. > > C1 has not been implemented yet, we will bailout the compilation when > encountering such an access. I will implement this functionality later. > > Please take a look and leave your reviews, thanks a lot. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/valhalla/pull/1720
