Primitive boolean array packing
shade at redhat.com
Sun Oct 7 19:54:00 UTC 2018
On 10/07/2018 07:51 PM, Andrew Haley wrote:
> On 10/07/2018 04:13 PM, Aleksey Shipilev wrote:
>> On 10/07/2018 02:38 PM, B. Blaser wrote:
>>> Thanks Aleksey, you're absolutely right but a programmer can still
>>> disable this feature and use regular boolean arrays if necessary.
>> I fully expect the JVM feature/flag what optionally breaks the Java
>> specification will be flat out rejected.
> It doesn't break the Java specification:
> The baload instruction is used to load values from both byte and
> boolean arrays. In Oracle's Java Virtual Machine implementation,
> boolean arrays - that is, arrays of type T_BOOLEAN (§2.2,
> §newarray) - are implemented as arrays of 8-bit values. Other
> implementations may implement packed boolean arrays; the baload
> instruction of such implementations must be used to access those
You need to specify what do you mean by "it". Current prototype sure does break the provisions of
JLS 17.6 "Word Tearing":
My comment was about generic thing: we cannot break the Java spec even if we have the JVM flag that
makes it right again. I thought that what B. was suggesting as the escape hatch. Of course, if you
do packed boolean with locked/CAS-ed writes or otherwise guarantee the absence of word tearing, it
does not break the spec.
More information about the jdk-dev