It is relatively frequent case when we report a pointer to an object of a class and this class does not have reportMemoryUsage method but its parent does. Current implementation does not detect such cases. As a result we count such objects via sizeof and do not call reportMemoryUsage. I found a working solution and need to check it against all the WebKit compilers. http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
Created attachment 179485 [details] Patch
The coverage increases by ~3% on cnn, nytimes and google.
Comment on attachment 179485 [details] Patch Attachment 179485 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/15310752
Comment on attachment 179485 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=179485&action=review > Source/WTF/wtf/MemoryInstrumentation.h:133 > + struct Base : public Type, public BaseMixin { }; Will it compile if there is no default constructor for Type ?
Created attachment 179698 [details] for try-bots. speculative fix for windows
Comment on attachment 179485 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=179485&action=review >> Source/WTF/wtf/MemoryInstrumentation.h:133 >> + struct Base : public Type, public BaseMixin { }; > > Will it compile if there is no default constructor for Type ? Why is it called Base, shouldn't it be Derived instead? > Source/WTF/wtf/MemoryInstrumentation.h:144 > + template <int> template <bool> ?
Committed r137892: <http://trac.webkit.org/changeset/137892>
Reverted r137892 for reason: it broke compilation on windows Committed r137893: <http://trac.webkit.org/changeset/137893>
Committed r137911: <http://trac.webkit.org/changeset/137911>