[webkit-dev] WebKit memory instrumentation
yurys at chromium.org
Wed Jul 25 02:08:58 PDT 2012
On Tue, Jul 24, 2012 at 10:34 PM, Maciej Stachowiak <mjs at apple.com> wrote:
> On Jul 24, 2012, at 12:39 AM, Yury Semikhatsky <yurys at chromium.org> wrote:
> On Tue, Jul 24, 2012 at 12:47 AM, Maciej Stachowiak <mjs at apple.com> wrote:
>> On Jul 23, 2012, at 8:09 AM, Yury Semikhatsky <yurys at chromium.org> 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
>> 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
>> What is the advantage of this approach compared to just using the sizeof
>> operator on the relevant classes?
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the webkit-dev