It turns out that clang has good API for plugins and a simple plugin for checking the instrumentation coverage contains ~200 loc. Thus the first option looks useless.
Regards, Tim. On Wed, Jul 25, 2012 at 11:34 PM, Maciej Stachowiak <[email protected]> wrote: > > On Jul 25, 2012, at 2:08 AM, Yury Semikhatsky <[email protected]> wrote: > > > > On Tue, Jul 24, 2012 at 10:34 PM, Maciej Stachowiak <[email protected]> wrote: > >> >> On Jul 24, 2012, at 12:39 AM, Yury Semikhatsky <[email protected]> >> wrote: >> >> >> >> On Tue, Jul 24, 2012 at 12:47 AM, Maciej Stachowiak <[email protected]>wrote: >> >>> >>> On Jul 23, 2012, at 8:09 AM, Yury Semikhatsky <[email protected]> >>> wrote: >>> >>> * >>> >>> First option we consider is to define a class with the same set of >>> fields as the instrumented one, then have a compile time assert that size >>> of the reference class equals to the size of the instrumented one. See >>> https://bugs.webkit.org/attachment.cgi?id=153479&action=review for more >>> details. >>> >>> Pros: compile time error whenever size of an instrumented class changes >>> with the appropriate modifications to the instrumentation function. >>> Cons: it will require each committer to adjust the reference class and >>> the instrumentation on any modification that affects size of the >>> instrumented class. Changes that don't affect size of the class will go >>> unnoticed. >>> * >>> >>> >>> What is the advantage of this approach compared to just using the sizeof >>> operator on the relevant classes? >>> >>> Regards, >>> Maciej >>> >>> >> Summing up sizeof type of each field and parent class and comparing it to >> sizeof the class would do the same thing except that we would need >> sometimes to manually handle alignment discrepancies on different platforms. >> >> >> I'm not sure I understand the problem you are trying to solve. Isn't >> sizeof on the class the correct answer? Why would you need to manually add >> sizeof for the fields? You need sizes of objects referenced by pointer, but >> that won't be affected by alignment issues. >> > We use sizeof to report *this size, after that we need to go through the > fields and report referenced objects. The problem is that the set of fields > may change eventually and break the instrumentation. The compile check > should help developers not to forget to update the instrumentation and add > traversal code for the new fields. > > > It seems like the compile-time check would give false positives (if you > add a non-pointer field) and false negatives (if you change the size of a > buffer pointed to). The most obvious way to fix it would also be to update > the size of the reference class and not do anything special about new > pointers, which would be the wrong thing to do. So based on that, I'm not > sure it's worth the cost. I think compile-time checks are more effective > when the failure is more directly related to a developer mistake. > > Regards, > Maciej > > > _______________________________________________ > webkit-dev mailing list > [email protected] > http://lists.webkit.org/mailman/listinfo/webkit-dev > >
_______________________________________________ webkit-dev mailing list [email protected] http://lists.webkit.org/mailman/listinfo/webkit-dev

