ladybird/Userland/Libraries/LibWeb/DOM
Timothy Flynn 5d71758742 LibWeb: Move initial creation of Unicode segmenters to the Document
The expensive part of creating a segmenter is doing the locale and UCD
data lookups at creation time. Instead of doing this once per text node,
cache the segmenters on the document, and clone them as needed (cloning
is much, much cheaper).

On a profile loading Ladybird's GitHub repo, the following hot methods
changed as follows:

    ChunkIterator ctor: 6.08% -> 0.21%
    Segmenter factory:  5.86% ->    0%
    Segmenter clone:    N/A   -> 0.09%
2024-09-22 18:42:31 +02:00
..
AbortController.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
AbortController.h
AbortController.idl
AbortSignal.cpp LibWeb: Abort dependent signals before firing abort event 2024-09-09 12:48:30 +02:00
AbortSignal.h Userland: Add ESCAPING annotations to a bunch of places 2024-05-22 21:55:34 -06:00
AbortSignal.idl LibWeb: Specify the correct argument type in IDL for AbortSignal::any() 2024-05-13 23:45:45 +01:00
AbstractRange.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
AbstractRange.h
AbstractRange.idl
AccessibilityTreeNode.cpp LibJS+LibWeb: Use new Cell::Visitor helpers to avoid manual iteration 2024-04-16 07:40:01 +02:00
AccessibilityTreeNode.h
AdoptedStyleSheets.cpp LibWeb: Note what's causing a style invalidation to happen 2024-09-08 09:45:31 +02:00
AdoptedStyleSheets.h LibWeb: Add styleSheets and adoptedStyleSheets attributes in ShadowRoot 2024-03-09 16:13:32 +01:00
Attr.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
Attr.h LibWeb: Cache attribute names in lowercase to speed up selector matching 2024-03-16 14:27:59 +01:00
Attr.idl
CDATASection.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
CDATASection.h
CDATASection.idl
CharacterData.cpp LibWeb: Move initial creation of Unicode segmenters to the Document 2024-09-22 18:42:31 +02:00
CharacterData.h LibWeb: Move initial creation of Unicode segmenters to the Document 2024-09-22 18:42:31 +02:00
CharacterData.idl
ChildNode.h LibWeb: Fix infinite loop in ChildNode's before() and after() 2024-03-11 18:29:10 +01:00
ChildNode.idl
Comment.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
Comment.h
Comment.idl
CustomEvent.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
CustomEvent.h
CustomEvent.idl
Document.cpp LibWeb: Move initial creation of Unicode segmenters to the Document 2024-09-22 18:42:31 +02:00
Document.h LibWeb: Move initial creation of Unicode segmenters to the Document 2024-09-22 18:42:31 +02:00
Document.idl LibWeb: Return a WindowProxy from document.defaultView 2024-09-21 10:05:34 +02:00
DocumentFragment.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
DocumentFragment.h
DocumentFragment.idl
DocumentLoadEventDelayer.cpp
DocumentLoadEventDelayer.h
DocumentLoading.cpp LibWeb: Set document type to HTML for text and media documents 2024-08-30 08:28:16 -04:00
DocumentLoading.h LibWeb: Make NavigationParams be GC-allocated 2024-04-22 17:10:11 +02:00
DocumentObserver.cpp
DocumentObserver.h
DocumentOrShadowRoot.idl LibWeb: Add DocumentOrShadowRoot::get_animations() 2024-06-03 10:53:32 +02:00
DocumentType.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
DocumentType.h LibWeb: Make DocumentType::node_name() return DocumentType::name() 2024-07-26 07:19:23 +02:00
DocumentType.idl LibWeb: Expose ChildNode methods on the DocumentType IDL interface 2024-07-19 09:22:08 +02:00
DOMEventListener.cpp
DOMEventListener.h
DOMImplementation.cpp LibWeb: Make DOMImplementation IDL return an XMLDocument 2024-05-19 16:24:11 +02:00
DOMImplementation.h LibWeb: Make DOMImplementation IDL return an XMLDocument 2024-05-19 16:24:11 +02:00
DOMImplementation.idl LibWeb: Make DOMImplementation IDL return an XMLDocument 2024-05-19 16:24:11 +02:00
DOMTokenList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
DOMTokenList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
DOMTokenList.idl
Element.cpp LibWeb: Return a WindowProxy from document.defaultView 2024-09-21 10:05:34 +02:00
Element.h LibWeb/DOM: Implement spec changes to dir=auto directionality 2024-09-18 15:18:07 +02:00
Element.idl LibWeb: Implement Element::check_visibility 2024-07-20 09:14:50 +01:00
ElementFactory.cpp LibWeb/SVG: Implement SVGImageElement 2024-08-29 06:28:44 +02:00
ElementFactory.h
Event.cpp LibWeb: Make “create an event” set the event’s isTrusted to true 2024-09-03 00:14:31 -06:00
Event.h LibWeb: Implement the PointerEvent interface 2024-04-08 14:25:08 +02:00
Event.idl
EventDispatcher.cpp LibWeb: Replace templated retarget function with a regular one 2024-07-21 16:01:32 -06:00
EventDispatcher.h
EventHandler.idl LibWeb: Emit "focusin" and "focusout" events 2024-02-25 10:17:25 +01:00
EventTarget.cpp LibWeb: Implement CloseWatcher API 2024-06-22 17:39:53 +02:00
EventTarget.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
EventTarget.idl
HTMLCollection.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
HTMLCollection.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
HTMLCollection.idl
HTMLFormControlsCollection.cpp Bindings: Remove exception handling for named_item_value 2024-07-26 14:26:16 +02:00
HTMLFormControlsCollection.h Bindings: Remove exception handling for named_item_value 2024-07-26 14:26:16 +02:00
HTMLFormControlsCollection.idl
IDLEventListener.cpp LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
IDLEventListener.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
LiveNodeList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
LiveNodeList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
MutationObserver.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
MutationObserver.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
MutationObserver.idl
MutationRecord.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
MutationRecord.h
MutationRecord.idl
MutationType.cpp
MutationType.h
NamedNodeMap.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
NamedNodeMap.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
NamedNodeMap.idl
Node.cpp LibWeb: Don't invalidate layout tree on all DOM node removals 2024-09-19 10:12:44 +02:00
Node.h LibWeb: Note what's causing a style invalidation to happen 2024-09-08 09:45:31 +02:00
Node.idl LibWeb/DOM: Implement Node.lookupPrefix 2024-07-28 00:51:55 +01:00
NodeFilter.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
NodeFilter.h
NodeFilter.idl
NodeIterator.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
NodeIterator.h
NodeIterator.idl
NodeList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
NodeList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
NodeList.idl
NodeOperations.cpp
NodeOperations.h
NonDocumentTypeChildNode.h
NonElementParentNode.h LibWeb: Make getElementById() always return first match in tree order 2024-07-21 11:42:53 +01:00
ParentNode.cpp LibWeb: Ensure ParentNode.getElementsByClassName() matches all classes 2024-08-04 10:39:17 +02:00
ParentNode.h LibWeb: Move get_elements_by_name implementation to ParentNode 2024-07-23 08:58:22 +02:00
ParentNode.idl
Position.cpp LibWeb: Add Document helpers to move its cursor to word boundaries 2024-09-06 07:42:59 +02:00
Position.h LibWeb: Add Document helpers to move its cursor to word boundaries 2024-09-06 07:42:59 +02:00
ProcessingInstruction.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
ProcessingInstruction.h
ProcessingInstruction.idl
QualifiedName.cpp
QualifiedName.h
RadioNodeList.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
RadioNodeList.h Userland: Add ESCAPING annotations to a bunch of places 2024-05-22 21:55:34 -06:00
RadioNodeList.idl
Range.cpp LibWeb: Implement Range's extension method 2024-09-20 19:58:20 +02:00
Range.h LibWeb: Implement Range's extension method 2024-09-20 19:58:20 +02:00
Range.idl LibWeb: Refactor DOM parsing APIs 2024-06-26 05:41:00 +02:00
ShadowRoot.cpp LibWeb: Rename invalidate_layout() => invalidate_layout_tree() 2024-09-19 10:12:44 +02:00
ShadowRoot.h LibWeb: Implement unsafe HTML parsing methods 2024-06-26 06:13:29 +02:00
ShadowRoot.idl LibWeb: Implement unsafe HTML parsing methods 2024-06-26 06:13:29 +02:00
Slot.cpp
Slot.h
Slottable.cpp LibWeb: Rename Element::shadow_root_internal() to shadow_root() 2024-06-25 19:22:35 +02:00
Slottable.h
Slottable.idl
StaticNodeList.cpp Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
StaticNodeList.h Bindings: Implement is_supported_property_index in terms of item_value 2024-07-26 14:26:16 +02:00
StaticRange.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
StaticRange.h
StaticRange.idl
StyleElementUtils.cpp LibWeb: Let style elements remember which StyleSheetList they live in 2024-09-21 08:56:01 +02:00
StyleElementUtils.h LibWeb: Let style elements remember which StyleSheetList they live in 2024-09-21 08:56:01 +02:00
Text.cpp LibWeb/DOM: Move "text node directionality" algorithm into DOM::Text 2024-09-18 15:18:07 +02:00
Text.h LibWeb/DOM: Move "text node directionality" algorithm into DOM::Text 2024-09-18 15:18:07 +02:00
Text.idl LibWeb: Implement Text.wholeText 2024-07-20 18:02:51 +01:00
TreeWalker.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
TreeWalker.h
TreeWalker.idl
Utils.cpp LibWeb: Replace templated retarget function with a regular one 2024-07-21 16:01:32 -06:00
Utils.h LibWeb: Replace templated retarget function with a regular one 2024-07-21 16:01:32 -06:00
XMLDocument.cpp AK+LibURL: Move AK::URL into a new URL library 2024-03-18 14:06:28 -04:00
XMLDocument.h AK+LibURL: Move AK::URL into a new URL library 2024-03-18 14:06:28 -04:00
XMLDocument.idl