[Development] What's the status of a moved-from object?
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