When Child selector fails, we should resume matching from the closest Descendant selector. So upgrading SelectorFailsLocally to SelectorFailsAllSibling at least to prevent unnecessary direct/indirect adjacent selectors matching.
Created attachment 228158 [details] Patch
To clearify the executing model in my mind, I've created a small patch to match markRecursively's resuming strategy to CSS JIT's.
Comment on attachment 228158 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=228158&action=review Great idea! > Source/WebCore/css/SelectorChecker.cpp:219 > + nextContext.elementStyle = 0; You can change this to nullptr now that WebKit supports C++ 11.
Committed r166808: <http://trac.webkit.org/changeset/166808>
Thank you for your review and fixing 0 to nullptr!