On 2015-07-07 6:37 AM, Aryeh Gregor wrote:
Did you check whether this actually occurs in an optimized build? C++
allows temporaries to be optimized away under some circumstances,
e.g., when returning a local variable. It would make a lot of sense
to me if it allowed the temporary created by a ternary operator to be
optimized away.
No, I never checked if it happens on an optimized build, but as C++
follows an "as-if" principal, which means that code has to execute as if
those temporaries had been created. Unfortunately, AddRef and Release
are virtual, which, I'm pretty sure, means that the compiler can't
optimize them out as they may have arbitrary side effects :(.
So the temporaries are probably eliminated, but the calls to AddRef and
Release are probably not. I could be wrong on this though.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform