On 6/7/12 12:55 AM, "ext Thiago Macieira" <thiago.macie...@intel.com> wrote:
>On quarta-feira, 6 de junho de 2012 21.56.16, lars.kn...@nokia.com wrote: >> >https://codereview.qt-project.org/26981-Optimisedeletion >> >> I might be wrong (getting tired), but I think this reintroduces the >> problem with forward declared pointers that the first patch fixes. > >It's a different solution. > >The Qt 4 solution for this was to return false from a virtual function >(the >default implementation), which would require the caller to perform the >deletion. The code was like this: > > if (!d->destroy()) > delete value; > >This function was called from deref(), which meant that where a reference >could be dropped also required a full definition of the class. Yes, that's what the first commit was fixing. > >The new optimisation does not introduce "delete value" into the reference- >dropping code path. That is still: > > d->destroy() >which does: > void destroy() { destroyer(this); } > (destroyer is a function pointer) > >The optimisation simply changes what the pointed function does. Wiithout >it, >it will call another stored function pointer. With it, it will call >delete >directly. You're right. My brain probably stopped working shortly before midnight. Will review the remaining patches today as well. Cheers, Lars _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development