<br><br><div class="gmail_quote">On Fri, Jun 11, 2010 at 3:03 AM, Maciej Stachowiak <span dir="ltr">&lt;<a href="mailto:mjs@apple.com">mjs@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Jun 10, 2010, at 4:22 PM, Eric Seidel wrote:<br>
<br>
&gt; Example.  Use of a mutable member for AnimationController:<br>
&gt; <a href="https://trac.webkit.org/browser/trunk/WebCore/page/Frame.h#L346" target="_blank">https://trac.webkit.org/browser/trunk/WebCore/page/Frame.h#L346</a><br>
&gt;<br>
&gt; Causes us to pull in AnimationController.h:<br>
&gt; <a href="https://trac.webkit.org/browser/trunk/WebCore/page/Frame.h#L31" target="_blank">https://trac.webkit.org/browser/trunk/WebCore/page/Frame.h#L31</a><br>
&gt;<br>
&gt; Which pulls in additional headers of its own.<br>
<br>
</div>I think what requires including the additional headers is the fact that it&#39;s a data member of class type instead of a pointer; the mutable declaration is unrelated.<br>
<div class="im"><br>
&gt;<br>
&gt; Frame.h is included by lots and lots of cpp files, most of which never<br>
&gt; need AnimationController.h.  Thus all of those intermediate files<br>
&gt; (preprocessor output, assembler output, .o file, etc.) are larger than<br>
&gt; necessary, causing longer builds.  Also any time someone edits an<br>
&gt; AnimationController.h (or a dependent .h) we end up re-building every<br>
&gt; file which includes Frame.h (hundreds of files).<br>
<br>
</div>Making the helper classes of Frame into separately allocated objects could certainly help compile time. It used to be they were all held in a separate FramePrivateData class. I&#39;m not sure when that changed. I don&#39;t know of any considerations besides performance and memory use that would favor the current approach. Testing would show whether it actually matters. It might also be worthwhile to find the checkin that removed the separate private data struct for Frame, to see if that was done for a particular reason.<br>

<div><div></div><div class="h5"><br>
Regards,<br>
Maciej<br>
<br></div></div></blockquote><div><br></div><div>We moved away from the private approach in <a href="http://trac.webkit.org/changeset/40024">http://trac.webkit.org/changeset/40024</a> for a PLT speedup (I apparently did not mention a percentage gain weinig--).  It lately has also allowed us to inline access to some of those properties for another PLT speedup.</div>
<div><br></div><div>-Sam</div></div>