Hi,

I answered on the PR on github. The documentation is misleading:

   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 :-)

And no, it doe snot mean "get-and-set". Read the whole text, it is definitely correct, but if you don't read everything it may mislead you. So it can be improved.

Uwe

Am 05.01.2023 um 13:31 schrieb Michael Kuhlmann:
The more I think about it, the clearer is that the first line of the Javadoc is contrary to the other lines:

On 1/5/23 12:59, Michael Kuhlmann wrote:
* read write access modes for all T, with the exception of access modes get and set for long and double on 32-bit platforms.

So all read write modes will work, just if it's long or double then it won't work for get and for set access mode. (Or is getAndSet meant? But it's not called so, it's "get and set", so two access modes, or what?)

Then the following lines state that even harder access modes will work also for long and double.

So I think this should be labeled as "getAndSet" or at least "get-and-set" access mode. Currently it's very confusing.

--
Uwe Schindler
uschind...@apache.org ASF Member, Member of PMC and Committer of Apache Lucene and Apache Solr
Bremen, Germany
https://lucene.apache.org/
https://solr.apache.org/

Reply via email to