Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 39a1ff098a4ebfd7b753243ba2d609fc5ef763eb https://github.com/WebKit/WebKit/commit/39a1ff098a4ebfd7b753243ba2d609fc5ef763eb Author: Justin Michaud <jus...@justinmichaud.com> Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths: M Source/JavaScriptCore/builtins/BuiltinExecutables.cpp M Source/JavaScriptCore/builtins/BuiltinExecutables.h M Source/JavaScriptCore/builtins/BuiltinNames.cpp M Source/JavaScriptCore/builtins/BuiltinNames.h M Source/JavaScriptCore/runtime/InitializeThreading.cpp M Source/JavaScriptCore/runtime/JSString.h M Source/JavaScriptCore/runtime/SmallStrings.cpp M Source/JavaScriptCore/runtime/SmallStrings.h M Source/JavaScriptCore/runtime/VM.cpp M Source/WTF/wtf/CompactPtr.h M Source/WTF/wtf/Threading.cpp M Source/WTF/wtf/URL.cpp M Source/WTF/wtf/spi/cocoa/MachVMSPI.h M Source/WTF/wtf/text/AtomString.cpp M Source/WTF/wtf/text/AtomString.h M Source/WTF/wtf/text/AtomStringImpl.cpp M Source/WTF/wtf/text/AtomStringImpl.h M Source/WTF/wtf/text/StringImpl.cpp M Source/WTF/wtf/text/StringImpl.h M Source/WTF/wtf/text/SymbolImpl.cpp M Source/WTF/wtf/text/SymbolImpl.h M Source/WTF/wtf/text/UniquedStringImpl.h M Source/WTF/wtf/text/WTFString.cpp M Source/WTF/wtf/text/WTFString.h M Source/WebCore/bindings/scripts/StaticString.pm M Source/WebCore/css/CSSFontFaceSet.cpp M Source/WebCore/css/CSSFontSelector.cpp M Source/WebCore/dom/Document.cpp M Source/WebCore/dom/Document.h M Source/WebCore/dom/Element.cpp M Source/WebCore/dom/make_names.pl M Source/WebCore/platform/graphics/FontCascadeFonts.cpp M Source/WebCore/style/StyleResolveForFontRaw.cpp M Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm M Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp M Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp M Tools/TestWebKitAPI/Tests/WebCore/FileMonitor.cpp M Tools/TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm Log Message: ----------- Remove static strings and symbols https://bugs.webkit.org/show_bug.cgi?id=256744 rdar://109287900 Reviewed by Yusuke Suzuki. We would like to make StringImpl*, JSString* and JSRopeString* fit into 32 bits. Why? - This has the potential to save memory and improve cache locallity. - Previously, when Yusuke made JSRopeString smaller by squishing the ropes together, it was a 1% Speedometer regression. This will let us undo that change while keeping the size of JSRopeString small. We need to: 1) Forbid precice allocation 2) Ensure 16-byte alignment This patch does both of these things, and should be sufficient to enable CompactPtr<StringImpl> to work on iOS (although this patch doesn't do that). On macOS, pointers are 48-bit instead of 36-bit, so we have more work to do: 1) Make sure that all strings are allocated out of the same malloc region 2) Allocate a chunk of va space for them, and plumb the base pointer around This patch does the first thing. Isn't removing static strings going to be a memory regression? Well, hopefully not. Today we still increment the ref count of static strings, so the memory is dirtied. After applying this patch, the character data will still be static, but the StringImpl itself (which remember, was always dirty) will be placed next to its bretheren. This patch might introduce some concurrency bugs though. By inspection I have tried to match the existing invariants, but I don't know if I have spotted everything. * Source/JavaScriptCore/builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::defaultConstructorSourceCode): * Source/JavaScriptCore/builtins/BuiltinExecutables.h: * Source/JavaScriptCore/builtins/BuiltinNames.cpp: (JSC::Symbols::initializeStaticSymbols): (JSC::BuiltinNames::BuiltinNames): (): Deleted. * Source/JavaScriptCore/builtins/BuiltinNames.h: * Source/JavaScriptCore/runtime/InitializeThreading.cpp: (JSC::initialize): * Source/JavaScriptCore/runtime/JSString.h: (JSC::JSString::destroy): Deleted. (JSC::JSString::subspaceFor): Deleted. (JSC::JSString::uninitializedValueInternal const): Deleted. (JSC::JSString::valueInternal const): Deleted. (JSC::JSString::JSString): Deleted. (JSC::JSString::finishCreation): Deleted. (JSC::JSString::create): Deleted. (JSC::JSString::createHasOtherOwner): Deleted. (JSC::JSString::toBoolean const): Deleted. (JSC::JSString::canGetIndex): Deleted. (JSC::JSString::offsetOfValue): Deleted. (JSC::JSString::isRope const): Deleted. (JSC::JSString::fiberConcurrently const): Deleted. * Source/JavaScriptCore/runtime/SmallStrings.cpp: * Source/JavaScriptCore/runtime/SmallStrings.h: (JSC::SmallString::initializeJSStaticStrings): * Source/JavaScriptCore/runtime/VM.cpp: (JSC::VM::ensureTerminationException): (): Deleted. * Source/WTF/wtf/CompactPtr.h: (WTF::CompactPtr::operator!=): (WTF::CompactPtr::storage const): (WTF::CompactPtr::storage): * Source/WTF/wtf/Threading.cpp: (WTF::initialize): * Source/WTF/wtf/URL.cpp: (WTF::aboutBlankURL): (WTF::aboutSrcDocURL): (): Deleted. * Source/WTF/wtf/text/AtomString.cpp: (WTF::nullAtom): (WTF::emptyAtom): (WTF::AtomString::initializeStrings): (): Deleted. * Source/WTF/wtf/text/AtomString.h: (WTF::StaticAtomString::StaticAtomString): Deleted. (WTF::nullAtom): Deleted. (WTF::emptyAtom): Deleted. * Source/WTF/wtf/text/AtomStringImpl.cpp: * Source/WTF/wtf/text/AtomStringImpl.h: (WTF::ValueCheck<AtomStringImpl::checkConsistency): Deleted. * Source/WTF/wtf/text/StringImpl.cpp: (WTF::StringImpl::createStaticStringImplWithoutCopying): (WTF::StringImpl::createStaticStringImpl): * Source/WTF/wtf/text/StringImpl.h: (WTF::StringImpl::createStaticStringImplWithoutCopying): (WTF::StringImpl::empty): (WTF::StringImpl::initializeEmptyString): (WTF::StringImpl::StringImpl): (WTF::StringImpl::cost const): (WTF::ValueCheck<StringImpl::checkConsistency): Deleted. (WTF::StringImpl::StaticStringImpl::StaticStringImpl): Deleted. (WTF::StringImpl::StaticStringImpl::operator StringImpl&): Deleted. * Source/WTF/wtf/text/SymbolImpl.cpp: (WTF::SymbolImpl::createStatic): (WTF::PrivateSymbolImpl::createStatic): * Source/WTF/wtf/text/SymbolImpl.h: (WTF::SymbolImpl::create): (WTF::SymbolImpl::createStatic): (WTF::ValueCheck<SymbolImpl::checkConsistency): Deleted. * Source/WTF/wtf/text/UniquedStringImpl.h: (WTF::ValueCheck<UniquedStringImpl::checkConsistency): Deleted. (): Deleted. * Source/WTF/wtf/text/WTFString.cpp: (WTF::nullString): (WTF::emptyString): (WTF::String::initializeStrings): * Source/WTF/wtf/text/WTFString.h: (WTF::StaticString::StaticString): Deleted. (WTF::nullString): Deleted. (WTF::emptyString): Deleted. * Source/WebCore/bindings/scripts/StaticString.pm: (GenerateStrings): (GenerateStringAsserts): * Source/WebCore/css/CSSFontFaceSet.cpp: (WebCore::CSSFontFaceSet::matchingFacesExcludingPreinstalledFonts): * Source/WebCore/css/CSSFontSelector.cpp: (WebCore::m_version): * Source/WebCore/dom/Document.cpp: (WebCore::Document::maskedURLForBindings): (WebCore::Document::maskedURLStringForBindings): Deleted. * Source/WebCore/dom/Document.h: * Source/WebCore/dom/Element.cpp: (WebCore::Element::resolveURLStringIfNeeded const): * Source/WebCore/dom/make_names.pl: (printTagNameCppFile): (printDefinitions): * Source/WebCore/platform/graphics/FontCascadeFonts.cpp: (WebCore::FontCascadeFonts::realizeFallbackRangesAt): * Source/WebCore/style/StyleResolveForFontRaw.cpp: (WebCore::Style::resolveForFontRaw): * Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesFeatures.cpp.erb: * Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: (WebKit::XPCServiceMain): * Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp: (TestWebKitAPI::TEST): (): Deleted. Canonical link: https://commits.webkit.org/264265@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes