Primitive boolean array packing

Andrew Haley aph at redhat.com
Sun Oct 7 11:47:45 UTC 2018


On 10/07/2018 09:01 AM, Aleksey Shipilev wrote:
> On 10/07/2018 12:05 AM, B. Blaser wrote:
>> 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.

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the jdk-dev mailing list