RFR: 8299576: Reimplement java.io.Bits using VarHandle access [v5]
Michael Kuhlmann
jdk at fiolino.de
Thu Jan 5 11:59:36 UTC 2023
On 1/5/23 12:40, Uwe Schindler wrote:
> The copypasted snippet above is misleading, you need to read the whole statement, so an IllegalStateException can only happen for unaligned access on access modes other than get/set (so volatile or opaque reads): "If access is misaligned then access for anything **other than the get and set access modes** will result in an IllegalStateException.", the sentence you posted is about if it is atomic or not. It just says that on 32 bits, long/double are not atomic for normal set/get.
>
> P.S.: We definitely know that it works on 32 bit, the whole code of Lucene is full of those VarHandles :-)
I think you are replying to my question. ;)
There are two cases here. One is the misaligned index, which is not
relevant here because we're only using get/set.
The other is access to long/double values on 32-bit platforms. This is
mentioned explicitly, and since you are talking about atomic access,
it's also mentioned:
* read write access modes for all T, with the exception of access modes
get and set for long and double on 32-bit platforms.
* atomic update access modes for int, long, float or double. (Future
major platform releases of the JDK may support additional types for
certain currently unsupported access modes.)
It says "access modes get and set", so no explicit atomic access mode. I
would read it as {code}Varhandle.AccessMode.GET{/code} and SET respectively.
If it's for sure working on 32-bit platforms, then probably the Javadoc
comment should be fixed.
-Michael
More information about the core-libs-dev
mailing list