From 7bfa219ebd050523ecd0d72ad7154e1ce3b83ae9 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Thu, 22 Oct 2009 17:09:04 +0200 Subject: Use an inline helper function to check if a QScriptString is valid Makes QScriptValue::property() ~10% faster. Reviewed-by: Olivier Goffart --- src/script/api/qscriptstring.cpp | 3 +-- src/script/api/qscriptstring_p.h | 7 +++++++ src/script/api/qscriptvalue.cpp | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/script/api/qscriptstring.cpp b/src/script/api/qscriptstring.cpp index 2fb157f..1ede51c 100644 --- a/src/script/api/qscriptstring.cpp +++ b/src/script/api/qscriptstring.cpp @@ -139,8 +139,7 @@ QScriptString &QScriptString::operator=(const QScriptString &other) */ bool QScriptString::isValid() const { - Q_D(const QScriptString); - return (d && d->engine); + return QScriptStringPrivate::isValid(*this); } /*! diff --git a/src/script/api/qscriptstring_p.h b/src/script/api/qscriptstring_p.h index d3bb47d..8e344e8 100644 --- a/src/script/api/qscriptstring_p.h +++ b/src/script/api/qscriptstring_p.h @@ -77,6 +77,8 @@ public: inline void detachFromEngine(); + static inline bool isValid(const QScriptString &q); + QBasicAtomicInt ref; QScriptEnginePrivate *engine; JSC::Identifier identifier; @@ -114,6 +116,11 @@ inline void QScriptStringPrivate::detachFromEngine() identifier = JSC::Identifier(); } +inline bool QScriptStringPrivate::isValid(const QScriptString &q) +{ + return (q.d_ptr && q.d_ptr->engine); +} + QT_END_NAMESPACE #endif diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp index 26cd314..21673d1 100644 --- a/src/script/api/qscriptvalue.cpp +++ b/src/script/api/qscriptvalue.cpp @@ -1775,7 +1775,7 @@ QScriptValue QScriptValue::property(const QScriptString &name, const ResolveFlags &mode) const { Q_D(const QScriptValue); - if (!d || !d->isObject() || !name.isValid()) + if (!d || !d->isObject() || !QScriptStringPrivate::isValid(name)) return QScriptValue(); return d->property(name.d_ptr->identifier, mode); } @@ -1798,7 +1798,7 @@ void QScriptValue::setProperty(const QScriptString &name, const PropertyFlags &flags) { Q_D(QScriptValue); - if (!d || !d->isObject() || !name.isValid()) + if (!d || !d->isObject() || !QScriptStringPrivate::isValid(name)) return; d->setProperty(name.d_ptr->identifier, value, flags); } @@ -1832,7 +1832,7 @@ QScriptValue::PropertyFlags QScriptValue::propertyFlags(const QScriptString &nam const ResolveFlags &mode) const { Q_D(const QScriptValue); - if (!d || !d->isObject() || !name.isValid()) + if (!d || !d->isObject() || !QScriptStringPrivate::isValid(name)) return 0; return d->propertyFlags(name.d_ptr->identifier, mode); } -- cgit v0.12