summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/QualifiedName.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/QualifiedName.cpp')
-rw-r--r--Source/WebCore/dom/QualifiedName.cpp46
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;
}