mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-14 12:09:45 +00:00
This patch introduces the StyleComputer::RuleCache, which divides all of our (author) CSS rules into buckets. Currently, there are two buckets: - Rules where a specific class must be present. - All other rules. This allows us to check a significantly smaller set of rules for each element, since we can skip over any rule that requires a class attribute not present on the element. This takes the typical numer of rules tested per element on Discord from ~16000 to ~550. :^) We can definitely improve the cache invalidation. It currently happens too often due to media queries. And we also need to make sure we invalidate when mutating style through CSSOM APIs. |
||
---|---|---|
.. | ||
AbortController.cpp | ||
AbortController.h | ||
AbortController.idl | ||
AbortSignal.cpp | ||
AbortSignal.h | ||
AbortSignal.idl | ||
Attribute.cpp | ||
Attribute.h | ||
Attribute.idl | ||
CharacterData.cpp | ||
CharacterData.h | ||
CharacterData.idl | ||
ChildNode.h | ||
Comment.cpp | ||
Comment.h | ||
Comment.idl | ||
CustomEvent.cpp | ||
CustomEvent.h | ||
CustomEvent.idl | ||
Document.cpp | ||
Document.h | ||
Document.idl | ||
DocumentFragment.cpp | ||
DocumentFragment.h | ||
DocumentFragment.idl | ||
DocumentLoadEventDelayer.cpp | ||
DocumentLoadEventDelayer.h | ||
DocumentType.cpp | ||
DocumentType.h | ||
DocumentType.idl | ||
DOMException.h | ||
DOMException.idl | ||
DOMImplementation.cpp | ||
DOMImplementation.h | ||
DOMImplementation.idl | ||
DOMTokenList.cpp | ||
DOMTokenList.h | ||
DOMTokenList.idl | ||
Element.cpp | ||
Element.h | ||
Element.idl | ||
ElementFactory.cpp | ||
ElementFactory.h | ||
Event.cpp | ||
Event.h | ||
Event.idl | ||
EventDispatcher.cpp | ||
EventDispatcher.h | ||
EventListener.h | ||
EventTarget.cpp | ||
EventTarget.h | ||
EventTarget.idl | ||
ExceptionOr.h | ||
HTMLCollection.cpp | ||
HTMLCollection.h | ||
HTMLCollection.idl | ||
LiveNodeList.cpp | ||
LiveNodeList.h | ||
NamedNodeMap.cpp | ||
NamedNodeMap.h | ||
NamedNodeMap.idl | ||
Node.cpp | ||
Node.h | ||
Node.idl | ||
NodeList.h | ||
NodeList.idl | ||
NodeOperations.cpp | ||
NodeOperations.h | ||
NonDocumentTypeChildNode.h | ||
NonElementParentNode.h | ||
ParentNode.cpp | ||
ParentNode.h | ||
Position.cpp | ||
Position.h | ||
ProcessingInstruction.cpp | ||
ProcessingInstruction.h | ||
ProcessingInstruction.idl | ||
Range.cpp | ||
Range.h | ||
Range.idl | ||
ShadowRoot.cpp | ||
ShadowRoot.h | ||
ShadowRoot.idl | ||
StaticNodeList.cpp | ||
StaticNodeList.h | ||
Text.cpp | ||
Text.h | ||
Text.idl | ||
Timer.cpp | ||
Timer.h | ||
Window.cpp | ||
Window.h |