Summary: | REGRESSION: High CPU usage loading HTML5 spec | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Matt Lilek <dev+webkit> | ||||||||||||
Component: | New Bugs | Assignee: | Dave Hyatt <hyatt> | ||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||
Severity: | Normal | CC: | ap, hyatt, sam, webkit | ||||||||||||
Priority: | P1 | Keywords: | InRadar, Regression | ||||||||||||
Version: | 528+ (Nightly build) | ||||||||||||||
Hardware: | Mac | ||||||||||||||
OS: | OS X 10.5 | ||||||||||||||
URL: | http://www.whatwg.org/specs/web-apps/current-work/ | ||||||||||||||
Attachments: |
|
Description
Matt Lilek
2008-02-06 22:23:17 PST
Created attachment 18979 [details]
Full sample
Confirmed. Is it a regression from shipping Safari/WebKit? It should be P1 if it is. This is :last-child. I'll probably have to put in a parsing hack for it like KHTML did. Created attachment 18993 [details]
Patch that improves the performance of selectors.
Created attachment 18994 [details]
Patch to improve selector performance
Comment on attachment 18994 [details]
Patch to improve selector performance
This needs work.
Created attachment 18995 [details]
Ready for primetime.
Created attachment 19005 [details]
Patch with ChangeLog
Comment on attachment 19005 [details] Patch with ChangeLog finishedParsingChildren() should probably be isFinishedParsingChildren() to make it more clear that it's just a bool lookup (and less likely to be confused with finishParsingChildren()) checkFirstChildRules and checkLastChildRules should be renamed now that they don't return a bool (otherwise it's confusing with checkEmptyRules) I suggest markChildrenAffectedByLastChildRules() or similar. We should eventually add some COMPILE_ASSERTs based on the size of the various classes we're trying to keep small. (Filed bug 17217 about that just now). Such would make it very easy when making these sorts of changes to know that you're not inflating core classes by accident. I've never been clear on why the "(m_element == e)" checks are there. Perhaps such could be moved into a more descriptive bool? bool isMappedStyleRule = (m_element == e); // or whatever it's actually checking. Otherwise looks good. r=me. Fixed in r30112 Followup in r30113 to back out something I checked in by accident. Another followup in r30114 since I missed the rendering/ directory. So hard to sift through all of the changes in my tree! :( The comedy continues. I bungled the backout of the accidental change to CSSStyleSelector, since I forgot about the function rename from Eric's review. r30115 has this change. (In reply to comment #15) > The comedy continues. I bungled the backout of the accidental change to > CSSStyleSelector, since I forgot about the function rename from Eric's review. > r30115 has this change. Have you tried git? :) (In reply to comment #16) > (In reply to comment #15) > > The comedy continues. I bungled the backout of the accidental change to > > CSSStyleSelector, since I forgot about the function rename from Eric's review. > > r30115 has this change. > > Have you tried git? :) > That's way too logical and reasonable. |