Primitive boolean array packing

Roman Kennke rkennke at redhat.com
Sun Oct 7 11:51:38 UTC 2018


>>> I didn't search much if such experiments have already been
>>> accomplished, but I'd like to take the temperature of this feature as
>>> completing the implementation represents a significant amount of work.
>>> Is this something that is worth exploring?
>>
>> The most problematic part, in my mind, is that JMM requires the absence of word tearing for array
>> element accesses. See here: https://shipilev.net/blog/2014/jmm-pragmatics/#_part_ii_word_tearing
>>
>> With densely packed boolean[], you'd need to convert plain stores to locked/CAS-loops to support
>> this, I think, which raises all sorts of performance questions. Choosing between boolean[] and
>> BitSet is basically choosing between stricter/relaxed concurrency guarantees vs dense/sparse footprint.
> 
> But you get a lot of performance conflicts between cores having to share
> cache lines anyway. Maybe we should do some performance experiments: we
> wouldn't need to do all of the C2 work, just write a little C++ and asm
> code and measure what happens under some plausible conditions. We'd have
> to try both contended and uncontended situations.

Are boolean arrays even common enough to make a difference?

Roman

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20181007/6baaf2ea/signature-0001.asc>


More information about the compiler-dev mailing list