diff options
Diffstat (limited to 'Source/WebCore/dom/QualifiedName.cpp')
-rw-r--r-- | Source/WebCore/dom/QualifiedName.cpp | 46 |
1 files changed, 8 insertions, 38 deletions
diff --git a/Source/WebCore/dom/QualifiedName.cpp b/Source/WebCore/dom/QualifiedName.cpp index 36aa99457..638bb916e 100644 --- a/Source/WebCore/dom/QualifiedName.cpp +++ b/Source/WebCore/dom/QualifiedName.cpp @@ -27,31 +27,26 @@ #include "QualifiedName.h" #include "HTMLNames.h" +#include "SVGNames.h" #include "XLinkNames.h" #include "XMLNSNames.h" #include "XMLNames.h" #include <wtf/Assertions.h> #include <wtf/HashSet.h> +#include <wtf/NeverDestroyed.h> #include <wtf/StaticConstructors.h> -#include <wtf/text/StringBuilder.h> #if ENABLE(MATHML) #include "MathMLNames.h" #endif -#if ENABLE(SVG) -#include "SVGNames.h" -#endif - namespace WebCore { static const int staticQualifiedNamesCount = HTMLNames::HTMLTagsCount + HTMLNames::HTMLAttrsCount #if ENABLE(MATHML) + MathMLNames::MathMLTagsCount + MathMLNames::MathMLAttrsCount #endif -#if ENABLE(SVG) + SVGNames::SVGTagsCount + SVGNames::SVGAttrsCount -#endif + XLinkNames::XLinkAttrsCount + XMLNSNames::XMLNSAttrsCount + XMLNames::XMLAttrsCount; @@ -73,38 +68,21 @@ struct QNameComponentsTranslator { } static void translate(QualifiedName::QualifiedNameImpl*& location, const QualifiedNameComponents& components, unsigned) { - location = QualifiedName::QualifiedNameImpl::create(components.m_prefix, components.m_localName, components.m_namespace).leakRef(); + location = &QualifiedName::QualifiedNameImpl::create(components.m_prefix, components.m_localName, components.m_namespace).leakRef(); } }; static inline QNameSet& qualifiedNameCache() { - DEFINE_STATIC_LOCAL(QNameSet, nameCache, ()); + static NeverDestroyed<QNameSet> nameCache; return nameCache; } QualifiedName::QualifiedName(const AtomicString& p, const AtomicString& l, const AtomicString& n) { - QualifiedNameComponents components = { p.impl(), l.impl(), n.isEmpty() ? nullAtom.impl() : n.impl() }; + QualifiedNameComponents components = { p.impl(), l.impl(), n.isEmpty() ? nullptr : n.impl() }; QNameSet::AddResult addResult = qualifiedNameCache().add<QNameComponentsTranslator>(components); - m_impl = *addResult.iterator; - if (!addResult.isNewEntry) - m_impl->ref(); -} - -QualifiedName::~QualifiedName() -{ - deref(); -} - -void QualifiedName::deref() -{ -#ifdef QNAME_DEFAULT_CONSTRUCTOR - if (!m_impl) - return; -#endif - ASSERT(!isHashTableDeletedValue()); - m_impl->deref(); + m_impl = addResult.isNewEntry ? adoptRef(*addResult.iterator) : *addResult.iterator; } QualifiedName::QualifiedNameImpl::~QualifiedNameImpl() @@ -112,14 +90,6 @@ QualifiedName::QualifiedNameImpl::~QualifiedNameImpl() qualifiedNameCache().remove(this); } -String QualifiedName::toString() const -{ - if (!hasPrefix()) - return localName(); - - return prefix().string() + ':' + localName().string(); -} - // Global init routines DEFINE_GLOBAL(QualifiedName, anyName, nullAtom, starAtom, starAtom) @@ -137,14 +107,14 @@ void QualifiedName::init() const QualifiedName& nullQName() { - DEFINE_STATIC_LOCAL(QualifiedName, nullName, (nullAtom, nullAtom, nullAtom)); + static NeverDestroyed<QualifiedName> nullName(nullAtom, nullAtom, nullAtom); return nullName; } const AtomicString& QualifiedName::localNameUpper() const { if (!m_impl->m_localNameUpper) - m_impl->m_localNameUpper = m_impl->m_localName.upper(); + m_impl->m_localNameUpper = m_impl->m_localName.convertToASCIIUppercase(); return m_impl->m_localNameUpper; } |