RFR: jsr166 jdk9 integration wave 9

Martin Buchholz martinrb at google.com
Fri Aug 12 19:03:16 UTC 2016

Another way of looking at it:

Machines like the types "int" and "double".

Use of float instead of double in an API is almost always a mistake, except
to save space for arrays of values.
Similarly, it's never worth optimizing a boolean or byte value to actually
take up less than 4 bytes, except when storing them in arrays.
We don't currently have AtomicBooleanArray (AtomicBitSet?) or
AtomicByteArray, although we've gotten to the point where we _could_ have

On Thu, Aug 11, 2016 at 3:59 PM, Martin Buchholz <martinrb at google.com>

> On Thu, Aug 11, 2016 at 2:12 PM, Aleksey Shipilev <
> aleksey.shipilev at gmail.com> wrote:
>> On 08/11/2016 11:56 PM, Martin Buchholz wrote:
>> > I can imagine a machine that has a native cas instruction, but no native
>> > exchange instruction, but no one ever got fired for optimizing for x86.
>> ...which would be less of an issue once we switch to proper-boolean
>> VarHandles, not the int-simulation. This way, implementations may choose
>> how to implement boolean getAndSet. Probably in Unsafe, but that would
>> still be lower and more reusable than in AtomicBoolean alone.
> I like the current int simulation, at least for AtomicBoolean.  You'll
> never save space by switching to boolean, because of alignment, and you
> don't have to worry about machines without byte-sized instructions.  But
> like I always say, "no one ever got fired for optimizing for x86"!

More information about the core-libs-dev mailing list