Plugin scans all methods in the translation unit, visits methods with reportMemoryUsage name and collects all the reported class members into instrumentedMembers vector. Actually it visits all call expressions inside reportMemoryUsage method and only if the method name of call expression matches with predefined set of instrumentation methods, addMember, addRawPointer etc. then it scans all the arguments of the call expression. It expects that argument has type MemberExpr but for the mutable members the type of the expression is ImplicitCastExpr because it needs to be converted into const T& where T is a template argument of addMember method.
Created attachment 180930 [details] Patch
Committed r138563: <http://trac.webkit.org/changeset/138563>