The SMR versions of the freelist, queue (unbounded many many) and stack now compile.
I have to make tests for them now, from the non-SMR test code – that’s quite a lot of work.
I’m going to make a benchmark for the freelist first, I really want to see how much impact SMR has.
The way I’ve implemented SMR involved one CAS per operation, which is a lot of work. The freelist however now only needs CAS, not DWCAS, so that gives a 50% or so performance improvement. So we’re now two CAS rather than one DWCAS – but we also have the overhead of the SMR clean/release work.
I also need to fix the freelist – which is to say, make the elimination layer perform as I think it should, rather than how it is!