diff options
author | Lars Knoll <[email protected]> | 2016-11-24 16:05:14 +0100 |
---|---|---|
committer | Lars Knoll <[email protected]> | 2016-11-29 20:00:18 +0000 |
commit | 5d35573a62686aa3b0c45fc032b79670d88ebba9 (patch) | |
tree | 7e60a301e347ba073d2d310c59083b18eeaa922f /src/qml/jsruntime | |
parent | a36d19546891a808cf71dbb084d6d63870d2b8ec (diff) |
Clean up Value::isString()/stringValue() combinations
It's enough to just call stringValue(), as that already
does the isString() check.
Change-Id: I7be0e643a7975c0704b4c9c43b337deb8db9fce0
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4dateobject.cpp | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 8 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4globalobject.cpp | 5 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4jsonobject.cpp | 12 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4regexpobject.cpp | 12 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 83 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4stringobject.cpp | 12 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 30 |
8 files changed, 90 insertions, 76 deletions
diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index 5af26f8f36..8cc6a25fea 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -689,8 +689,8 @@ void DateCtor::construct(const Managed *, Scope &scope, CallData *callData) } else { arg = RuntimeHelpers::toPrimitive(arg, PREFERREDTYPE_HINT); - if (arg->isString()) - t = ParseString(arg->stringValue()->toQString()); + if (String *s = arg->stringValue()) + t = ParseString(s->toQString()); else t = TimeClip(arg->toNumber()); } diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index a9284f2e69..634b8a3e6b 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -1151,8 +1151,8 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int return value.integerValue(); if (value.isNumber()) return value.asDouble(); - if (value.isString()) { - const QString &str = value.toQString(); + if (String *s = value.stringValue()) { + const QString &str = s->toQString(); // QChars are stored as a strings if (typeHint == QVariant::Char && str.size() == 1) return str.at(0); @@ -1591,8 +1591,8 @@ bool ExecutionEngine::metaTypeFromJS(const Value *value, int type, void *data) *reinterpret_cast<unsigned char*>(data) = (unsigned char)(value->toInt32()); return true; case QMetaType::QChar: - if (value->isString()) { - QString str = value->stringValue()->toQString(); + if (String *s = value->stringValue()) { + QString str = s->toQString(); *reinterpret_cast<QChar*>(data) = str.isEmpty() ? QChar() : str.at(0); } else { *reinterpret_cast<QChar*>(data) = QChar(ushort(value->toUInt16())); diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp index feb0d90d26..af92ce1ad8 100644 --- a/src/qml/jsruntime/qv4globalobject.cpp +++ b/src/qml/jsruntime/qv4globalobject.cpp @@ -357,12 +357,13 @@ void EvalFunction::evalCall(Scope &scope, CallData *callData, bool directCall) c ctx = v4->pushGlobalContext(); } - if (!callData->args[0].isString()) { + String *scode = callData->args[0].stringValue(); + if (!scode) { scope.result = callData->args[0].asReturnedValue(); return; } - const QString code = callData->args[0].stringValue()->toQString(); + const QString code = scode->toQString(); bool inheritContext = !ctx->d()->strictMode; Script script(ctx, code, QStringLiteral("eval code")); diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index 6a01f207c4..d79e6242ba 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -727,8 +727,8 @@ QString Stringify::Str(const QString &key, const Value &v) return QStringLiteral("null"); if (scope.result.isBoolean()) return scope.result.booleanValue() ? QStringLiteral("true") : QStringLiteral("false"); - if (scope.result.isString()) - return quote(scope.result.stringValue()->toQString()); + if (String *s = scope.result.stringValue()) + return quote(s->toQString()); if (scope.result.isNumber()) { double d = scope.result.toNumber(); @@ -940,8 +940,8 @@ ReturnedValue JsonObject::method_stringify(CallContext *ctx) if (s->isNumber()) { stringify.gap = QString(qMin(10, (int)s->toInteger()), ' '); - } else if (s->isString()) { - stringify.gap = s->stringValue()->toQString().left(10); + } else if (String *str = s->stringValue()) { + stringify.gap = str->toQString().left(10); } @@ -982,8 +982,8 @@ QJsonValue JsonObject::toJsonValue(const Value &value, V4ObjectSet &visitedObjec return QJsonValue(QJsonValue::Null); else if (value.isUndefined()) return QJsonValue(QJsonValue::Undefined); - else if (value.isString()) - return QJsonValue(value.toQString()); + else if (String *s = value.stringValue()) + return QJsonValue(s->toQString()); Q_ASSERT(value.isObject()); Scope scope(value.as<Object>()->engine()); diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp index c35286bd3a..218695624b 100644 --- a/src/qml/jsruntime/qv4regexpobject.cpp +++ b/src/qml/jsruntime/qv4regexpobject.cpp @@ -262,12 +262,12 @@ void RegExpCtor::construct(const Managed *, Scope &scope, CallData *callData) bool ignoreCase = false; bool multiLine = false; if (!f->isUndefined()) { - f = f->toString(scope.engine); + ScopedString s(scope, f->toString(scope.engine)); if (scope.hasException()) { scope.result = Encode::undefined(); return; } - QString str = f->stringValue()->toQString(); + QString str = s->toQString(); for (int i = 0; i < str.length(); ++i) { if (str.at(i) == QLatin1Char('g') && !global) { global = true; @@ -356,10 +356,10 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx) return ctx->engine()->throwTypeError(); ScopedValue arg(scope, ctx->argument(0)); - arg = arg->toString(scope.engine); + ScopedString str(scope, arg->toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); - QString s = arg->stringValue()->toQString(); + QString s = str->toQString(); int offset = r->global() ? r->lastIndexProperty()->toInt32() : 0; if (offset < 0 || offset > s.length()) { @@ -391,11 +391,11 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx) } array->setArrayLengthUnchecked(len); *array->propertyData(Index_ArrayIndex) = Primitive::fromInt32(result); - *array->propertyData(Index_ArrayInput) = arg; + *array->propertyData(Index_ArrayInput) = str; RegExpCtor::Data *dd = regExpCtor->d(); dd->lastMatch = array; - dd->lastInput = arg->stringValue()->d(); + dd->lastInput = str->d(); dd->lastMatchStart = matchOffsets[0]; dd->lastMatchEnd = matchOffsets[1]; diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 11ab4c85a0..6d26cd8ad9 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -492,8 +492,8 @@ Heap::String *RuntimeHelpers::convertToString(ExecutionEngine *engine, const Val else return engine->id_false()->d(); case Value::Managed_Type: - if (value.isString()) - return value.stringValue()->d(); + if (String *s = value.stringValue()) + return s->d(); { Scope scope(engine); ScopedValue prim(scope, RuntimeHelpers::toPrimitive(value, STRING_HINT)); @@ -523,8 +523,8 @@ static Heap::String *convert_to_string_add(ExecutionEngine *engine, const Value else return engine->id_false()->d(); case Value::Managed_Type: - if (value.isString()) - return value.stringValue()->d(); + if (String *s = value.stringValue()) + return s->d(); { Scope scope(engine); ScopedValue prim(scope, RuntimeHelpers::toPrimitive(value, PREFERREDTYPE_HINT)); @@ -543,19 +543,25 @@ QV4::ReturnedValue RuntimeHelpers::addHelper(ExecutionEngine *engine, const Valu ScopedValue pleft(scope, RuntimeHelpers::toPrimitive(left, PREFERREDTYPE_HINT)); ScopedValue pright(scope, RuntimeHelpers::toPrimitive(right, PREFERREDTYPE_HINT)); - if (pleft->isString() || pright->isString()) { - if (!pleft->isString()) + String *sleft = pleft->stringValue(); + String *sright = pright->stringValue(); + if (sleft || sright) { + if (!sleft) { pleft = convert_to_string_add(engine, pleft); - if (!pright->isString()) + sleft = static_cast<String *>(pleft.ptr); + } + if (!sright) { pright = convert_to_string_add(engine, pright); + sright = static_cast<String *>(pright.ptr); + } if (scope.engine->hasException) return Encode::undefined(); - if (!pleft->stringValue()->d()->length()) - return pright->asReturnedValue(); - if (!pright->stringValue()->d()->length()) - return pleft->asReturnedValue(); + if (!sleft->d()->length()) + return sright->asReturnedValue(); + if (!sright->d()->length()) + return sleft->asReturnedValue(); MemoryManager *mm = engine->memoryManager; - return (mm->alloc<String>(mm, pleft->stringValue()->d(), pright->stringValue()->d()))->asReturnedValue(); + return (mm->alloc<String>(mm, sleft->d(), sright->d()))->asReturnedValue(); } double x = RuntimeHelpers::toNumber(pleft); double y = RuntimeHelpers::toNumber(pright); @@ -566,31 +572,28 @@ QV4::ReturnedValue Runtime::method_addString(ExecutionEngine *engine, const Valu { Q_ASSERT(left.isString() || right.isString()); - if (left.isString() && right.isString()) { - if (!left.stringValue()->d()->length()) - return right.asReturnedValue(); - if (!right.stringValue()->d()->length()) - return left.asReturnedValue(); - MemoryManager *mm = engine->memoryManager; - return (mm->alloc<String>(mm, left.stringValue()->d(), right.stringValue()->d()))->asReturnedValue(); - } - Scope scope(engine); ScopedValue pleft(scope, left); ScopedValue pright(scope, right); + String *sleft = pleft->stringValue(); + String *sright = pright->stringValue(); - if (!pleft->isString()) - pleft = convert_to_string_add(engine, left); - if (!pright->isString()) - pright = convert_to_string_add(engine, right); + if (!sleft) { + pleft = convert_to_string_add(engine, pleft); + sleft = static_cast<String *>(pleft.ptr); + } + if (!sright) { + pright = convert_to_string_add(engine, pright); + sright = static_cast<String *>(pright.ptr); + } if (scope.engine->hasException) return Encode::undefined(); - if (!pleft->stringValue()->d()->length()) + if (!sleft->d()->length()) return pright->asReturnedValue(); - if (!pright->stringValue()->d()->length()) + if (!sright->d()->length()) return pleft->asReturnedValue(); MemoryManager *mm = engine->memoryManager; - return (mm->alloc<String>(mm, pleft->stringValue()->d(), pright->stringValue()->d()))->asReturnedValue(); + return (mm->alloc<String>(mm, sleft->d(), sright->d()))->asReturnedValue(); } void Runtime::method_setProperty(ExecutionEngine *engine, const Value &object, int nameIndex, const Value &value) @@ -787,12 +790,14 @@ QV4::Bool Runtime::method_compareGreaterThan(const Value &l, const Value &r) return l.integerValue() > r.integerValue(); if (l.isNumber() && r.isNumber()) return l.asDouble() > r.asDouble(); - if (l.isString() && r.isString()) { + String *sl = l.stringValue(); + String *sr = r.stringValue(); + if (sl && sr) { #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); return false; #else - return r.stringValue()->compare(l.stringValue()); + return sr->compare(sl); #endif } @@ -820,12 +825,14 @@ QV4::Bool Runtime::method_compareLessThan(const Value &l, const Value &r) return l.integerValue() < r.integerValue(); if (l.isNumber() && r.isNumber()) return l.asDouble() < r.asDouble(); - if (l.isString() && r.isString()) { + String *sl = l.stringValue(); + String *sr = r.stringValue(); + if (sl && sr) { #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); return false; #else - return l.stringValue()->compare(r.stringValue()); + return sl->compare(sr); #endif } @@ -853,12 +860,14 @@ QV4::Bool Runtime::method_compareGreaterEqual(const Value &l, const Value &r) return l.integerValue() >= r.integerValue(); if (l.isNumber() && r.isNumber()) return l.asDouble() >= r.asDouble(); - if (l.isString() && r.isString()) { + String *sl = l.stringValue(); + String *sr = r.stringValue(); + if (sl && sr) { #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); return false; #else - return !l.stringValue()->compare(r.stringValue()); + return !sl->compare(sr); #endif } @@ -886,12 +895,14 @@ QV4::Bool Runtime::method_compareLessEqual(const Value &l, const Value &r) return l.integerValue() <= r.integerValue(); if (l.isNumber() && r.isNumber()) return l.asDouble() <= r.asDouble(); - if (l.isString() && r.isString()) { + String *sl = l.stringValue(); + String *sr = r.stringValue(); + if (sl && sr) { #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); return false; #else - return !r.stringValue()->compare(l.stringValue()); + return !sr->compare(sl); #endif } diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp index 68b693c5a0..6fbf1c3c85 100644 --- a/src/qml/jsruntime/qv4stringobject.cpp +++ b/src/qml/jsruntime/qv4stringobject.cpp @@ -218,8 +218,8 @@ static QString getThisString(ExecutionContext *ctx) { Scope scope(ctx); ScopedValue t(scope, ctx->thisObject()); - if (t->isString()) - return t->stringValue()->toQString(); + if (String *s = t->stringValue()) + return s->toQString(); if (StringObject *thisString = t->as<StringObject>()) return thisString->d()->string->toQString(); if (t->isUndefined() || t->isNull()) { @@ -282,13 +282,13 @@ ReturnedValue StringPrototype::method_concat(CallContext *context) if (scope.engine->hasException) return Encode::undefined(); - ScopedValue v(scope); + ScopedString s(scope); for (int i = 0; i < context->argc(); ++i) { - v = context->args()[i].toString(scope.engine); + s = context->args()[i].toString(scope.engine); if (scope.hasException()) return Encode::undefined(); - Q_ASSERT(v->isString()); - value += v->stringValue()->toQString(); + Q_ASSERT(s->isString()); + value += s->toQString(); } return context->d()->engine->newString(value)->asReturnedValue(); diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index 95c95b1974..ea5a3d491f 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -88,8 +88,8 @@ bool Value::toBoolean() const #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); #else - if (isString()) - return stringValue()->toQString().length() > 0; + if (String *s = stringValue()) + return s->toQString().length() > 0; #endif return true; default: // double @@ -114,8 +114,8 @@ double Value::toNumberImpl() const #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); #else - if (isString()) - return RuntimeHelpers::stringToNumber(stringValue()->toQString()); + if (String *s = stringValue()) + return RuntimeHelpers::stringToNumber(s->toQString()); { Q_ASSERT(isObject()); Scope scope(objectValue()->engine()); @@ -150,8 +150,8 @@ QString Value::toQStringNoThrow() const else return QStringLiteral("false"); case Value::Managed_Type: - if (isString()) - return stringValue()->toQString(); + if (String *s = stringValue()) + return s->toQString(); { Q_ASSERT(isObject()); Scope scope(objectValue()->engine()); @@ -203,8 +203,8 @@ QString Value::toQString() const else return QStringLiteral("false"); case Value::Managed_Type: - if (isString()) - return stringValue()->toQString(); + if (String *s = stringValue()) + return s->toQString(); { Q_ASSERT(isObject()); Scope scope(objectValue()->engine()); @@ -228,8 +228,10 @@ QString Value::toQString() const bool Value::sameValue(Value other) const { if (_val == other._val) return true; - if (isString() && other.isString()) - return stringValue()->isEqualTo(other.stringValue()); + String *s = stringValue(); + String *os = other.stringValue(); + if (s && os) + return s->isEqualTo(os); if (isInteger() && other.isDouble()) return int_32() ? (double(int_32()) == other.doubleValue()) : (other._val == 0); if (isDouble() && other.isInteger()) @@ -298,8 +300,8 @@ double Primitive::toInteger(double number) #ifndef V4_BOOTSTRAP Heap::String *Value::toString(ExecutionEngine *e) const { - if (isString()) - return stringValue()->d(); + if (String *s = stringValue()) + return s->d(); return RuntimeHelpers::convertToString(e, *this); } @@ -330,8 +332,8 @@ uint Value::asArrayLength(bool *ok) const } return idx; } - if (isString()) - return stringValue()->toUInt(ok); + if (String *s = stringValue()) + return s->toUInt(ok); uint idx = toUInt32(); double d = toNumber(); |