Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6c9eb0e31985f0ab9bcfa34198da9cf10f1dfa6a https://github.com/WebKit/WebKit/commit/6c9eb0e31985f0ab9bcfa34198da9cf10f1dfa6a Author: Ahmad Saleem <ahmad.saleem792+git...@gmail.com> Date: 2023-03-05 (Sun, 05 Mar 2023)
Changed paths: M Source/WebCore/html/parser/HTMLEntityParser.cpp M Source/WebCore/html/parser/HTMLEntitySearch.cpp M Source/WebCore/html/parser/HTMLEntityTable.h M Source/WebCore/html/parser/create-html-entity-table Log Message: ----------- Entity storage is not very compact https://bugs.webkit.org/show_bug.cgi?id=250640 rdar://problem/104525785 Reviewed by Darin Adler. Merge - https://chromium.googlesource.com/chromium/blink/+/0c7555da9c7b6059b8f55820b5b21685469a42c1 The entity table contained pointers which both makes it big and prevents it from being reused as-is from the binary. This changes it to make the storage more compact by replacing pointers with offsets into a shared string. Also switching to more compact data types. The new database will look like: static const LChar staticEntityStringStorage[] = { 'A', 'E', 'l', 'i', 'g', ';', 'A', 'M', 'P', ';', 'A', 'a', 'c', 'u', 't', 'e', ';', ... static const HTMLEntityTableEntry staticEntityTable[2231] = { { 0x000C6, 0, 0, 5 }, // Æ { 0x000C6, 0, 0, 6 }, // Æ { 0x00026, 0, 6, 3 }, // & { 0x00026, 0, 6, 4 }, // & { 0x000C1, 0, 10, 6 }, // Á ... It accomplishes the savings by avoiding pointers in the data (resolving pointers during startup is expensive), using one string instead of 2000+, not storing the trailing NUL byte, ordering the members for minimum padding, using minimal size data types and reusing the same string space for things like "amp;" and "amp". This is performance neutral on local testing and does not have any regression on Speedometer using M1 Pro Macbook. * Source/WebCore/html/parser/HTMLEntityParser.cpp: * Source/WebCore/html/parser/HTMLEntitySearch.cpp: (HTMLEntitySearch::compare): * Source/WebCore/html/parser/HTMLEntityTable.h: * Source/WebCore/html/parser/create-html-entity-table: Canonical link: https://commits.webkit.org/261245@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes