On Sun, Aug 2, 2009 at 1:41 AM, Adam Barth<aba...@webkit.org> wrote: > On Sun, Aug 2, 2009 at 1:13 AM, Darin Adler<da...@apple.com> wrote: >> I noticed that many JavaScript binding implementations are now calling the >> virtual function scriptExecutionContext on DOM nodes. This should never be >> done! That's a virtual function, so it's not as fast as calling document(). >> The virtual Node::scriptExecutionContext() function should be made private >> so that we can catch at least some cases of this programming mistake at >> compile time. >> >> When this change was made, this presumably slowed down DOM bindings, since >> document() is an inline function that expands to a single memory read and >> scriptExecutionContext() is a virtual function call. >> >> When was this done? Can the person who did it fix it? > > Do you mean the two calls to scriptExecutionContext() in > JSNodeCustom.cpp? Those appear to have been added in > http://trac.webkit.org/changeset/40675 by Sam Weinig (reviewed by > Darin Adler).
Actually, that change just moved code that was actually introduced in http://trac.webkit.org/changeset/38063 by Alexey Proskuryakov (reviewed by Darin Adler). > If you mean one of the other 36 occurrences of > scriptExecutionContext, I'm not sure, but we can certainly track it > down. > > Is there a benchmark that shows the performance issue? That will be > helpful in making sure we've fixed the problem. > >> There are various techniques that can be used to fix this. >> >> One is to only call scriptExecutionContext in generic code, and use >> functions named document() in less generic code that's working with a Node >> rather than an EventTarget. >> >> Another is to break scriptExecutionContext into virtual and non-virtual >> parts as we do with functions like Node::prefix and Node::virtualPrefix. >> >> -- Darin >> >> _______________________________________________ >> webkit-dev mailing list >> webkit-dev@lists.webkit.org >> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev >> > _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev