[Development] What's the status of a moved-from object?

Olivier Goffart olivier at woboq.com
Mon May 20 18:34:59 CEST 2019


On 20.05.19 17:27, Konstantin Tokarev wrote:
> 
> 
> 20.05.2019, 18:21, "Thiago Macieira" <thiago.macieira at intel.com>:
>> On Monday, 20 May 2019 06:56:56 PDT Lars Knoll wrote:
>>>   I actually think we should consider getting rid of shared_null and instead
>>>   have d == nullptr as the null/default constructed state of the object. Yes,
>>>   that means we need to check for d == nullptr in member functions, but I
>>>   don’t think the overhead is a problem, as d will have to be loaded into a
>>>   register in any case.
>>
>> It does introduce a compare-and-branch that wouldn't otherwise be there, but
>> the cost is minimal compared to what most API would be doing, indeed.
> 
> We should wrap d == nullptr in Q_UNLIKELY() to make branch predictor assume
> non-null path by default.

I would not do that. Q_UNLIKELY does very little to the branch predictor, it 
only tell the compiler to put that part of the branch in a cold area (and also 
optimize for size instead of for speed)
Might not be a good idea considering that default constructed object is 
actually quite likely.



More information about the Development mailing list