diff options
79 files changed, 565 insertions, 602 deletions
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp index bdf7294056..e7e8d130bb 100644 --- a/src/imports/localstorage/plugin.cpp +++ b/src/imports/localstorage/plugin.cpp @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE #define V4THROW_SQL(error, desc) { \ QV4::ScopedString v(scope, scope.engine->newString(desc)); \ QV4::ScopedObject ex(scope, scope.engine->newErrorObject(v)); \ - ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))).getPointer(), QV4::ScopedValue(scope, Primitive::fromInt32(error))); \ + ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))).getPointer(), QV4::ScopedValue(scope, Value::fromInt32(error))); \ scope.engine->throwError(ex); \ RETURN_UNDEFINED(); \ } @@ -74,7 +74,7 @@ QT_BEGIN_NAMESPACE #define V4THROW_SQL2(error, desc) { \ QV4::ScopedString v(scope, scope.engine->newString(desc)); \ QV4::ScopedObject ex(scope, scope.engine->newErrorObject(v)); \ - ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))).getPointer(), QV4::ScopedValue(scope, Primitive::fromInt32(error))); \ + ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))).getPointer(), QV4::ScopedValue(scope, Value::fromInt32(error))); \ args->setReturnValue(scope.engine->throwError(ex)); \ return; \ } @@ -291,7 +291,7 @@ static ReturnedValue qmlsqldatabase_executeSql(const FunctionObject *b, const Va QSqlQuery query(db); bool err = false; - ScopedValue result(scope, Primitive::undefinedValue()); + ScopedValue result(scope, Value::undefinedValue()); if (query.prepare(sql)) { if (argc > 1) { @@ -337,7 +337,7 @@ static ReturnedValue qmlsqldatabase_executeSql(const FunctionObject *b, const Va // XXX optimize ScopedString s(scope); ScopedValue v(scope); - resultObject->put((s = scope.engine->newIdentifier("rowsAffected")).getPointer(), (v = Primitive::fromInt32(query.numRowsAffected()))); + resultObject->put((s = scope.engine->newIdentifier("rowsAffected")).getPointer(), (v = Value::fromInt32(query.numRowsAffected()))); resultObject->put((s = scope.engine->newIdentifier("insertId")).getPointer(), (v = scope.engine->newString(query.lastInsertId().toString()))); resultObject->put((s = scope.engine->newIdentifier("rows")).getPointer(), rows); } else { @@ -394,7 +394,7 @@ static ReturnedValue qmlsqldatabase_changeVersion(const FunctionObject *b, const QSqlDatabase db = *r->d()->database; QString from_version = argv[0].toQString(); QString to_version = argv[1].toQString(); - ScopedFunctionObject callback(scope, argc > 2 ? argv[2] : Primitive::undefinedValue()); + ScopedFunctionObject callback(scope, argc > 2 ? argv[2] : Value::undefinedValue()); if (from_version != *r->d()->version) V4THROW_SQL(SQLEXCEPTION_VERSION_ERR, QQmlEngine::tr("Version mismatch: expected %1, found %2").arg(from_version).arg(*r->d()->version)); diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp index a1ed211a55..3170ee0c1b 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp @@ -70,7 +70,7 @@ QV4Debugger::QV4Debugger(QV4::ExecutionEngine *engine) , m_pauseRequested(false) , m_haveBreakPoints(false) , m_breakOnThrow(false) - , m_returnedValue(engine, QV4::Primitive::undefinedValue()) + , m_returnedValue(engine, QV4::Value::undefinedValue()) , m_gatherSources(nullptr) , m_runningJob(nullptr) , m_collector(engine) diff --git a/src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp b/src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp index cda16207c2..ceaa8a8de1 100644 --- a/src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp +++ b/src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp @@ -277,7 +277,7 @@ QV4::ReturnedValue NativeDebugger::evaluateExpression(const QString &expression) } NativeDebugger::NativeDebugger(QQmlNativeDebugServiceImpl *service, QV4::ExecutionEngine *engine) - : m_returnedValue(engine, QV4::Primitive::undefinedValue()) + : m_returnedValue(engine, QV4::Value::undefinedValue()) { m_stepping = NotStepping; m_pauseRequested = false; diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp index 5c91b51b91..8709e3fff8 100644 --- a/src/qml/compiler/qv4codegen.cpp +++ b/src/qml/compiler/qv4codegen.cpp @@ -968,7 +968,7 @@ bool Codegen::visit(ClassExpression *ast) return false; r.storeOnStack(heritage.stackSlot()); } else { - Reference::fromConst(this, Primitive::emptyValue().asReturnedValue()).loadInAccumulator(); + Reference::fromConst(this, Value::emptyValue().asReturnedValue()).loadInAccumulator(); heritage.storeConsumeAccumulator(); } @@ -1040,7 +1040,7 @@ bool Codegen::visit(ArrayPattern *ast) if (args == -1) args = temp; if (!arg) { - auto c = Reference::fromConst(this, Primitive::emptyValue().asReturnedValue()); + auto c = Reference::fromConst(this, Value::emptyValue().asReturnedValue()); (void) c.storeOnStack(temp); } else { RegisterScope scope(this); @@ -1101,7 +1101,7 @@ bool Codegen::visit(ArrayPattern *ast) while (it) { for (Elision *elision = it->elision; elision; elision = elision->next) { - Reference::fromConst(this, Primitive::emptyValue().asReturnedValue()).loadInAccumulator(); + Reference::fromConst(this, Value::emptyValue().asReturnedValue()).loadInAccumulator(); pushAccumulator(); } @@ -1485,9 +1485,9 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re } case QSOperator::BitAnd: if (right.isConstant()) { - int rightAsInt = Primitive::fromReturnedValue(right.constant).toInt32(); + int rightAsInt = Value::fromReturnedValue(right.constant).toInt32(); if (left.isConstant()) { - int result = Primitive::fromReturnedValue(left.constant).toInt32() & rightAsInt; + int result = Value::fromReturnedValue(left.constant).toInt32() & rightAsInt; return Reference::fromConst(this, Encode(result)); } left.loadInAccumulator(); @@ -1503,9 +1503,9 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re break; case QSOperator::BitOr: if (right.isConstant()) { - int rightAsInt = Primitive::fromReturnedValue(right.constant).toInt32(); + int rightAsInt = Value::fromReturnedValue(right.constant).toInt32(); if (left.isConstant()) { - int result = Primitive::fromReturnedValue(left.constant).toInt32() | rightAsInt; + int result = Value::fromReturnedValue(left.constant).toInt32() | rightAsInt; return Reference::fromConst(this, Encode(result)); } left.loadInAccumulator(); @@ -1521,9 +1521,9 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re break; case QSOperator::BitXor: if (right.isConstant()) { - int rightAsInt = Primitive::fromReturnedValue(right.constant).toInt32(); + int rightAsInt = Value::fromReturnedValue(right.constant).toInt32(); if (left.isConstant()) { - int result = Primitive::fromReturnedValue(left.constant).toInt32() ^ rightAsInt; + int result = Value::fromReturnedValue(left.constant).toInt32() ^ rightAsInt; return Reference::fromConst(this, Encode(result)); } left.loadInAccumulator(); @@ -1541,7 +1541,7 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re if (right.isConstant()) { left.loadInAccumulator(); Instruction::UShrConst ushr; - ushr.rhs = Primitive::fromReturnedValue(right.constant).toInt32() & 0x1f; + ushr.rhs = Value::fromReturnedValue(right.constant).toInt32() & 0x1f; bytecodeGenerator->addInstruction(ushr); } else { right.loadInAccumulator(); @@ -1554,7 +1554,7 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re if (right.isConstant()) { left.loadInAccumulator(); Instruction::ShrConst shr; - shr.rhs = Primitive::fromReturnedValue(right.constant).toInt32() & 0x1f; + shr.rhs = Value::fromReturnedValue(right.constant).toInt32() & 0x1f; bytecodeGenerator->addInstruction(shr); } else { right.loadInAccumulator(); @@ -1567,7 +1567,7 @@ Codegen::Reference Codegen::binopHelper(QSOperator::Op oper, Reference &left, Re if (right.isConstant()) { left.loadInAccumulator(); Instruction::ShlConst shl; - shl.rhs = Primitive::fromReturnedValue(right.constant).toInt32() & 0x1f; + shl.rhs = Value::fromReturnedValue(right.constant).toInt32() & 0x1f; bytecodeGenerator->addInstruction(shl); } else { right.loadInAccumulator(); @@ -1709,7 +1709,7 @@ Codegen::Reference Codegen::jumpBinop(QSOperator::Op oper, Reference &left, Refe } if (right.isConstant() && (oper == QSOperator::Equal || oper == QSOperator::NotEqual)) { - Value c = Primitive::fromReturnedValue(right.constant); + Value c = Value::fromReturnedValue(right.constant); if (c.isNull() || c.isUndefined()) { left.loadInAccumulator(); if (oper == QSOperator::Equal) { @@ -1979,7 +1979,7 @@ Codegen::Arguments Codegen::pushArgs(ArgumentList *args) argc = 0; for (ArgumentList *it = args; it; it = it->next) { if (it->isSpreadElement) { - Reference::fromConst(this, Primitive::emptyValue().asReturnedValue()).storeOnStack(calldata + argc); + Reference::fromConst(this, Value::emptyValue().asReturnedValue()).storeOnStack(calldata + argc); ++argc; } RegisterScope scope(this); @@ -4279,7 +4279,7 @@ QT_WARNING_DISABLE_GCC("-Wmaybe-uninitialized") // the loads below are empty str Instruction::LoadUndefined load; codegen->bytecodeGenerator->addInstruction(load); } else { - Value p = Primitive::fromReturnedValue(constant); + Value p = Value::fromReturnedValue(constant); if (p.isNumber()) { double d = p.asDouble(); int i = static_cast<int>(d); @@ -4290,7 +4290,7 @@ QT_WARNING_DISABLE_GCC("-Wmaybe-uninitialized") // the loads below are empty str return; } Instruction::LoadInt load; - load.value = Primitive::fromReturnedValue(constant).toInt32(); + load.value = Value::fromReturnedValue(constant).toInt32(); codegen->bytecodeGenerator->addInstruction(load); return; } diff --git a/src/qml/compiler/qv4compileddata.cpp b/src/qml/compiler/qv4compileddata.cpp index 98aa6bb180..c39cf51a1a 100644 --- a/src/qml/compiler/qv4compileddata.cpp +++ b/src/qml/compiler/qv4compileddata.cpp @@ -572,8 +572,8 @@ void CompilationUnit::evaluate() QV4::Function *moduleFunction = runtimeFunctions[data->indexOfRootFunction]; CppStackFrame frame; frame.init(engine, moduleFunction, nullptr, 0); - frame.setupJSFrame(engine->jsStackTop, Primitive::undefinedValue(), m_module->scope, - Primitive::undefinedValue(), Primitive::undefinedValue()); + frame.setupJSFrame(engine->jsStackTop, Value::undefinedValue(), m_module->scope, + Value::undefinedValue(), Value::undefinedValue()); frame.push(); engine->jsStackTop += frame.requiredJSStackFrameSize(); diff --git a/src/qml/jit/qv4baselineassembler.cpp b/src/qml/jit/qv4baselineassembler.cpp index c822a0f371..ce71dbdb5e 100644 --- a/src/qml/jit/qv4baselineassembler.cpp +++ b/src/qml/jit/qv4baselineassembler.cpp @@ -170,12 +170,12 @@ public: Jump jumpEmpty() { - return branch64(Equal, AccumulatorRegister, TrustedImm64(Primitive::emptyValue().asReturnedValue())); + return branch64(Equal, AccumulatorRegister, TrustedImm64(Value::emptyValue().asReturnedValue())); } Jump jumpNotEmpty() { - return branch64(NotEqual, AccumulatorRegister, TrustedImm64(Primitive::emptyValue().asReturnedValue())); + return branch64(NotEqual, AccumulatorRegister, TrustedImm64(Value::emptyValue().asReturnedValue())); } void toBoolean(std::function<void(RegisterID)> continuation) @@ -637,12 +637,12 @@ public: Jump jumpEmpty() { - return branch32(Equal, AccumulatorRegisterTag, TrustedImm32(Primitive::emptyValue().asReturnedValue() >> 32)); + return branch32(Equal, AccumulatorRegisterTag, TrustedImm32(Value::emptyValue().asReturnedValue() >> 32)); } Jump jumpNotEmpty() { - return branch32(NotEqual, AccumulatorRegisterTag, TrustedImm32(Primitive::emptyValue().asReturnedValue() >> 32)); + return branch32(NotEqual, AccumulatorRegisterTag, TrustedImm32(Value::emptyValue().asReturnedValue() >> 32)); } void toBoolean(std::function<void(RegisterID)> continuation) @@ -1476,7 +1476,7 @@ void BaselineAssembler::getException() pasm()->store8(TrustedImm32(0), hasExceptionAddr); auto done = pasm()->jump(); nope.link(pasm()); - pasm()->loadValue(Primitive::emptyValue().asReturnedValue()); + pasm()->loadValue(Value::emptyValue().asReturnedValue()); done.link(pasm()); } diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index f8be5fb140..7b4f2b00e7 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -970,7 +970,7 @@ void BaselineJIT::generate_LoadQmlImportedScripts(int result) void BaselineJIT::generate_InitializeBlockDeadTemporalZone(int firstReg, int count) { - as->loadValue(Primitive::emptyValue().rawValue()); + as->loadValue(Value::emptyValue().rawValue()); for (int i = firstReg, end = firstReg + count; i < end; ++i) as->storeReg(i); } diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp index f96414ea3f..4aa7c4b45d 100644 --- a/src/qml/jsapi/qjsengine.cpp +++ b/src/qml/jsapi/qjsengine.cpp @@ -726,16 +726,16 @@ bool QJSEngine::convertV2(const QJSValue &value, int type, void *ptr) double d = QV4::RuntimeHelpers::stringToNumber(string); switch (type) { case QMetaType::Int: - *reinterpret_cast<int*>(ptr) = QV4::Primitive::toInt32(d); + *reinterpret_cast<int*>(ptr) = QV4::Value::toInt32(d); return true; case QMetaType::UInt: - *reinterpret_cast<uint*>(ptr) = QV4::Primitive::toUInt32(d); + *reinterpret_cast<uint*>(ptr) = QV4::Value::toUInt32(d); return true; case QMetaType::LongLong: - *reinterpret_cast<qlonglong*>(ptr) = QV4::Primitive::toInteger(d); + *reinterpret_cast<qlonglong*>(ptr) = QV4::Value::toInteger(d); return true; case QMetaType::ULongLong: - *reinterpret_cast<qulonglong*>(ptr) = QV4::Primitive::toInteger(d); + *reinterpret_cast<qulonglong*>(ptr) = QV4::Value::toInteger(d); return true; case QMetaType::Double: *reinterpret_cast<double*>(ptr) = d; @@ -744,19 +744,19 @@ bool QJSEngine::convertV2(const QJSValue &value, int type, void *ptr) *reinterpret_cast<float*>(ptr) = d; return true; case QMetaType::Short: - *reinterpret_cast<short*>(ptr) = QV4::Primitive::toInt32(d); + *reinterpret_cast<short*>(ptr) = QV4::Value::toInt32(d); return true; case QMetaType::UShort: - *reinterpret_cast<unsigned short*>(ptr) = QV4::Primitive::toUInt32(d); + *reinterpret_cast<unsigned short*>(ptr) = QV4::Value::toUInt32(d); return true; case QMetaType::Char: - *reinterpret_cast<char*>(ptr) = QV4::Primitive::toInt32(d); + *reinterpret_cast<char*>(ptr) = QV4::Value::toInt32(d); return true; case QMetaType::UChar: - *reinterpret_cast<unsigned char*>(ptr) = QV4::Primitive::toUInt32(d); + *reinterpret_cast<unsigned char*>(ptr) = QV4::Value::toUInt32(d); return true; case QMetaType::QChar: - *reinterpret_cast<QChar*>(ptr) = QV4::Primitive::toUInt32(d); + *reinterpret_cast<QChar*>(ptr) = QV4::Value::toUInt32(d); return true; default: return false; diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index bf8000bdd8..9671e82187 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -569,7 +569,7 @@ qint32 QJSValue::toInt() const if (!val) { QVariant *variant = QJSValuePrivate::getVariant(this); if (variant->userType() == QMetaType::QString) - return QV4::Primitive::toInt32(RuntimeHelpers::stringToNumber(variant->toString())); + return QV4::Value::toInt32(RuntimeHelpers::stringToNumber(variant->toString())); else return variant->toInt(); } @@ -603,7 +603,7 @@ quint32 QJSValue::toUInt() const if (!val) { QVariant *variant = QJSValuePrivate::getVariant(this); if (variant->userType() == QMetaType::QString) - return QV4::Primitive::toUInt32(RuntimeHelpers::stringToNumber(variant->toString())); + return QV4::Value::toUInt32(RuntimeHelpers::stringToNumber(variant->toString())); else return variant->toUInt(); } diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index 86b97d83a1..9f2ce1a439 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -70,7 +70,7 @@ void Heap::StrictArgumentsObject::init(QV4::CppStackFrame *frame) args->arrayPut(0, frame->originalArguments, frame->originalArgumentsCount); Q_ASSERT(LengthPropertyIndex == args->internalClass()->find(v4->id_length()->propertyKey())); - setProperty(v4, LengthPropertyIndex, Primitive::fromInt32(frame->originalArgumentsCount)); + setProperty(v4, LengthPropertyIndex, Value::fromInt32(frame->originalArgumentsCount)); } void Heap::ArgumentsObject::init(QV4::CppStackFrame *frame) @@ -86,7 +86,7 @@ void Heap::ArgumentsObject::init(QV4::CppStackFrame *frame) Q_ASSERT(CalleePropertyIndex == internalClass->find(v4->id_callee()->propertyKey())); setProperty(v4, CalleePropertyIndex, context->d()->function); Q_ASSERT(LengthPropertyIndex == internalClass->find(v4->id_length()->propertyKey())); - setProperty(v4, LengthPropertyIndex, Primitive::fromInt32(context->argc())); + setProperty(v4, LengthPropertyIndex, Value::fromInt32(context->argc())); Q_ASSERT(SymbolIteratorPropertyIndex == internalClass->find(v4->symbol_iterator()->propertyKey())); setProperty(v4, SymbolIteratorPropertyIndex, *v4->arrayProtoValues()); diff --git a/src/qml/jsruntime/qv4arraybuffer.cpp b/src/qml/jsruntime/qv4arraybuffer.cpp index e74503e9d3..a99ec16943 100644 --- a/src/qml/jsruntime/qv4arraybuffer.cpp +++ b/src/qml/jsruntime/qv4arraybuffer.cpp @@ -90,7 +90,7 @@ ReturnedValue ArrayBufferCtor::virtualCallAsConstructor(const FunctionObject *f, ExecutionEngine *v4 = f->engine(); Scope scope(v4); - ScopedValue l(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue l(scope, argc ? argv[0] : Value::undefinedValue()); double dl = l->toInteger(); if (v4->hasException) return Encode::undefined(); @@ -183,7 +183,7 @@ void SharedArrayBufferPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); ctor->addSymbolSpecies(); @@ -246,7 +246,7 @@ void ArrayBufferPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); ctor->defineDefaultProperty(QStringLiteral("isView"), ArrayBufferCtor::method_isView, 1); ctor->addSymbolSpecies(); diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp index ce1d0503df..b11521f2d9 100644 --- a/src/qml/jsruntime/qv4arraydata.cpp +++ b/src/qml/jsruntime/qv4arraydata.cpp @@ -221,7 +221,7 @@ ReturnedValue SimpleArrayData::get(const Heap::ArrayData *d, uint index) { const Heap::SimpleArrayData *dd = static_cast<const Heap::SimpleArrayData *>(d); if (index >= dd->values.size) - return Primitive::emptyValue().asReturnedValue(); + return Value::emptyValue().asReturnedValue(); return dd->data(index).asReturnedValue(); } @@ -246,7 +246,7 @@ bool SimpleArrayData::del(Object *o, uint index) return true; if (!dd->attrs || dd->attrs[index].isConfigurable()) { - dd->setData(o->engine(), index, Primitive::emptyValue()); + dd->setData(o->engine(), index, Value::emptyValue()); if (dd->attrs) dd->attrs[index] = Attr_Data; return true; @@ -328,7 +328,7 @@ bool SimpleArrayData::putArray(Object *o, uint index, const Value *values, uint } QV4::ExecutionEngine *e = o->engine(); for (uint i = dd->values.size; i < index; ++i) - dd->setData(e, i, Primitive::emptyValue()); + dd->setData(e, i, Value::emptyValue()); for (uint i = 0; i < n; ++i) dd->setData(e, index + i, values[i]); dd->values.size = qMax(dd->values.size, index + n); @@ -402,7 +402,7 @@ ReturnedValue SparseArrayData::get(const Heap::ArrayData *d, uint index) const Heap::SparseArrayData *s = static_cast<const Heap::SparseArrayData *>(d); index = s->mappedIndex(index); if (index == UINT_MAX) - return Primitive::emptyValue().asReturnedValue(); + return Value::emptyValue().asReturnedValue(); return s->values[index].asReturnedValue(); } @@ -606,7 +606,7 @@ void ArrayData::insert(Object *o, uint index, const Value *v, bool isAccessor) if (index >= d->values.size) { // mark possible hole in the array for (uint i = d->values.size; i < index; ++i) - d->setData(o->engine(), i, Primitive::emptyValue()); + d->setData(o->engine(), i, Value::emptyValue()); d->values.size = index + 1; } d->setData(o->engine(), index, *v); @@ -799,7 +799,7 @@ void ArrayData::sort(ExecutionEngine *engine, Object *thisObject, const Value &c break; Q_ASSERT(!d->attrs || !d->attrs[len].isAccessor()); d->setData(engine, i, d->data(len)); - d->setData(engine, len, Primitive::emptyValue()); + d->setData(engine, len, Value::emptyValue()); } } diff --git a/src/qml/jsruntime/qv4arraydata_p.h b/src/qml/jsruntime/qv4arraydata_p.h index ac5b430356..0a034f3106 100644 --- a/src/qml/jsruntime/qv4arraydata_p.h +++ b/src/qml/jsruntime/qv4arraydata_p.h @@ -116,7 +116,7 @@ DECLARE_HEAP_OBJECT(ArrayData, Base) { inline PropertyAttributes attributes(uint i) const; bool isEmpty(uint i) const { - return get(i) == Primitive::emptyValue().asReturnedValue(); + return get(i) == Value::emptyValue().asReturnedValue(); } inline uint length() const { diff --git a/src/qml/jsruntime/qv4arrayiterator.cpp b/src/qml/jsruntime/qv4arrayiterator.cpp index 650f58463e..199b1a728a 100644 --- a/src/qml/jsruntime/qv4arrayiterator.cpp +++ b/src/qml/jsruntime/qv4arrayiterator.cpp @@ -65,7 +65,7 @@ ReturnedValue ArrayIteratorPrototype::method_next(const FunctionObject *b, const ScopedObject a(scope, thisObject->d()->iteratedObject); if (!a) { - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } @@ -77,13 +77,13 @@ ReturnedValue ArrayIteratorPrototype::method_next(const FunctionObject *b, const if (index >= len) { thisObject->d()->iteratedObject.set(scope.engine, nullptr); - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } thisObject->d()->nextIndex = index + 1; if (itemKind == KeyIteratorKind) { - return IteratorPrototype::createIterResultObject(scope.engine, Primitive::fromInt32(index), false); + return IteratorPrototype::createIterResultObject(scope.engine, Value::fromInt32(index), false); } ReturnedValue elementValue = a->get(index); @@ -96,7 +96,7 @@ ReturnedValue ArrayIteratorPrototype::method_next(const FunctionObject *b, const ScopedArrayObject resultArray(scope, scope.engine->newArrayObject()); resultArray->arrayReserve(2); - resultArray->arrayPut(0, Primitive::fromInt32(index)); + resultArray->arrayPut(0, Value::fromInt32(index)); resultArray->arrayPut(1, Value::fromReturnedValue(elementValue)); resultArray->setArrayLengthUnchecked(2); diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp index 042d296276..1ee1a7a4f7 100644 --- a/src/qml/jsruntime/qv4arrayobject.cpp +++ b/src/qml/jsruntime/qv4arrayobject.cpp @@ -94,7 +94,7 @@ void ArrayPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); ctor->defineDefaultProperty(QStringLiteral("isArray"), method_isArray, 1); ctor->defineDefaultProperty(QStringLiteral("of"), method_of, 0); @@ -108,26 +108,26 @@ void ArrayPrototype::init(ExecutionEngine *engine, Object *ctor) defineDefaultProperty(engine->id_toLocaleString(), method_toLocaleString, 0); defineDefaultProperty(QStringLiteral("concat"), method_concat, 1); name = engine->newIdentifier(QStringLiteral("copyWithin")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_copyWithin, 2); name = engine->newIdentifier(QStringLiteral("entries")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_entries, 0); name = engine->newIdentifier(QStringLiteral("fill")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_fill, 1); name = engine->newIdentifier(QStringLiteral("find")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_find, 1); name = engine->newIdentifier(QStringLiteral("findIndex")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_findIndex, 1); name = engine->newIdentifier(QStringLiteral("includes")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_includes, 1); defineDefaultProperty(QStringLiteral("join"), method_join, 1); name = engine->newIdentifier(QStringLiteral("keys")); - unscopables->put(name, Primitive::fromBoolean(true)); + unscopables->put(name, Value::fromBoolean(true)); defineDefaultProperty(name, method_keys, 0); defineDefaultProperty(QStringLiteral("pop"), method_pop, 0); defineDefaultProperty(QStringLiteral("push"), method_push, 1); @@ -149,7 +149,7 @@ void ArrayPrototype::init(ExecutionEngine *engine, Object *ctor) ScopedString valuesString(scope, engine->newIdentifier(QStringLiteral("values"))); ScopedObject values(scope, FunctionObject::createBuiltinFunction(engine, valuesString, method_values, 0)); engine->jsObjects[ExecutionEngine::ArrayProtoValues] = values; - unscopables->put(valuesString, Primitive::fromBoolean(true)); + unscopables->put(valuesString, Value::fromBoolean(true)); defineDefaultProperty(valuesString, values); defineDefaultProperty(engine->symbol_iterator(), values); @@ -165,13 +165,13 @@ ReturnedValue ArrayPrototype::method_isArray(const FunctionObject *, const Value static ScopedObject createObjectFromCtorOrArray(Scope &scope, ScopedFunctionObject ctor, bool useLen, int len) { - ScopedObject a(scope, Primitive::undefinedValue()); + ScopedObject a(scope, Value::undefinedValue()); if (ctor && ctor->isConstructor()) { // this isn't completely kosher. for instance: // Array.from.call(Object, []).constructor == Object // is expected by the tests, but naturally, we get Number. - ScopedValue argument(scope, useLen ? QV4::Encode(len) : Primitive::undefinedValue()); + ScopedValue argument(scope, useLen ? QV4::Encode(len) : Value::undefinedValue()); a = ctor->callAsConstructor(argument, useLen ? 1 : 0); } else { a = scope.engine->newArrayObject(len); @@ -198,7 +198,7 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V } } - ScopedFunctionObject mapfn(scope, Primitive::undefinedValue()); + ScopedFunctionObject mapfn(scope, Value::undefinedValue()); Value *mapArguments = nullptr; if (argc > 1) { mapfn = ScopedFunctionObject(scope, argv[1]); @@ -242,7 +242,7 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V if (ArrayObject *ao = a->as<ArrayObject>()) { ao->setArrayLengthUnchecked(k); } else { - a->set(scope.engine->id_length(), Primitive::fromDouble(k), QV4::Object::DoThrowOnRejection); + a->set(scope.engine->id_length(), Value::fromDouble(k), QV4::Object::DoThrowOnRejection); CHECK_EXCEPTION(); } return a.asReturnedValue(); @@ -250,10 +250,10 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V if (mapfn) { mapArguments[0] = *nextValue; - mapArguments[1] = Primitive::fromDouble(k); + mapArguments[1] = Value::fromDouble(k); mappedValue = mapfn->call(thisArg, mapArguments, 2); if (scope.engine->hasException) - return Runtime::method_iteratorClose(scope.engine, iterator, Primitive::fromBoolean(false)); + return Runtime::method_iteratorClose(scope.engine, iterator, Value::fromBoolean(false)); } else { mappedValue = *nextValue; } @@ -285,7 +285,7 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V CHECK_EXCEPTION(); qint64 k = 0; - ScopedValue mappedValue(scope, Primitive::undefinedValue()); + ScopedValue mappedValue(scope, Value::undefinedValue()); ScopedValue kValue(scope); while (k < len) { kValue = arrayLike->get(k); @@ -293,7 +293,7 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V if (mapfn) { mapArguments[0] = kValue; - mapArguments[1] = Primitive::fromDouble(k); + mapArguments[1] = Value::fromDouble(k); mappedValue = mapfn->call(thisArg, mapArguments, 2); CHECK_EXCEPTION(); } else { @@ -312,7 +312,7 @@ ReturnedValue ArrayPrototype::method_from(const FunctionObject *builtin, const V if (ArrayObject *ao = a->as<ArrayObject>()) { ao->setArrayLengthUnchecked(k); } else { - a->set(scope.engine->id_length(), Primitive::fromDouble(k), QV4::Object::DoThrowOnRejection); + a->set(scope.engine->id_length(), Value::fromDouble(k), QV4::Object::DoThrowOnRejection); CHECK_EXCEPTION(); } return a.asReturnedValue(); @@ -340,7 +340,7 @@ ReturnedValue ArrayPrototype::method_of(const FunctionObject *builtin, const Val // ArrayObject updates its own length, and will throw if we try touch it. if (!a->as<ArrayObject>()) { - a->set(scope.engine->id_length(), Primitive::fromDouble(argc), QV4::Object::DoThrowOnRejection); + a->set(scope.engine->id_length(), Value::fromDouble(argc), QV4::Object::DoThrowOnRejection); CHECK_EXCEPTION(); } @@ -540,13 +540,13 @@ ReturnedValue ArrayPrototype::method_find(const FunctionObject *b, const Value * ScopedValue result(scope); Value *arguments = scope.alloc(3); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); for (uint k = 0; k < len; ++k) { arguments[0] = instance->get(k); CHECK_EXCEPTION(); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; result = callback->call(that, arguments, 3); @@ -574,13 +574,13 @@ ReturnedValue ArrayPrototype::method_findIndex(const FunctionObject *b, const Va ScopedValue result(scope); Value *arguments = scope.alloc(3); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); for (uint k = 0; k < len; ++k) { arguments[0] = instance->get(k); CHECK_EXCEPTION(); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; result = callback->call(that, arguments, 3); @@ -600,7 +600,7 @@ ReturnedValue ArrayPrototype::method_join(const FunctionObject *b, const Value * if (!instance) return Encode(scope.engine->newString()); - ScopedValue arg(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue arg(scope, argc ? argv[0] : Value::undefinedValue()); QString r4; if (arg->isUndefined()) @@ -641,7 +641,7 @@ ReturnedValue ArrayPrototype::method_join(const FunctionObject *b, const Value * for (quint32 k = 1; k < r2; ++k) { R += r4; - name = Primitive::fromDouble(k).toString(scope.engine); + name = Value::fromDouble(k).toString(scope.engine); r12 = instance->get(name); CHECK_EXCEPTION(); @@ -664,7 +664,7 @@ ReturnedValue ArrayPrototype::method_pop(const FunctionObject *b, const Value *t if (!len) { if (!instance->isArrayObject()) - instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromInt32(0))); + instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromInt32(0))); RETURN_UNDEFINED(); } @@ -677,7 +677,7 @@ ReturnedValue ArrayPrototype::method_pop(const FunctionObject *b, const Value *t if (instance->isArrayObject()) instance->setArrayLength(len - 1); else { - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(len - 1)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(len - 1)))) return scope.engine->throwTypeError(); } return result->asReturnedValue(); @@ -700,13 +700,13 @@ ReturnedValue ArrayPrototype::method_push(const FunctionObject *b, const Value * double l = len; ScopedString s(scope); for (int i = 0, ei = argc; i < ei; ++i) { - s = Primitive::fromDouble(l + i).toString(scope.engine); + s = Value::fromDouble(l + i).toString(scope.engine); if (!instance->put(s, argv[i])) return scope.engine->throwTypeError(); } double newLen = l + argc; if (!instance->isArrayObject()) { - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(newLen)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(newLen)))) return scope.engine->throwTypeError(); } else { ScopedString str(scope, scope.engine->newString(QStringLiteral("Array.prototype.push: Overflow"))); @@ -730,7 +730,7 @@ ReturnedValue ArrayPrototype::method_push(const FunctionObject *b, const Value * if (instance->isArrayObject()) instance->setArrayLengthUnchecked(len); else { - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(len)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(len)))) return scope.engine->throwTypeError(); } @@ -789,7 +789,7 @@ ReturnedValue ArrayPrototype::method_shift(const FunctionObject *b, const Value if (!len) { if (!instance->isArrayObject()) - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromInt32(0)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromInt32(0)))) return scope.engine->throwTypeError(); RETURN_UNDEFINED(); } @@ -822,7 +822,7 @@ ReturnedValue ArrayPrototype::method_shift(const FunctionObject *b, const Value if (instance->isArrayObject()) instance->setArrayLengthUnchecked(len - 1); else { - bool ok = instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(len - 1))); + bool ok = instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(len - 1))); if (!ok) return scope.engine->throwTypeError(); } @@ -839,7 +839,7 @@ ReturnedValue ArrayPrototype::method_slice(const FunctionObject *b, const Value ScopedArrayObject result(scope, scope.engine->newArrayObject()); uint len = o->getLength(); - double s = (argc ? argv[0] : Primitive::undefinedValue()).toInteger(); + double s = (argc ? argv[0] : Value::undefinedValue()).toInteger(); uint start; if (s < 0) start = (uint)qMax(len + s, 0.); @@ -880,7 +880,7 @@ ReturnedValue ArrayPrototype::method_sort(const FunctionObject *b, const Value * uint len = instance->getLength(); - ScopedValue comparefn(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue comparefn(scope, argc ? argv[0] : Value::undefinedValue()); ArrayData::sort(scope.engine, instance, comparefn, len); return thisObject->asReturnedValue(); } @@ -894,7 +894,7 @@ ReturnedValue ArrayPrototype::method_splice(const FunctionObject *b, const Value qint64 len = instance->getLength(); - double rs = (argc ? argv[0] : Primitive::undefinedValue()).toInteger(); + double rs = (argc ? argv[0] : Value::undefinedValue()).toInteger(); qint64 start; if (rs < 0) start = static_cast<qint64>(qMax(0., len + rs)); @@ -966,7 +966,7 @@ ReturnedValue ArrayPrototype::method_splice(const FunctionObject *b, const Value for (uint i = 0; i < itemCount; ++i) instance->put(start + i, argv[i + 2]); - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(len - deleteCount + itemCount)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(len - deleteCount + itemCount)))) return scope.engine->throwTypeError(); return newArray->asReturnedValue(); @@ -1011,7 +1011,7 @@ ReturnedValue ArrayPrototype::method_unshift(const FunctionObject *b, const Valu if (instance->isArrayObject()) instance->setArrayLengthUnchecked(newLen); else { - if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(newLen)))) + if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Value::fromDouble(newLen)))) return scope.engine->throwTypeError(); } @@ -1067,7 +1067,7 @@ ReturnedValue ArrayPrototype::method_indexOf(const FunctionObject *b, const Valu if (!len) return Encode(-1); - ScopedValue searchValue(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue searchValue(scope, argc ? argv[0] : Value::undefinedValue()); uint fromIndex = 0; if (argc >= 2) { @@ -1151,7 +1151,7 @@ ReturnedValue ArrayPrototype::method_lastIndexOf(const FunctionObject *b, const if (argc >= 1) searchValue = argv[0]; else - searchValue = Primitive::undefinedValue(); + searchValue = Value::undefinedValue(); if (argc >= 2) { double f = argv[1].toInteger(); @@ -1191,7 +1191,7 @@ ReturnedValue ArrayPrototype::method_every(const FunctionObject *b, const Value THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedValue r(scope); Value *arguments = scope.alloc(3); @@ -1202,7 +1202,7 @@ ReturnedValue ArrayPrototype::method_every(const FunctionObject *b, const Value if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; r = callback->call(that, arguments, 3); ok = r->toBoolean(); @@ -1259,7 +1259,7 @@ ReturnedValue ArrayPrototype::method_some(const FunctionObject *b, const Value * THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedValue result(scope); Value *arguments = scope.alloc(3); @@ -1269,7 +1269,7 @@ ReturnedValue ArrayPrototype::method_some(const FunctionObject *b, const Value * if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; result = callback->call(that, arguments, 3); if (result->toBoolean()) @@ -1291,7 +1291,7 @@ ReturnedValue ArrayPrototype::method_forEach(const FunctionObject *b, const Valu THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); for (uint k = 0; k < len; ++k) { @@ -1300,7 +1300,7 @@ ReturnedValue ArrayPrototype::method_forEach(const FunctionObject *b, const Valu if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; callback->call(that, arguments, 3); } @@ -1329,7 +1329,7 @@ ReturnedValue ArrayPrototype::method_map(const FunctionObject *b, const Value *t ScopedValue v(scope); ScopedValue mapped(scope); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); for (uint k = 0; k < len; ++k) { @@ -1338,7 +1338,7 @@ ReturnedValue ArrayPrototype::method_map(const FunctionObject *b, const Value *t if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; mapped = callback->call(that, arguments, 3); a->arraySet(k, mapped); @@ -1363,7 +1363,7 @@ ReturnedValue ArrayPrototype::method_filter(const FunctionObject *b, const Value a->arrayReserve(len); ScopedValue selected(scope); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); uint to = 0; @@ -1373,7 +1373,7 @@ ReturnedValue ArrayPrototype::method_filter(const FunctionObject *b, const Value if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; selected = callback->call(that, arguments, 3); if (selected->toBoolean()) { @@ -1423,7 +1423,7 @@ ReturnedValue ArrayPrototype::method_reduce(const FunctionObject *b, const Value if (kPresent) { arguments[0] = acc; arguments[1] = v; - arguments[2] = Primitive::fromDouble(k); + arguments[2] = Value::fromDouble(k); arguments[3] = instance; acc = callback->call(nullptr, arguments, 4); } @@ -1476,7 +1476,7 @@ ReturnedValue ArrayPrototype::method_reduceRight(const FunctionObject *b, const if (kPresent) { arguments[0] = acc; arguments[1] = v; - arguments[2] = Primitive::fromDouble(k - 1); + arguments[2] = Value::fromDouble(k - 1); arguments[3] = instance; acc = callback->call(nullptr, arguments, 4); } diff --git a/src/qml/jsruntime/qv4atomics.cpp b/src/qml/jsruntime/qv4atomics.cpp index b29e46db78..4299aef859 100644 --- a/src/qml/jsruntime/qv4atomics.cpp +++ b/src/qml/jsruntime/qv4atomics.cpp @@ -114,11 +114,11 @@ ReturnedValue atomicReadModifyWrite(const FunctionObject *f, const Value *argv, if (!buffer) return Encode::undefined(); const TypedArray &a = static_cast<const TypedArray &>(argv[0]); - int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Primitive::undefinedValue()); + int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Value::undefinedValue()); if (index < 0) return Encode::undefined(); - Value v = Primitive::fromReturnedValue((argc > 2 ? argv[2] : Primitive::undefinedValue()).convertedToNumber()); + Value v = Value::fromReturnedValue((argc > 2 ? argv[2] : Value::undefinedValue()).convertedToNumber()); if (scope.hasException()) return Encode::undefined(); @@ -148,14 +148,14 @@ ReturnedValue Atomics::method_compareExchange(const FunctionObject *f, const Val if (!buffer) return Encode::undefined(); const TypedArray &a = static_cast<const TypedArray &>(argv[0]); - int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Primitive::undefinedValue()); + int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Value::undefinedValue()); if (index < 0) return Encode::undefined(); - Value expected = Primitive::fromReturnedValue((argc > 2 ? argv[2] : Primitive::undefinedValue()).convertedToNumber()); + Value expected = Value::fromReturnedValue((argc > 2 ? argv[2] : Value::undefinedValue()).convertedToNumber()); if (scope.hasException()) return Encode::undefined(); - Value v = Primitive::fromReturnedValue((argc > 3 ? argv[3] : Primitive::undefinedValue()).convertedToNumber()); + Value v = Value::fromReturnedValue((argc > 3 ? argv[3] : Value::undefinedValue()).convertedToNumber()); if (scope.hasException()) return Encode::undefined(); @@ -196,7 +196,7 @@ ReturnedValue Atomics::method_load(const FunctionObject *f, const Value *, const if (!buffer) return Encode::undefined(); const TypedArray &a = static_cast<const TypedArray &>(argv[0]); - int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Primitive::undefinedValue()); + int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Value::undefinedValue()); if (index < 0) return Encode::undefined(); @@ -221,11 +221,11 @@ ReturnedValue Atomics::method_store(const FunctionObject *f, const Value *, cons if (!buffer) return Encode::undefined(); const TypedArray &a = static_cast<const TypedArray &>(argv[0]); - int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Primitive::undefinedValue()); + int index = validateAtomicAccess(scope, a, argc > 1 ? argv[1] : Value::undefinedValue()); if (index < 0) return Encode::undefined(); - Value v = Primitive::fromReturnedValue((argc > 2 ? argv[2] : Primitive::undefinedValue()).convertedToNumber()); + Value v = Value::fromReturnedValue((argc > 2 ? argv[2] : Value::undefinedValue()).convertedToNumber()); if (scope.hasException()) return Encode::undefined(); diff --git a/src/qml/jsruntime/qv4booleanobject.cpp b/src/qml/jsruntime/qv4booleanobject.cpp index f00abad871..075ee1657e 100644 --- a/src/qml/jsruntime/qv4booleanobject.cpp +++ b/src/qml/jsruntime/qv4booleanobject.cpp @@ -66,7 +66,7 @@ void BooleanPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); defineDefaultProperty(QStringLiteral("constructor"), (o = ctor)); defineDefaultProperty(engine->id_toString(), method_toString); diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index d22179173c..6e3e7f9b4f 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -115,7 +115,7 @@ Heap::CallContext *ExecutionContext::newCallContext(CppStackFrame *frame) c->locals.size = nLocals; c->locals.alloc = localsAndFormals; // memory allocated from the JS heap is 0 initialized, so check if empty is 0 - Q_ASSERT(Primitive::undefinedValue().asReturnedValue() == 0); + Q_ASSERT(Value::undefinedValue().asReturnedValue() == 0); c->setupLocalTemporalDeadZone(compiledFunction); diff --git a/src/qml/jsruntime/qv4context_p.h b/src/qml/jsruntime/qv4context_p.h index 5de11d80cb..5cd2f9ddf0 100644 --- a/src/qml/jsruntime/qv4context_p.h +++ b/src/qml/jsruntime/qv4context_p.h @@ -122,7 +122,7 @@ DECLARE_HEAP_OBJECT(CallContext, ExecutionContext) { template <typename BlockOrFunction> void setupLocalTemporalDeadZone(BlockOrFunction *bof) { for (uint i = bof->nLocals - bof->sizeOfLocalTemporalDeadZone; i < bof->nLocals; ++i) - locals.values[i] = Primitive::emptyValue(); + locals.values[i] = Value::emptyValue(); } }; Q_STATIC_ASSERT(std::is_trivial< CallContext >::value); diff --git a/src/qml/jsruntime/qv4dataview.cpp b/src/qml/jsruntime/qv4dataview.cpp index d52b9488ac..5ab8cf2dcb 100644 --- a/src/qml/jsruntime/qv4dataview.cpp +++ b/src/qml/jsruntime/qv4dataview.cpp @@ -75,11 +75,11 @@ static uint toIndex(ExecutionEngine *e, const Value &v) ReturnedValue DataViewCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { Scope scope(f->engine()); - Scoped<SharedArrayBuffer> buffer(scope, argc ? argv[0] : Primitive::undefinedValue()); + Scoped<SharedArrayBuffer> buffer(scope, argc ? argv[0] : Value::undefinedValue()); if (!newTarget || !buffer) return scope.engine->throwTypeError(); - uint offset = ::toIndex(scope.engine, argc > 1 ? argv[1]: Primitive::undefinedValue()); + uint offset = ::toIndex(scope.engine, argc > 1 ? argv[1]: Value::undefinedValue()); if (scope.hasException()) return Encode::undefined(); if (buffer->isDetachedBuffer()) @@ -111,7 +111,7 @@ void DataViewPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); defineDefaultProperty(engine->id_constructor(), (o = ctor)); defineAccessorProperty(QStringLiteral("buffer"), method_get_buffer, nullptr); @@ -188,7 +188,7 @@ ReturnedValue DataViewPrototype::method_getChar(const FunctionObject *b, const V const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); if (v->d()->buffer->isDetachedBuffer()) @@ -209,7 +209,7 @@ ReturnedValue DataViewPrototype::method_get(const FunctionObject *b, const Value const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); if (v->d()->buffer->isDetachedBuffer()) @@ -234,7 +234,7 @@ ReturnedValue DataViewPrototype::method_getFloat(const FunctionObject *b, const const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); if (v->d()->buffer->isDetachedBuffer()) @@ -275,7 +275,7 @@ ReturnedValue DataViewPrototype::method_setChar(const FunctionObject *b, const V const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); @@ -300,7 +300,7 @@ ReturnedValue DataViewPrototype::method_set(const FunctionObject *b, const Value const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); @@ -330,7 +330,7 @@ ReturnedValue DataViewPrototype::method_setFloat(const FunctionObject *b, const const DataView *v = thisObject->as<DataView>(); if (!v) return e->throwTypeError(); - uint idx = ::toIndex(e, argc ? argv[0] : Primitive::undefinedValue()); + uint idx = ::toIndex(e, argc ? argv[0] : Value::undefinedValue()); if (e->hasException) return Encode::undefined(); diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index 93ca4f5442..df3bb37e9c 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -222,7 +222,7 @@ static inline double MonthFromTime(double t) static inline double DateFromTime(double t) { - int m = (int) Primitive::toInteger(MonthFromTime(t)); + int m = (int) QV4::Value::toInteger(MonthFromTime(t)); double d = DayWithinYear(t); double l = InLeapYear(t); @@ -255,10 +255,10 @@ static inline double MakeTime(double hour, double min, double sec, double ms) { if (!qIsFinite(hour) || !qIsFinite(min) || !qIsFinite(sec) || !qIsFinite(ms)) return qQNaN(); - hour = Primitive::toInteger(hour); - min = Primitive::toInteger(min); - sec = Primitive::toInteger(sec); - ms = Primitive::toInteger(ms); + hour = QV4::Value::toInteger(hour); + min = QV4::Value::toInteger(min); + sec = QV4::Value::toInteger(sec); + ms = QV4::Value::toInteger(ms); return ((hour * MinutesPerHour + min) * SecondsPerMinute + sec) * msPerSecond + ms; } @@ -286,9 +286,9 @@ static double MakeDay(double year, double month, double day) { if (!qIsFinite(year) || !qIsFinite(month) || !qIsFinite(day)) return qQNaN(); - year = Primitive::toInteger(year); - month = Primitive::toInteger(month); - day = Primitive::toInteger(day); + year = QV4::Value::toInteger(year); + month = QV4::Value::toInteger(month); + day = QV4::Value::toInteger(day); year += ::floor(month / 12.0); @@ -384,7 +384,7 @@ static inline double TimeClip(double t) return qt_qnan(); // +0 looks weird, but is correct. See ES6 20.3.1.15. We must not return -0. - return Primitive::toInteger(t) + 0; + return QV4::Value::toInteger(t) + 0; } static inline double ParseString(const QString &s, double localTZA) @@ -792,7 +792,7 @@ ReturnedValue DateCtor::virtualCallAsConstructor(const FunctionObject *that, con t = TimeClip(UTC(t, e->localTZA)); } - return Encode(e->newDateObject(Primitive::fromDouble(t))); + return Encode(e->newDateObject(Value::fromDouble(t))); } ReturnedValue DateCtor::virtualCall(const FunctionObject *m, const Value *, const Value *, int) @@ -807,7 +807,7 @@ void DatePrototype::init(ExecutionEngine *engine, Object *ctor) Scope scope(engine); ScopedObject o(scope); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(7)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(7)); engine->localTZA = getLocalTZA(); ctor->defineDefaultProperty(QStringLiteral("parse"), method_parse, 1); @@ -918,7 +918,7 @@ ReturnedValue DatePrototype::method_UTC(const FunctionObject *f, const Value *, double ms = numArgs >= 7 ? argv[6].toNumber() : 0; if (e->hasException) return Encode::undefined(); - double iyear = Primitive::toInteger(year); + double iyear = QV4::Value::toInteger(year); if (!qIsNaN(year) && iyear >= 0 && iyear <= 99) year = 1900 + iyear; double t = MakeDate(MakeDay(year, month, day), @@ -1406,7 +1406,7 @@ ReturnedValue DatePrototype::method_setYear(const FunctionObject *b, const Value if (std::isnan(year)) { r = qt_qnan(); } else { - if ((Primitive::toInteger(year) >= 0) && (Primitive::toInteger(year) <= 99)) + if ((QV4::Value::toInteger(year) >= 0) && (QV4::Value::toInteger(year) <= 99)) year += 1900; r = MakeDay(year, MonthFromTime(t), DateFromTime(t)); r = UTC(MakeDate(r, TimeWithinDay(t)), v4->localTZA); diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 8747676685..672196dd3f 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -566,9 +566,9 @@ ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine) globalObject->defineDefaultProperty(QStringLiteral("Reflect"), (o = memoryManager->allocate<Reflect>())); globalObject->defineDefaultProperty(QStringLiteral("Proxy"), (o = memoryManager->allocate<Proxy>(rootContext()))); - globalObject->defineReadonlyProperty(QStringLiteral("undefined"), Primitive::undefinedValue()); - globalObject->defineReadonlyProperty(QStringLiteral("NaN"), Primitive::fromDouble(std::numeric_limits<double>::quiet_NaN())); - globalObject->defineReadonlyProperty(QStringLiteral("Infinity"), Primitive::fromDouble(Q_INFINITY)); + globalObject->defineReadonlyProperty(QStringLiteral("undefined"), Value::undefinedValue()); + globalObject->defineReadonlyProperty(QStringLiteral("NaN"), Value::fromDouble(std::numeric_limits<double>::quiet_NaN())); + globalObject->defineReadonlyProperty(QStringLiteral("Infinity"), Value::fromDouble(Q_INFINITY)); jsObjects[Eval_Function] = memoryManager->allocate<EvalFunction>(global); @@ -601,7 +601,7 @@ ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine) globalObject->defineDefaultProperty(QStringLiteral("unescape"), GlobalFunctions::method_unescape, 1); ScopedFunctionObject t(scope, memoryManager->allocate<FunctionObject>(rootContext(), nullptr, ::throwTypeError)); - t->defineReadonlyProperty(id_length(), Primitive::fromInt32(0)); + t->defineReadonlyProperty(id_length(), Value::fromInt32(0)); t->setInternalClass(t->internalClass()->frozen()); jsObjects[ThrowerObject] = t; @@ -1044,7 +1044,7 @@ ReturnedValue ExecutionEngine::catchException(StackTrace *trace) exceptionStackTrace.clear(); hasException = false; ReturnedValue res = exceptionValue->asReturnedValue(); - *exceptionValue = Primitive::emptyValue(); + *exceptionValue = Value::emptyValue(); return res; } diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp index f8812b019d..eb246478c5 100644 --- a/src/qml/jsruntime/qv4errorobject.cpp +++ b/src/qml/jsruntime/qv4errorobject.cpp @@ -74,9 +74,9 @@ void Heap::ErrorObject::init() return; setProperty(scope.engine, QV4::ErrorObject::Index_Stack, scope.engine->getStackFunction()->d()); - setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Primitive::undefinedValue()); - setProperty(scope.engine, QV4::ErrorObject::Index_FileName, Primitive::undefinedValue()); - setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Primitive::undefinedValue()); + setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Value::undefinedValue()); + setProperty(scope.engine, QV4::ErrorObject::Index_FileName, Value::undefinedValue()); + setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Value::undefinedValue()); } void Heap::ErrorObject::init(const Value &message, ErrorType t) @@ -88,12 +88,12 @@ void Heap::ErrorObject::init(const Value &message, ErrorType t) Scoped<QV4::ErrorObject> e(scope, this); setProperty(scope.engine, QV4::ErrorObject::Index_Stack, scope.engine->getStackFunction()->d()); - setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Primitive::undefinedValue()); + setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Value::undefinedValue()); e->d()->stackTrace = new StackTrace(scope.engine->stackTrace()); if (!e->d()->stackTrace->isEmpty()) { setProperty(scope.engine, QV4::ErrorObject::Index_FileName, scope.engine->newString(e->d()->stackTrace->at(0).source)); - setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Primitive::fromInt32(e->d()->stackTrace->at(0).line)); + setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Value::fromInt32(e->d()->stackTrace->at(0).line)); } if (!message.isUndefined()) @@ -110,7 +110,7 @@ void Heap::ErrorObject::init(const Value &message, const QString &fileName, int Scoped<QV4::ErrorObject> e(scope, this); setProperty(scope.engine, QV4::ErrorObject::Index_Stack, scope.engine->getStackFunction()->d()); - setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Primitive::undefinedValue()); + setProperty(scope.engine, QV4::ErrorObject::Index_Stack + QV4::Object::SetterOffset, Value::undefinedValue()); e->d()->stackTrace = new StackTrace(scope.engine->stackTrace()); StackFrame frame; @@ -121,7 +121,7 @@ void Heap::ErrorObject::init(const Value &message, const QString &fileName, int Q_ASSERT(!e->d()->stackTrace->isEmpty()); setProperty(scope.engine, QV4::ErrorObject::Index_FileName, scope.engine->newString(e->d()->stackTrace->at(0).source)); - setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Primitive::fromInt32(e->d()->stackTrace->at(0).line)); + setProperty(scope.engine, QV4::ErrorObject::Index_LineNumber, Value::fromInt32(e->d()->stackTrace->at(0).line)); if (!message.isUndefined()) setProperty(scope.engine, QV4::ErrorObject::Index_Message, message); @@ -231,7 +231,7 @@ void Heap::ErrorCtor::init(QV4::ExecutionContext *scope, const QString &name) ReturnedValue ErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<ErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -247,7 +247,7 @@ void Heap::EvalErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue EvalErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<EvalErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -258,7 +258,7 @@ void Heap::RangeErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue RangeErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<RangeErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -269,7 +269,7 @@ void Heap::ReferenceErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue ReferenceErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<ReferenceErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -280,7 +280,7 @@ void Heap::SyntaxErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue SyntaxErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<SyntaxErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -291,7 +291,7 @@ void Heap::TypeErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue TypeErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<TypeErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -302,7 +302,7 @@ void Heap::URIErrorCtor::init(QV4::ExecutionContext *scope) ReturnedValue URIErrorCtor::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *newTarget) { - Value v = argc ? *argv : Primitive::undefinedValue(); + Value v = argc ? *argv : Value::undefinedValue(); return ErrorObject::create<URIErrorObject>(f->engine(), v, newTarget)->asReturnedValue(); } @@ -312,7 +312,7 @@ void ErrorPrototype::init(ExecutionEngine *engine, Object *ctor, Object *obj, He ScopedString s(scope); ScopedObject o(scope); ctor->defineReadonlyProperty(engine->id_prototype(), (o = obj)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); obj->setProperty(Index_Constructor, ctor->d()); obj->setProperty(Index_Message, engine->id_empty()->d()); obj->setProperty(Index_Name, engine->newString(QString::fromLatin1(ErrorObject::className(t)))); diff --git a/src/qml/jsruntime/qv4estable.cpp b/src/qml/jsruntime/qv4estable.cpp index aa39971dc6..99f6bf6aa0 100644 --- a/src/qml/jsruntime/qv4estable.cpp +++ b/src/qml/jsruntime/qv4estable.cpp @@ -107,7 +107,7 @@ void ESTable::set(const Value &key, const Value &value) Value nk = key; if (nk.isDouble()) { if (nk.doubleValue() == 0 && std::signbit(nk.doubleValue())) - nk = Primitive::fromDouble(+0); + nk = Value::fromDouble(+0); } m_keys[m_size] = nk; diff --git a/src/qml/jsruntime/qv4function.cpp b/src/qml/jsruntime/qv4function.cpp index 5e3860a660..941c37de5b 100644 --- a/src/qml/jsruntime/qv4function.cpp +++ b/src/qml/jsruntime/qv4function.cpp @@ -58,9 +58,9 @@ ReturnedValue Function::call(const Value *thisObject, const Value *argv, int arg ExecutionEngine *engine = context->engine(); CppStackFrame frame; frame.init(engine, this, argv, argc); - frame.setupJSFrame(engine->jsStackTop, Primitive::undefinedValue(), context->d(), - thisObject ? *thisObject : Primitive::undefinedValue(), - Primitive::undefinedValue()); + frame.setupJSFrame(engine->jsStackTop, Value::undefinedValue(), context->d(), + thisObject ? *thisObject : Value::undefinedValue(), + Value::undefinedValue()); frame.push(); engine->jsStackTop += frame.requiredJSStackFrameSize(); diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index 7dd9c90511..a2a5cdd474 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -200,7 +200,7 @@ Heap::FunctionObject *FunctionObject::createBuiltinFunction(ExecutionEngine *eng name = engine->newString(QChar::fromLatin1('[') + nameOrSymbol->toQString().midRef(1) + QChar::fromLatin1(']')); ScopedFunctionObject function(scope, engine->memoryManager->allocate<FunctionObject>(engine->rootContext(), name, code)); - function->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(argumentCount)); + function->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(argumentCount)); return function->d(); } @@ -305,11 +305,11 @@ void FunctionPrototype::init(ExecutionEngine *engine, Object *ctor) Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); defineReadonlyConfigurableProperty(engine->id_name(), *engine->id_empty()); - defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); defineDefaultProperty(QStringLiteral("constructor"), (o = ctor)); defineDefaultProperty(engine->id_toString(), method_toString, 0); defineDefaultProperty(QStringLiteral("apply"), method_apply, 2); @@ -364,7 +364,7 @@ ReturnedValue FunctionPrototype::method_apply(const QV4::FunctionObject *b, cons int l = qMin(len, (uint)a->d()->context->argc()); memcpy(arguments, a->d()->context->args(), l*sizeof(Value)); for (quint32 i = l; i < len; ++i) - arguments[i] = Primitive::undefinedValue(); + arguments[i] = Value::undefinedValue(); } else if (arr->arrayType() == Heap::ArrayData::Simple && !arr->protoHasArray()) { auto sad = static_cast<Heap::SimpleArrayData *>(arr->arrayData()); uint alen = sad ? sad->values.size : 0; @@ -373,7 +373,7 @@ ReturnedValue FunctionPrototype::method_apply(const QV4::FunctionObject *b, cons for (uint i = 0; i < alen; ++i) arguments[i] = sad->data(i); for (quint32 i = alen; i < len; ++i) - arguments[i] = Primitive::undefinedValue(); + arguments[i] = Value::undefinedValue(); } else { // need to init the arguments array, as the get() calls below can have side effects memset(arguments, 0, len*sizeof(Value)); @@ -407,7 +407,7 @@ ReturnedValue FunctionPrototype::method_bind(const FunctionObject *b, const Valu if (!target || target->isBinding()) return scope.engine->throwTypeError(); - ScopedValue boundThis(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue boundThis(scope, argc ? argv[0] : Value::undefinedValue()); Scoped<MemberData> boundArgs(scope, (Heap::MemberData *)nullptr); int nArgs = (argc - 1 >= 0) ? argc - 1 : 0; @@ -474,7 +474,7 @@ ReturnedValue ScriptFunction::virtualCallAsConstructor(const FunctionObject *fo, frame.init(v4, f->function(), argv, argc); frame.setupJSFrame(v4->jsStackTop, *f, f->scope(), thisObject, - newTarget ? *newTarget : Primitive::undefinedValue()); + newTarget ? *newTarget : Value::undefinedValue()); frame.push(); v4->jsStackTop += frame.requiredJSStackFrameSize(); @@ -496,8 +496,8 @@ ReturnedValue ScriptFunction::virtualCall(const FunctionObject *fo, const Value CppStackFrame frame; frame.init(engine, fo->function(), argv, argc); frame.setupJSFrame(engine->jsStackTop, *fo, fo->scope(), - thisObject ? *thisObject : Primitive::undefinedValue(), - Primitive::undefinedValue()); + thisObject ? *thisObject : Value::undefinedValue(), + Value::undefinedValue()); frame.push(); engine->jsStackTop += frame.requiredJSStackFrameSize(); @@ -527,7 +527,7 @@ void Heap::ScriptFunction::init(QV4::ExecutionContext *scope, Function *function f->createDefaultPrototypeProperty(Heap::FunctionObject::Index_ProtoConstructor); Q_ASSERT(internalClass && internalClass->find(s.engine->id_length()->propertyKey()) == Index_Length); - setProperty(s.engine, Index_Length, Primitive::fromInt32(int(function->compiledFunction->length))); + setProperty(s.engine, Index_Length, Value::fromInt32(int(function->compiledFunction->length))); } Heap::InternalClass *ScriptFunction::classForConstructor() const @@ -559,8 +559,8 @@ ReturnedValue ConstructorFunction::virtualCallAsConstructor(const FunctionObject CppStackFrame frame; frame.init(v4, f->function(), argv, argc); frame.setupJSFrame(v4->jsStackTop, *f, f->scope(), - Primitive::emptyValue(), - newTarget ? *newTarget : Primitive::undefinedValue()); + Value::emptyValue(), + newTarget ? *newTarget : Value::undefinedValue()); frame.push(); v4->jsStackTop += frame.requiredJSStackFrameSize(); @@ -576,7 +576,7 @@ ReturnedValue ConstructorFunction::virtualCallAsConstructor(const FunctionObject return result; else if (!Value::fromReturnedValue(result).isUndefined()) return v4->throwTypeError(); - else if (Primitive::fromReturnedValue(thisObject).isEmpty()) { + else if (Value::fromReturnedValue(thisObject).isEmpty()) { Scope scope(v4); ScopedString s(scope, v4->newString(QStringLiteral("this"))); return v4->throwReferenceError(s); @@ -613,8 +613,8 @@ ReturnedValue DefaultClassConstructorFunction::virtualCallAsConstructor(const Fu CppStackFrame frame; frame.init(v4, nullptr, argv, argc); frame.setupJSFrame(v4->jsStackTop, *f, f->scope(), - Primitive::undefinedValue(), - newTarget ? *newTarget : Primitive::undefinedValue(), argc, argc); + Value::undefinedValue(), + newTarget ? *newTarget : Value::undefinedValue(), argc, argc); frame.push(); v4->jsStackTop += frame.requiredJSStackFrameSize(argc); @@ -631,7 +631,7 @@ ReturnedValue DefaultClassConstructorFunction::virtualCallAsConstructor(const Fu return result; else if (!Value::fromReturnedValue(result).isUndefined()) return v4->throwTypeError(); - else if (Primitive::fromReturnedValue(thisObject).isEmpty()) { + else if (Value::fromReturnedValue(thisObject).isEmpty()) { Scope scope(v4); ScopedString s(scope, v4->newString(QStringLiteral("this"))); return v4->throwReferenceError(s); @@ -669,7 +669,7 @@ void Heap::BoundFunction::init(QV4::ExecutionContext *scope, QV4::FunctionObject len -= boundArgs->size(); if (len < 0) len = 0; - f->defineReadonlyConfigurableProperty(s.engine->id_length(), Primitive::fromInt32(len)); + f->defineReadonlyConfigurableProperty(s.engine->id_length(), Value::fromInt32(len)); ScopedProperty pd(s); pd->value = s.engine->thrower(); diff --git a/src/qml/jsruntime/qv4generatorobject.cpp b/src/qml/jsruntime/qv4generatorobject.cpp index dd3d0328b0..da87127e08 100644 --- a/src/qml/jsruntime/qv4generatorobject.cpp +++ b/src/qml/jsruntime/qv4generatorobject.cpp @@ -108,8 +108,8 @@ ReturnedValue GeneratorFunction::virtualCall(const FunctionObject *f, const Valu memcpy(gp->stack.values, argv, argc*sizeof(Value)); gp->cppFrame.init(engine, function, gp->stack.values, argc); gp->cppFrame.setupJSFrame(&gp->stack.values[argc], *gf, gf->scope(), - thisObject ? *thisObject : Primitive::undefinedValue(), - Primitive::undefinedValue()); + thisObject ? *thisObject : Value::undefinedValue(), + Value::undefinedValue()); gp->cppFrame.push(); @@ -134,7 +134,7 @@ void GeneratorPrototype::init(ExecutionEngine *engine, Object *ctor) ScopedObject ctorProto(scope, engine->newObject(engine->newInternalClass(Object::staticVTable(), engine->functionPrototype()))); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineReadonlyProperty(engine->id_prototype(), ctorProto); ctorProto->defineDefaultProperty(QStringLiteral("constructor"), (v = ctor), Attr_ReadOnly_ButConfigurable); @@ -158,9 +158,9 @@ ReturnedValue GeneratorPrototype::method_next(const FunctionObject *f, const Val Heap::GeneratorObject *gp = g->d(); if (gp->state == GeneratorState::Completed) - return IteratorPrototype::createIterResultObject(engine, Primitive::undefinedValue(), true); + return IteratorPrototype::createIterResultObject(engine, Value::undefinedValue(), true); - return g->resume(engine, argc ? argv[0] : Primitive::undefinedValue()); + return g->resume(engine, argc ? argv[0] : Value::undefinedValue()); } ReturnedValue GeneratorPrototype::method_return(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc) @@ -176,13 +176,13 @@ ReturnedValue GeneratorPrototype::method_return(const FunctionObject *f, const V gp->state = GeneratorState::Completed; if (gp->state == GeneratorState::Completed) - return IteratorPrototype::createIterResultObject(engine, argc ? argv[0] : Primitive::undefinedValue(), true); + return IteratorPrototype::createIterResultObject(engine, argc ? argv[0] : Value::undefinedValue(), true); // the bytecode interpreter interprets an exception with empty value as // a yield called with return() - engine->throwError(Primitive::emptyValue()); + engine->throwError(Value::emptyValue()); - return g->resume(engine, argc ? argv[0]: Primitive::undefinedValue()); + return g->resume(engine, argc ? argv[0]: Value::undefinedValue()); } ReturnedValue GeneratorPrototype::method_throw(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc) @@ -194,14 +194,14 @@ ReturnedValue GeneratorPrototype::method_throw(const FunctionObject *f, const Va Heap::GeneratorObject *gp = g->d(); - engine->throwError(argc ? argv[0]: Primitive::undefinedValue()); + engine->throwError(argc ? argv[0]: Value::undefinedValue()); if (gp->state == GeneratorState::SuspendedStart || gp->state == GeneratorState::Completed) { gp->state = GeneratorState::Completed; return Encode::undefined(); } - return g->resume(engine, Primitive::undefinedValue()); + return g->resume(engine, Value::undefinedValue()); } ReturnedValue GeneratorObject::resume(ExecutionEngine *engine, const Value &arg) const diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp index 1f747b62d7..becdc3bc55 100644 --- a/src/qml/jsruntime/qv4globalobject.cpp +++ b/src/qml/jsruntime/qv4globalobject.cpp @@ -335,7 +335,7 @@ void Heap::EvalFunction::init(QV4::ExecutionContext *scope) Scope s(scope); Heap::FunctionObject::init(scope, s.engine->id_eval()); ScopedFunctionObject f(s, this); - f->defineReadonlyConfigurableProperty(s.engine->id_length(), Primitive::fromInt32(1)); + f->defineReadonlyConfigurableProperty(s.engine->id_length(), Value::fromInt32(1)); } ReturnedValue EvalFunction::evalCall(const Value *, const Value *argv, int argc, bool directCall) const @@ -412,8 +412,8 @@ static inline int toInt(const QChar &qc, int R) ReturnedValue GlobalFunctions::method_parseInt(const FunctionObject *b, const Value *, const Value *argv, int argc) { Scope scope(b); - ScopedValue inputString(scope, argc ? argv[0] : Primitive::undefinedValue()); - ScopedValue radix(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue inputString(scope, argc ? argv[0] : Value::undefinedValue()); + ScopedValue radix(scope, argc > 1 ? argv[1] : Value::undefinedValue()); int R = radix->isUndefined() ? 0 : radix->toInt32(); // [15.1.2.2] step by step: @@ -494,7 +494,7 @@ ReturnedValue GlobalFunctions::method_parseFloat(const FunctionObject *b, const { Scope scope(b); // [15.1.2.3] step by step: - ScopedString inputString(scope, argc ? argv[0] : Primitive::undefinedValue(), ScopedString::Convert); + ScopedString inputString(scope, argc ? argv[0] : Value::undefinedValue(), ScopedString::Convert); CHECK_EXCEPTION(); QString trimmed = inputString->toQString().trimmed(); // 2 diff --git a/src/qml/jsruntime/qv4include.cpp b/src/qml/jsruntime/qv4include.cpp index e3e16fa070..e456879d9c 100644 --- a/src/qml/jsruntime/qv4include.cpp +++ b/src/qml/jsruntime/qv4include.cpp @@ -101,11 +101,11 @@ QV4::ReturnedValue QV4Include::resultValue(QV4::ExecutionEngine *v4, Status stat QV4::ScopedObject o(scope, v4->newObject()); QV4::ScopedString s(scope); QV4::ScopedValue v(scope); - o->put((s = v4->newString(QStringLiteral("OK"))), (v = QV4::Primitive::fromInt32(Ok))); - o->put((s = v4->newString(QStringLiteral("LOADING"))), (v = QV4::Primitive::fromInt32(Loading))); - o->put((s = v4->newString(QStringLiteral("NETWORK_ERROR"))), (v = QV4::Primitive::fromInt32(NetworkError))); - o->put((s = v4->newString(QStringLiteral("EXCEPTION"))), (v = QV4::Primitive::fromInt32(Exception))); - o->put((s = v4->newString(QStringLiteral("status"))), (v = QV4::Primitive::fromInt32(status))); + o->put((s = v4->newString(QStringLiteral("OK"))), (v = QV4::Value::fromInt32(Ok))); + o->put((s = v4->newString(QStringLiteral("LOADING"))), (v = QV4::Value::fromInt32(Loading))); + o->put((s = v4->newString(QStringLiteral("NETWORK_ERROR"))), (v = QV4::Value::fromInt32(NetworkError))); + o->put((s = v4->newString(QStringLiteral("EXCEPTION"))), (v = QV4::Value::fromInt32(Exception))); + o->put((s = v4->newString(QStringLiteral("status"))), (v = QV4::Value::fromInt32(status))); if (!statusText.isEmpty()) o->put((s = v4->newString(QStringLiteral("statusText"))), (v = v4->newString(statusText))); @@ -173,20 +173,20 @@ void QV4Include::finished() script.run(); if (scope.engine->hasException) { QV4::ScopedValue ex(scope, scope.engine->catchException()); - resultObj->put(status, QV4::ScopedValue(scope, QV4::Primitive::fromInt32(Exception))); + resultObj->put(status, QV4::ScopedValue(scope, QV4::Value::fromInt32(Exception))); QV4::ScopedString exception(scope, v4->newString(QStringLiteral("exception"))); resultObj->put(exception, ex); } else { - resultObj->put(status, QV4::ScopedValue(scope, QV4::Primitive::fromInt32(Ok))); + resultObj->put(status, QV4::ScopedValue(scope, QV4::Value::fromInt32(Ok))); } } else { - resultObj->put(status, QV4::ScopedValue(scope, QV4::Primitive::fromInt32(NetworkError))); + resultObj->put(status, QV4::ScopedValue(scope, QV4::Value::fromInt32(NetworkError))); } #else QV4::Scope scope(v4); QV4::ScopedObject resultObj(scope, m_resultObject.value()); QV4::ScopedString status(scope, v4->newString(QStringLiteral("status"))); - resultObj->put(status, QV4::ScopedValue(scope, QV4::Primitive::fromInt32(NetworkError))); + resultObj->put(status, QV4::ScopedValue(scope, QV4::Value::fromInt32(NetworkError))); #endif // qml_network QV4::ScopedValue cb(scope, m_callbackFunction.value()); @@ -210,7 +210,7 @@ QV4::ReturnedValue QV4Include::method_include(const QV4::FunctionObject *b, cons if ((!context || !context->isJSContext) && scope.engine->qmlEngine()) RETURN_RESULT(scope.engine->throwError(QString::fromUtf8("Qt.include(): Can only be called from JavaScript files"))); - QV4::ScopedValue callbackFunction(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue callbackFunction(scope, QV4::Value::undefinedValue()); if (argc >= 2 && argv[1].as<QV4::FunctionObject>()) callbackFunction = argv[1]; diff --git a/src/qml/jsruntime/qv4internalclass.cpp b/src/qml/jsruntime/qv4internalclass.cpp index b22d3073b9..b2b1c29e10 100644 --- a/src/qml/jsruntime/qv4internalclass.cpp +++ b/src/qml/jsruntime/qv4internalclass.cpp @@ -294,9 +294,9 @@ static void removeFromPropertyData(QV4::Object *object, int idx, bool accessor = int size = o->internalClass->size; for (int i = idx; i < size; ++i) o->setProperty(v4, i, *o->propertyData(i + (accessor ? 2 : 1))); - o->setProperty(v4, size, Primitive::undefinedValue()); + o->setProperty(v4, size, Value::undefinedValue()); if (accessor) - o->setProperty(v4, size + 1, Primitive::undefinedValue()); + o->setProperty(v4, size + 1, Value::undefinedValue()); } void InternalClass::changeMember(QV4::Object *object, PropertyKey id, PropertyAttributes data, uint *index) diff --git a/src/qml/jsruntime/qv4iterator.cpp b/src/qml/jsruntime/qv4iterator.cpp index df8000a8f7..a543565b37 100644 --- a/src/qml/jsruntime/qv4iterator.cpp +++ b/src/qml/jsruntime/qv4iterator.cpp @@ -58,7 +58,7 @@ ReturnedValue IteratorPrototype::createIterResultObject(ExecutionEngine *engine, Scope scope(engine); ScopedObject obj(scope, engine->newObject()); obj->set(ScopedString(scope, engine->newString(QStringLiteral("value"))), value, Object::DoNotThrow); - obj->set(ScopedString(scope, engine->newString(QStringLiteral("done"))), Primitive::fromBoolean(done), Object::DoNotThrow); + obj->set(ScopedString(scope, engine->newString(QStringLiteral("done"))), Value::fromBoolean(done), Object::DoNotThrow); return obj->asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index 2e2314cafe..0c5436a0d6 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -340,7 +340,7 @@ bool JsonParser::parseValue(Value *val) if (*json++ == 'u' && *json++ == 'l' && *json++ == 'l') { - *val = Primitive::nullValue(); + *val = Value::nullValue(); DEBUG << "value: null"; END; return true; @@ -355,7 +355,7 @@ bool JsonParser::parseValue(Value *val) if (*json++ == 'r' && *json++ == 'u' && *json++ == 'e') { - *val = Primitive::fromBoolean(true); + *val = Value::fromBoolean(true); DEBUG << "value: true"; END; return true; @@ -371,7 +371,7 @@ bool JsonParser::parseValue(Value *val) *json++ == 'l' && *json++ == 's' && *json++ == 'e') { - *val = Primitive::fromBoolean(false); + *val = Value::fromBoolean(false); DEBUG << "value: false"; END; return true; @@ -479,7 +479,7 @@ bool JsonParser::parseNumber(Value *val) bool ok; int n = number.toInt(&ok); if (ok && n < (1<<25) && n > -(1<<25)) { - *val = Primitive::fromInt32(n); + *val = Value::fromInt32(n); END; return true; } @@ -494,7 +494,7 @@ bool JsonParser::parseNumber(Value *val) return false; } - * val = Primitive::fromDouble(d); + * val = Value::fromDouble(d); END; return true; @@ -912,7 +912,7 @@ ReturnedValue JsonObject::method_stringify(const FunctionObject *b, const Value Scope scope(b); Stringify stringify(scope.engine); - ScopedObject o(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedObject o(scope, argc > 1 ? argv[1] : Value::undefinedValue()); if (o) { stringify.replacerFunction = o->as<FunctionObject>(); if (o->isArrayObject()) { @@ -937,7 +937,7 @@ ReturnedValue JsonObject::method_stringify(const FunctionObject *b, const Value } } - ScopedValue s(scope, argc > 2 ? argv[2] : Primitive::undefinedValue()); + ScopedValue s(scope, argc > 2 ? argv[2] : Value::undefinedValue()); if (NumberObject *n = s->as<NumberObject>()) s = Encode(n->value()); else if (StringObject *so = s->as<StringObject>()) @@ -950,7 +950,7 @@ ReturnedValue JsonObject::method_stringify(const FunctionObject *b, const Value } - ScopedValue arg0(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue arg0(scope, argc ? argv[0] : Value::undefinedValue()); QString result = stringify.Str(QString(), arg0); if (result.isEmpty() || scope.engine->hasException) RETURN_UNDEFINED(); diff --git a/src/qml/jsruntime/qv4mapiterator.cpp b/src/qml/jsruntime/qv4mapiterator.cpp index 7be7416e4a..cd5fbb8e63 100644 --- a/src/qml/jsruntime/qv4mapiterator.cpp +++ b/src/qml/jsruntime/qv4mapiterator.cpp @@ -68,7 +68,7 @@ ReturnedValue MapIteratorPrototype::method_next(const FunctionObject *b, const V IteratorKind itemKind = thisObject->d()->iterationKind; if (!s) { - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } @@ -100,7 +100,7 @@ ReturnedValue MapIteratorPrototype::method_next(const FunctionObject *b, const V } thisObject->d()->iteratedMap.set(scope.engine, nullptr); - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } diff --git a/src/qml/jsruntime/qv4mapobject.cpp b/src/qml/jsruntime/qv4mapobject.cpp index c598814fb6..7d53b36fcd 100644 --- a/src/qml/jsruntime/qv4mapobject.cpp +++ b/src/qml/jsruntime/qv4mapobject.cpp @@ -137,7 +137,7 @@ void WeakMapPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); defineDefaultProperty(engine->id_constructor(), (o = ctor)); @@ -155,7 +155,7 @@ void MapPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); ctor->addSymbolSpecies(); defineDefaultProperty(engine->id_constructor(), (o = ctor)); @@ -249,7 +249,7 @@ ReturnedValue WeakMapPrototype::method_set(const FunctionObject *b, const Value (!argc || !argv[0].isObject())) return scope.engine->throwTypeError(); - that->d()->esTable->set(argv[0], argc > 1 ? argv[1] : Primitive::undefinedValue()); + that->d()->esTable->set(argv[0], argc > 1 ? argv[1] : Value::undefinedValue()); return that.asReturnedValue(); } @@ -272,7 +272,7 @@ ReturnedValue MapPrototype::method_delete(const FunctionObject *b, const Value * if (!that || that->d()->isWeakMap) return scope.engine->throwTypeError(); - return Encode(that->d()->esTable->remove(argc ? argv[0] : Primitive::undefinedValue())); + return Encode(that->d()->esTable->remove(argc ? argv[0] : Value::undefinedValue())); } ReturnedValue MapPrototype::method_entries(const FunctionObject *b, const Value *thisObject, const Value *, int) @@ -298,7 +298,7 @@ ReturnedValue MapPrototype::method_forEach(const FunctionObject *b, const Value if (!callbackfn) return scope.engine->throwTypeError(); - ScopedValue thisArg(scope, Primitive::undefinedValue()); + ScopedValue thisArg(scope, Value::undefinedValue()); if (argc > 1) thisArg = ScopedValue(scope, argv[1]); @@ -320,7 +320,7 @@ ReturnedValue MapPrototype::method_get(const FunctionObject *b, const Value *thi if (!that || that->d()->isWeakMap) return scope.engine->throwTypeError(); - return that->d()->esTable->get(argc ? argv[0] : Primitive::undefinedValue()); + return that->d()->esTable->get(argc ? argv[0] : Value::undefinedValue()); } ReturnedValue MapPrototype::method_has(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc) @@ -330,7 +330,7 @@ ReturnedValue MapPrototype::method_has(const FunctionObject *b, const Value *thi if (!that || that->d()->isWeakMap) return scope.engine->throwTypeError(); - return Encode(that->d()->esTable->has(argc ? argv[0] : Primitive::undefinedValue())); + return Encode(that->d()->esTable->has(argc ? argv[0] : Value::undefinedValue())); } ReturnedValue MapPrototype::method_keys(const FunctionObject *b, const Value *thisObject, const Value *, int) @@ -352,7 +352,7 @@ ReturnedValue MapPrototype::method_set(const FunctionObject *b, const Value *thi if (!that || that->d()->isWeakMap) return scope.engine->throwTypeError(); - that->d()->esTable->set(argc ? argv[0] : Primitive::undefinedValue(), argc > 1 ? argv[1] : Primitive::undefinedValue()); + that->d()->esTable->set(argc ? argv[0] : Value::undefinedValue(), argc > 1 ? argv[1] : Value::undefinedValue()); return that.asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4math_p.h b/src/qml/jsruntime/qv4math_p.h index 67c963622f..90246c4229 100644 --- a/src/qml/jsruntime/qv4math_p.h +++ b/src/qml/jsruntime/qv4math_p.h @@ -70,24 +70,24 @@ static inline QMLJS_READONLY ReturnedValue add_int32(int a, int b) { int result; if (Q_UNLIKELY(add_overflow(a, b, &result))) - return Primitive::fromDouble(static_cast<double>(a) + b).asReturnedValue(); - return Primitive::fromInt32(result).asReturnedValue(); + return Value::fromDouble(static_cast<double>(a) + b).asReturnedValue(); + return Value::fromInt32(result).asReturnedValue(); } static inline QMLJS_READONLY ReturnedValue sub_int32(int a, int b) { int result; if (Q_UNLIKELY(sub_overflow(a, b, &result))) - return Primitive::fromDouble(static_cast<double>(a) - b).asReturnedValue(); - return Primitive::fromInt32(result).asReturnedValue(); + return Value::fromDouble(static_cast<double>(a) - b).asReturnedValue(); + return Value::fromInt32(result).asReturnedValue(); } static inline QMLJS_READONLY ReturnedValue mul_int32(int a, int b) { int result; if (Q_UNLIKELY(mul_overflow(a, b, &result))) - return Primitive::fromDouble(static_cast<double>(a) * b).asReturnedValue(); - return Primitive::fromInt32(result).asReturnedValue(); + return Value::fromDouble(static_cast<double>(a) * b).asReturnedValue(); + return Value::fromInt32(result).asReturnedValue(); } } diff --git a/src/qml/jsruntime/qv4mathobject.cpp b/src/qml/jsruntime/qv4mathobject.cpp index 2943df2984..07440047d4 100644 --- a/src/qml/jsruntime/qv4mathobject.cpp +++ b/src/qml/jsruntime/qv4mathobject.cpp @@ -60,14 +60,14 @@ void Heap::MathObject::init() Scope scope(internalClass->engine); ScopedObject m(scope, this); - m->defineReadonlyProperty(QStringLiteral("E"), Primitive::fromDouble(M_E)); - m->defineReadonlyProperty(QStringLiteral("LN2"), Primitive::fromDouble(M_LN2)); - m->defineReadonlyProperty(QStringLiteral("LN10"), Primitive::fromDouble(M_LN10)); - m->defineReadonlyProperty(QStringLiteral("LOG2E"), Primitive::fromDouble(M_LOG2E)); - m->defineReadonlyProperty(QStringLiteral("LOG10E"), Primitive::fromDouble(M_LOG10E)); - m->defineReadonlyProperty(QStringLiteral("PI"), Primitive::fromDouble(M_PI)); - m->defineReadonlyProperty(QStringLiteral("SQRT1_2"), Primitive::fromDouble(M_SQRT1_2)); - m->defineReadonlyProperty(QStringLiteral("SQRT2"), Primitive::fromDouble(M_SQRT2)); + m->defineReadonlyProperty(QStringLiteral("E"), Value::fromDouble(M_E)); + m->defineReadonlyProperty(QStringLiteral("LN2"), Value::fromDouble(M_LN2)); + m->defineReadonlyProperty(QStringLiteral("LN10"), Value::fromDouble(M_LN10)); + m->defineReadonlyProperty(QStringLiteral("LOG2E"), Value::fromDouble(M_LOG2E)); + m->defineReadonlyProperty(QStringLiteral("LOG10E"), Value::fromDouble(M_LOG10E)); + m->defineReadonlyProperty(QStringLiteral("PI"), Value::fromDouble(M_PI)); + m->defineReadonlyProperty(QStringLiteral("SQRT1_2"), Value::fromDouble(M_SQRT1_2)); + m->defineReadonlyProperty(QStringLiteral("SQRT2"), Value::fromDouble(M_SQRT2)); m->defineDefaultProperty(QStringLiteral("abs"), QV4::MathObject::method_abs, 1); m->defineDefaultProperty(QStringLiteral("acos"), QV4::MathObject::method_acos, 1); @@ -293,7 +293,7 @@ ReturnedValue MathObject::method_expm1(const FunctionObject *, const Value *, co ReturnedValue MathObject::method_floor(const FunctionObject *, const Value *, const Value *argv, int argc) { double v = argc ? argv[0].toNumber() : qt_qnan(); - Value result = Primitive::fromDouble(std::floor(v)); + Value result = Value::fromDouble(std::floor(v)); result.isInt32(); RETURN_RESULT(result); } @@ -329,12 +329,12 @@ ReturnedValue MathObject::method_hypot(const FunctionObject *, const Value *, co if (bad) RETURN_RESULT(Encode(qt_qnan())); // Should actually check for {und,ov}erflow, but too fiddly ! - RETURN_RESULT(Primitive::fromDouble(sqrt(v))); + RETURN_RESULT(Value::fromDouble(sqrt(v))); #else for (int i = 1; i < argc; i++) v = std::hypot(v, argv[i].toNumber()); #endif - RETURN_RESULT(Primitive::fromDouble(v)); + RETURN_RESULT(Value::fromDouble(v)); } ReturnedValue MathObject::method_imul(const FunctionObject *, const Value *, const Value *argv, int argc) diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index c444ce1929..11ec53ced5 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -95,19 +95,19 @@ void NumberPrototype::init(ExecutionEngine *engine, Object *ctor) Scope scope(engine); ScopedObject o(scope); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); - ctor->defineReadonlyProperty(QStringLiteral("NaN"), Primitive::fromDouble(qt_qnan())); - ctor->defineReadonlyProperty(QStringLiteral("NEGATIVE_INFINITY"), Primitive::fromDouble(-qInf())); - ctor->defineReadonlyProperty(QStringLiteral("POSITIVE_INFINITY"), Primitive::fromDouble(qInf())); - ctor->defineReadonlyProperty(QStringLiteral("MAX_VALUE"), Primitive::fromDouble(1.7976931348623158e+308)); - ctor->defineReadonlyProperty(QStringLiteral("EPSILON"), Primitive::fromDouble(std::numeric_limits<double>::epsilon())); - ctor->defineReadonlyProperty(QStringLiteral("MAX_SAFE_INTEGER"), Primitive::fromDouble(9007199254740991)); - ctor->defineReadonlyProperty(QStringLiteral("MIN_SAFE_INTEGER"), Primitive::fromDouble(-9007199254740991)); + ctor->defineReadonlyProperty(QStringLiteral("NaN"), Value::fromDouble(qt_qnan())); + ctor->defineReadonlyProperty(QStringLiteral("NEGATIVE_INFINITY"), Value::fromDouble(-qInf())); + ctor->defineReadonlyProperty(QStringLiteral("POSITIVE_INFINITY"), Value::fromDouble(qInf())); + ctor->defineReadonlyProperty(QStringLiteral("MAX_VALUE"), Value::fromDouble(1.7976931348623158e+308)); + ctor->defineReadonlyProperty(QStringLiteral("EPSILON"), Value::fromDouble(std::numeric_limits<double>::epsilon())); + ctor->defineReadonlyProperty(QStringLiteral("MAX_SAFE_INTEGER"), Value::fromDouble(9007199254740991)); + ctor->defineReadonlyProperty(QStringLiteral("MIN_SAFE_INTEGER"), Value::fromDouble(-9007199254740991)); QT_WARNING_PUSH QT_WARNING_DISABLE_INTEL(239) - ctor->defineReadonlyProperty(QStringLiteral("MIN_VALUE"), Primitive::fromDouble(5e-324)); + ctor->defineReadonlyProperty(QStringLiteral("MIN_VALUE"), Value::fromDouble(5e-324)); QT_WARNING_POP ctor->defineDefaultProperty(QStringLiteral("isFinite"), method_isFinite, 1); @@ -229,7 +229,7 @@ ReturnedValue NumberPrototype::method_toString(const FunctionObject *b, const Va num = -num; } double frac = num - std::floor(num); - num = Primitive::toInteger(num); + num = Value::toInteger(num); do { char c = (char)std::fmod(num, radix); c = (c < 10) ? (c + '0') : (c - 10 + 'a'); @@ -252,7 +252,7 @@ ReturnedValue NumberPrototype::method_toString(const FunctionObject *b, const Va } } - return Encode(Primitive::fromDouble(num).toString(v4)); + return Encode(Value::fromDouble(num).toString(v4)); } ReturnedValue NumberPrototype::method_toLocaleString(const FunctionObject *b, const Value *thisObject, const Value *, int) diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 4c36d24c1a..7ea91c441d 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -456,7 +456,7 @@ ReturnedValue Object::internalGet(PropertyKey id, const Value *receiver, bool *h } if (o) { - const Value v = Primitive::fromHeapObject(o); + const Value v = Value::fromHeapObject(o); const Object &obj = static_cast<const Object &>(v); return obj.get(id, receiver, hasProperty); } @@ -658,7 +658,7 @@ bool Object::internalDefineOwnProperty(ExecutionEngine *engine, uint index, Stri // need to convert the array and the slot setArrayAttributes(index, cattrs); } - current->value = Primitive::undefinedValue(); + current->value = Value::undefinedValue(); } } else if (cattrs.isData() && attrs.isData()) { // clause 10 if (!cattrs.isConfigurable() && !cattrs.isWritable()) { diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h index 991c0591a5..aca4f99750 100644 --- a/src/qml/jsruntime/qv4object_p.h +++ b/src/qml/jsruntime/qv4object_p.h @@ -440,7 +440,7 @@ struct ArrayObject : Object { private: void commonInit() - { setProperty(internalClass->engine, LengthPropertyIndex, Primitive::fromInt32(0)); } + { setProperty(internalClass->engine, LengthPropertyIndex, Value::fromInt32(0)); } }; } @@ -481,7 +481,7 @@ protected: inline void Object::setArrayLengthUnchecked(uint l) { if (isArrayObject()) - setProperty(Heap::ArrayObject::LengthPropertyIndex, Primitive::fromUInt32(l)); + setProperty(Heap::ArrayObject::LengthPropertyIndex, Value::fromUInt32(l)); } inline void Object::push_back(const Value &v) diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp index a4f960a3b6..6b4c3ba71a 100644 --- a/src/qml/jsruntime/qv4objectproto.cpp +++ b/src/qml/jsruntime/qv4objectproto.cpp @@ -95,7 +95,7 @@ void ObjectPrototype::init(ExecutionEngine *v4, Object *ctor) ScopedObject o(scope, this); ctor->defineReadonlyProperty(v4->id_prototype(), o); - ctor->defineReadonlyConfigurableProperty(v4->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(v4->id_length(), Value::fromInt32(1)); ctor->defineDefaultProperty(QStringLiteral("getPrototypeOf"), method_getPrototypeOf, 1); ctor->defineDefaultProperty(QStringLiteral("getOwnPropertyDescriptor"), method_getOwnPropertyDescriptor, 2); ctor->defineDefaultProperty(QStringLiteral("getOwnPropertyDescriptors"), method_getOwnPropertyDescriptors, 1); @@ -166,7 +166,7 @@ ReturnedValue ObjectPrototype::method_getOwnPropertyDescriptor(const FunctionObj if (ArgumentsObject::isNonStrictArgumentsObject(O)) static_cast<ArgumentsObject *>(O.getPointer())->fullyCreate(); - ScopedValue v(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue v(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedPropertyKey name(scope, v->toPropertyKey(scope.engine)); if (scope.engine->hasException) return QV4::Encode::undefined(); @@ -321,11 +321,11 @@ ReturnedValue ObjectPrototype::method_defineProperty(const FunctionObject *b, co return scope.engine->throwTypeError(); ScopedObject O(scope, argv[0]); - ScopedPropertyKey name(scope, (argc > 1 ? argv[1] : Primitive::undefinedValue()).toPropertyKey(scope.engine)); + ScopedPropertyKey name(scope, (argc > 1 ? argv[1] : Value::undefinedValue()).toPropertyKey(scope.engine)); if (scope.engine->hasException) return QV4::Encode::undefined(); - ScopedValue attributes(scope, argc > 2 ? argv[2] : Primitive::undefinedValue()); + ScopedValue attributes(scope, argc > 2 ? argv[2] : Value::undefinedValue()); ScopedProperty pd(scope); PropertyAttributes attrs; toPropertyDescriptor(scope.engine, attributes, pd, &attrs); @@ -415,7 +415,7 @@ ReturnedValue ObjectPrototype::method_entries(const FunctionObject *f, const Val ReturnedValue ObjectPrototype::method_seal(const FunctionObject *b, const Value *, const Value *argv, int argc) { - const Value a = argc ? argv[0] : Primitive::undefinedValue(); + const Value a = argc ? argv[0] : Value::undefinedValue(); if (!a.isObject()) // 19.1.2.17, 1 return a.asReturnedValue(); @@ -437,7 +437,7 @@ ReturnedValue ObjectPrototype::method_seal(const FunctionObject *b, const Value ReturnedValue ObjectPrototype::method_freeze(const FunctionObject *b, const Value *, const Value *argv, int argc) { - const Value a = argc ? argv[0] : Primitive::undefinedValue(); + const Value a = argc ? argv[0] : Value::undefinedValue(); if (!a.isObject()) // 19.1.2.5, 1 return a.asReturnedValue(); @@ -677,7 +677,7 @@ ReturnedValue ObjectPrototype::method_valueOf(const FunctionObject *b, const Val ReturnedValue ObjectPrototype::method_hasOwnProperty(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc) { Scope scope(b); - ScopedPropertyKey P(scope, (argc ? argv[0] : Primitive::undefinedValue()).toPropertyKey(scope.engine)); + ScopedPropertyKey P(scope, (argc ? argv[0] : Value::undefinedValue()).toPropertyKey(scope.engine)); if (scope.engine->hasException) return QV4::Encode::undefined(); ScopedObject O(scope, thisObject->toObject(scope.engine)); @@ -709,7 +709,7 @@ ReturnedValue ObjectPrototype::method_isPrototypeOf(const FunctionObject *b, con ReturnedValue ObjectPrototype::method_propertyIsEnumerable(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc) { Scope scope(b); - ScopedPropertyKey p(scope, (argc ? argv[0] : Primitive::undefinedValue()).toPropertyKey(scope.engine)); + ScopedPropertyKey p(scope, (argc ? argv[0] : Value::undefinedValue()).toPropertyKey(scope.engine)); if (scope.engine->hasException) return QV4::Encode::undefined(); @@ -743,7 +743,7 @@ ReturnedValue ObjectPrototype::method_defineGetter(const FunctionObject *b, cons ScopedProperty pd(scope); pd->value = f; - pd->set = Primitive::emptyValue(); + pd->set = Value::emptyValue(); bool ok = o->defineOwnProperty(prop->toPropertyKey(), pd, Attr_Accessor); if (!ok) THROW_TYPE_ERROR(); @@ -772,7 +772,7 @@ ReturnedValue ObjectPrototype::method_defineSetter(const FunctionObject *b, cons } ScopedProperty pd(scope); - pd->value = Primitive::emptyValue(); + pd->value = Value::emptyValue(); pd->set = f; bool ok = o->defineOwnProperty(prop->toPropertyKey(), pd, Attr_Accessor); if (!ok) @@ -815,8 +815,8 @@ void ObjectPrototype::toPropertyDescriptor(ExecutionEngine *engine, const Value } attrs->clear(); - desc->value = Primitive::emptyValue(); - desc->set = Primitive::emptyValue(); + desc->value = Value::emptyValue(); + desc->set = Value::emptyValue(); ScopedValue tmp(scope); if (o->hasProperty(engine->id_enumerable()->toPropertyKey())) @@ -867,7 +867,7 @@ void ObjectPrototype::toPropertyDescriptor(ExecutionEngine *engine, const Value } if (attrs->isGeneric()) - desc->value = Primitive::emptyValue(); + desc->value = Value::emptyValue(); } @@ -886,7 +886,7 @@ ReturnedValue ObjectPrototype::fromPropertyDescriptor(ExecutionEngine *engine, c if (attrs.isData()) { s = engine->newString(QStringLiteral("value")); o->put(s, desc->value); - v = Primitive::fromBoolean(attrs.isWritable()); + v = Value::fromBoolean(attrs.isWritable()); s = engine->newString(QStringLiteral("writable")); o->put(s, v); } else { @@ -897,10 +897,10 @@ ReturnedValue ObjectPrototype::fromPropertyDescriptor(ExecutionEngine *engine, c s = engine->newString(QStringLiteral("set")); o->put(s, v); } - v = Primitive::fromBoolean(attrs.isEnumerable()); + v = Value::fromBoolean(attrs.isEnumerable()); s = engine->newString(QStringLiteral("enumerable")); o->put(s, v); - v = Primitive::fromBoolean(attrs.isConfigurable()); + v = Value::fromBoolean(attrs.isConfigurable()); s = engine->newString(QStringLiteral("configurable")); o->put(s, v); diff --git a/src/qml/jsruntime/qv4property_p.h b/src/qml/jsruntime/qv4property_p.h index 4e38bac470..555f323737 100644 --- a/src/qml/jsruntime/qv4property_p.h +++ b/src/qml/jsruntime/qv4property_p.h @@ -66,14 +66,14 @@ struct Property { // Section 8.10 inline void fullyPopulated(PropertyAttributes *attrs) { if (!attrs->hasType()) { - value = Primitive::undefinedValue(); + value = Value::undefinedValue(); } if (attrs->type() == PropertyAttributes::Accessor) { attrs->clearWritable(); if (value.isEmpty()) - value = Primitive::undefinedValue(); + value = Value::undefinedValue(); if (set.isEmpty()) - set = Primitive::undefinedValue(); + set = Value::undefinedValue(); } attrs->resolve(); } diff --git a/src/qml/jsruntime/qv4propertykey.cpp b/src/qml/jsruntime/qv4propertykey.cpp index 361ade17c2..064d030b83 100644 --- a/src/qml/jsruntime/qv4propertykey.cpp +++ b/src/qml/jsruntime/qv4propertykey.cpp @@ -47,7 +47,7 @@ QV4::Heap::StringOrSymbol *QV4::PropertyKey::toStringOrSymbol(QV4::ExecutionEngine *e) { if (isArrayIndex()) - return Primitive::fromUInt32(asArrayIndex()).toString(e); + return Value::fromUInt32(asArrayIndex()).toString(e); return static_cast<Heap::StringOrSymbol *>(asStringOrSymbol()); } @@ -73,7 +73,7 @@ bool QV4::PropertyKey::isCanonicalNumericIndexString() const double d = str->toNumber(); if (d == 0. && std::signbit(d)) return true; - ScopedString converted(scope, Primitive::fromDouble(d).toString(scope.engine)); + ScopedString converted(scope, Value::fromDouble(d).toString(scope.engine)); if (converted->equals(str)) return true; return false; diff --git a/src/qml/jsruntime/qv4proxy.cpp b/src/qml/jsruntime/qv4proxy.cpp index 71c238135c..cc1fe4f105 100644 --- a/src/qml/jsruntime/qv4proxy.cpp +++ b/src/qml/jsruntime/qv4proxy.cpp @@ -208,7 +208,7 @@ bool ProxyObject::virtualHasProperty(const Managed *m, PropertyKey id) JSCallData cdata(scope, 2, nullptr, handler); cdata.args[0] = target; - cdata.args[1] = id.isArrayIndex() ? Primitive::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); + cdata.args[1] = id.isArrayIndex() ? Value::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); ScopedValue trapResult(scope, static_cast<const FunctionObject *>(trap.ptr)->call(cdata)); bool result = trapResult->toBoolean(); @@ -248,7 +248,7 @@ PropertyAttributes ProxyObject::virtualGetOwnProperty(Managed *m, PropertyKey id JSCallData cdata(scope, 2, nullptr, handler); cdata.args[0] = target; - cdata.args[1] = id.isArrayIndex() ? Primitive::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); + cdata.args[1] = id.isArrayIndex() ? Value::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); ScopedValue trapResult(scope, static_cast<const FunctionObject *>(trap.ptr)->call(cdata)); if (!trapResult->isObject() && !trapResult->isUndefined()) { @@ -319,7 +319,7 @@ bool ProxyObject::virtualDefineOwnProperty(Managed *m, PropertyKey id, const Pro JSCallData cdata(scope, 3, nullptr, handler); cdata.args[0] = target; - cdata.args[1] = id.isArrayIndex() ? Primitive::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); + cdata.args[1] = id.isArrayIndex() ? Value::fromUInt32(id.asArrayIndex()).toString(scope.engine) : id.asStringOrSymbol(); cdata.args[2] = ObjectPrototype::fromPropertyDescriptor(scope.engine, p, attrs); ScopedValue trapResult(scope, static_cast<const FunctionObject *>(trap.ptr)->call(cdata)); @@ -540,7 +540,7 @@ static bool removeAllOccurrences(ArrayObject *target, ReturnedValue val) { ReturnedValue v = target->get(i); if (v == val) { found = true; - target->put(i, Primitive::undefinedValue()); + target->put(i, Value::undefinedValue()); } } return found; @@ -589,7 +589,7 @@ OwnPropertyKeyIterator *ProxyObject::virtualOwnPropertyKeys(const Object *m, Val scope.engine->throwTypeError(); return nullptr; } - Value keyAsValue = Primitive::fromReturnedValue(key->toPropertyKey().id()); + Value keyAsValue = Value::fromReturnedValue(key->toPropertyKey().id()); trapKeys->push_back(keyAsValue); } @@ -602,7 +602,7 @@ OwnPropertyKeyIterator *ProxyObject::virtualOwnPropertyKeys(const Object *m, Val k = it.next(nullptr, &attrs); if (!k->isValid()) break; - Value keyAsValue = Primitive::fromReturnedValue(k->id()); + Value keyAsValue = Value::fromReturnedValue(k->id()); if (attrs.isConfigurable()) targetConfigurableKeys->push_back(keyAsValue); else @@ -674,7 +674,7 @@ ReturnedValue ProxyFunctionObject::virtualCallAsConstructor(const FunctionObject Value *arguments = scope.alloc(3); arguments[0] = target; arguments[1] = scope.engine->newArrayObject(argv, argc); - arguments[2] = newTarget ? *newTarget : Primitive::undefinedValue(); + arguments[2] = newTarget ? *newTarget : Value::undefinedValue(); ScopedObject result(scope, trapFunction->call(handler, arguments, 3)); if (!result) @@ -706,7 +706,7 @@ ReturnedValue ProxyFunctionObject::virtualCall(const FunctionObject *f, const Va ScopedFunctionObject trapFunction(scope, trap); Value *arguments = scope.alloc(3); arguments[0] = target; - arguments[1] = thisObject ? *thisObject : Primitive::undefinedValue(); + arguments[1] = thisObject ? *thisObject : Value::undefinedValue(); arguments[2] = scope.engine->newArrayObject(argv, argc); return trapFunction->call(handler, arguments, 3); } @@ -720,7 +720,7 @@ void Heap::Proxy::init(QV4::ExecutionContext *ctx) Scope scope(ctx); Scoped<QV4::Proxy> ctor(scope, this); ctor->defineDefaultProperty(QStringLiteral("revocable"), QV4::Proxy::method_revocable, 2); - ctor->defineReadonlyConfigurableProperty(scope.engine->id_length(), Primitive::fromInt32(2)); + ctor->defineReadonlyConfigurableProperty(scope.engine->id_length(), Value::fromInt32(2)); } ReturnedValue Proxy::virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *) @@ -759,7 +759,7 @@ ReturnedValue Proxy::method_revocable(const FunctionObject *f, const Value *, co ScopedString revoke(scope, scope.engine->newString(QStringLiteral("revoke"))); ScopedFunctionObject revoker(scope, scope.engine->memoryManager->allocate<FunctionObject>(scope.engine->rootContext(), nullptr, method_revoke)); - revoker->defineReadonlyConfigurableProperty(scope.engine->id_length(), Primitive::fromInt32(0)); + revoker->defineReadonlyConfigurableProperty(scope.engine->id_length(), Value::fromInt32(0)); revoker->defineDefaultProperty(scope.engine->symbol_revokableProxy(), proxy); ScopedObject o(scope, scope.engine->newObject()); diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 5800b08ef4..52be2079cb 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -2003,7 +2003,7 @@ ReturnedValue QObjectMethod::callInternal(const Value *thisObject, const Value * CallData *callData = cData.callData(); if (method.isV4Function()) { - QV4::ScopedValue rv(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue rv(scope, QV4::Value::undefinedValue()); QQmlV4Function func(callData, rv, v4); QQmlV4Function *funcptr = &func; @@ -2074,7 +2074,7 @@ void QMetaObjectWrapper::init(ExecutionEngine *) { for (int k = 0; k < Enum.keyCount(); k++) { const char* key = Enum.key(k); const int value = Enum.value(k); - defineReadonlyProperty(QLatin1String(key), Primitive::fromInt32(value)); + defineReadonlyProperty(QLatin1String(key), Value::fromInt32(value)); } } } diff --git a/src/qml/jsruntime/qv4reflect.cpp b/src/qml/jsruntime/qv4reflect.cpp index 1b08d38eef..15dcb602eb 100644 --- a/src/qml/jsruntime/qv4reflect.cpp +++ b/src/qml/jsruntime/qv4reflect.cpp @@ -126,11 +126,11 @@ ReturnedValue Reflect::method_defineProperty(const FunctionObject *f, const Valu return scope.engine->throwTypeError(); ScopedObject O(scope, argv[0]); - ScopedPropertyKey name(scope, (argc > 1 ? argv[1] : Primitive::undefinedValue()).toPropertyKey(scope.engine)); + ScopedPropertyKey name(scope, (argc > 1 ? argv[1] : Value::undefinedValue()).toPropertyKey(scope.engine)); if (scope.engine->hasException) return QV4::Encode::undefined(); - ScopedValue attributes(scope, argc > 2 ? argv[2] : Primitive::undefinedValue()); + ScopedValue attributes(scope, argc > 2 ? argv[2] : Value::undefinedValue()); ScopedProperty pd(scope); PropertyAttributes attrs; ObjectPrototype::toPropertyDescriptor(scope.engine, attributes, pd, &attrs); @@ -148,7 +148,7 @@ ReturnedValue Reflect::method_deleteProperty(const FunctionObject *f, const Valu if (!argc || !argv[0].isObject()) return e->throwTypeError(); - bool result = Runtime::method_deleteProperty(e, argv[0], argc > 1 ? argv[1] : Primitive::undefinedValue()); + bool result = Runtime::method_deleteProperty(e, argv[0], argc > 1 ? argv[1] : Value::undefinedValue()); return Encode(result); } @@ -159,7 +159,7 @@ ReturnedValue Reflect::method_get(const FunctionObject *f, const Value *, const return scope.engine->throwTypeError(); ScopedObject o(scope, static_cast<const Object *>(argv)); - Value undef = Primitive::undefinedValue(); + Value undef = Value::undefinedValue(); const Value *index = argc > 1 ? &argv[1] : &undef; ScopedPropertyKey name(scope, index->toPropertyKey(scope.engine)); if (scope.hasException()) @@ -194,7 +194,7 @@ ReturnedValue Reflect::method_has(const FunctionObject *f, const Value *, const return scope.engine->throwTypeError(); ScopedObject o(scope, static_cast<const Object *>(argv)); - Value undef = Primitive::undefinedValue(); + Value undef = Value::undefinedValue(); const Value *index = argc > 1 ? &argv[1] : &undef; ScopedPropertyKey name(scope, index->toPropertyKey(scope.engine)); @@ -261,7 +261,7 @@ ReturnedValue Reflect::method_set(const FunctionObject *f, const Value *, const return scope.engine->throwTypeError(); ScopedObject o(scope, static_cast<const Object *>(argv)); - Value undef = Primitive::undefinedValue(); + Value undef = Value::undefinedValue(); const Value *index = argc > 1 ? &argv[1] : &undef; const Value &val = argc > 2 ? argv[2] : undef; ScopedValue receiver(scope, argc >3 ? argv[3] : argv[0]); diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp index dd16110c28..634fbcbd97 100644 --- a/src/qml/jsruntime/qv4regexpobject.cpp +++ b/src/qml/jsruntime/qv4regexpobject.cpp @@ -136,7 +136,7 @@ void Heap::RegExpObject::init(const QRegExp &re) void RegExpObject::initProperties() { - setProperty(Index_LastIndex, Primitive::fromInt32(0)); + setProperty(Index_LastIndex, Value::fromInt32(0)); Q_ASSERT(value()); } @@ -207,7 +207,7 @@ ReturnedValue RegExpObject::builtinExec(ExecutionEngine *engine, const String *s array->arrayPut(i, v); } array->setArrayLengthUnchecked(len); - array->setProperty(Index_ArrayIndex, Primitive::fromInt32(result)); + array->setProperty(Index_ArrayIndex, Value::fromInt32(result)); array->setProperty(Index_ArrayInput, *str); RegExpCtor::Data *dd = regExpCtor->d(); @@ -232,7 +232,7 @@ void Heap::RegExpCtor::init(QV4::ExecutionContext *scope) void Heap::RegExpCtor::clearLastMatch() { - lastMatch.set(internalClass->engine, Primitive::nullValue()); + lastMatch.set(internalClass->engine, Value::nullValue()); lastInput.set(internalClass->engine, internalClass->engine->id_empty()->d()); lastMatchStart = 0; lastMatchEnd = 0; @@ -244,7 +244,7 @@ static bool isRegExp(ExecutionEngine *e, const Value *arg) if (!o) return false; - Value isRegExp = Primitive::fromReturnedValue(o->get(e->symbol_match())); + Value isRegExp = Value::fromReturnedValue(o->get(e->symbol_match())); if (!isRegExp.isUndefined()) return isRegExp.toBoolean(); const RegExpObject *re = o->as<RegExpObject>(); @@ -294,8 +294,8 @@ ReturnedValue RegExpCtor::virtualCallAsConstructor(const FunctionObject *fo, con } } - ScopedValue p(scope, argc ? argv[0] : Primitive::undefinedValue()); - ScopedValue f(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue p(scope, argc ? argv[0] : Value::undefinedValue()); + ScopedValue f(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Scoped<RegExpObject> re(scope, p); QString pattern; uint flags = CompiledData::RegExp::RegExp_NoFlags; @@ -347,7 +347,7 @@ void RegExpPrototype::init(ExecutionEngine *engine, Object *constructor) ScopedObject ctor(scope, constructor); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(2)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(2)); ctor->addSymbolSpecies(); // Properties deprecated in the spec but required by "the web" :( @@ -398,7 +398,7 @@ ReturnedValue RegExpPrototype::execFirstMatch(const FunctionObject *b, const Val Scoped<RegExpObject> r(scope, thisObject->as<RegExpObject>()); Q_ASSERT(r && r->global()); - ScopedString str(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedString str(scope, argc ? argv[0] : Value::undefinedValue()); Q_ASSERT(str); QString s = str->toQString(); @@ -461,7 +461,7 @@ ReturnedValue RegExpPrototype::method_exec(const FunctionObject *b, const Value if (!r) return scope.engine->throwTypeError(); - ScopedValue arg(scope, argc ? argv[0]: Primitive::undefinedValue()); + ScopedValue arg(scope, argc ? argv[0]: Value::undefinedValue()); ScopedString str(scope, arg->toString(scope.engine)); if (scope.hasException()) RETURN_UNDEFINED(); @@ -552,7 +552,7 @@ static void advanceLastIndexOnEmptyMatch(ExecutionEngine *e, bool unicode, Objec if (matchString->d()->length() == 0) { ScopedValue v(scope, rx->get(scope.engine->id_lastIndex())); int lastIndex = advanceStringIndex(v->toLength(), str, unicode); - if (!rx->put(scope.engine->id_lastIndex(), Primitive::fromInt32(lastIndex))) + if (!rx->put(scope.engine->id_lastIndex(), Value::fromInt32(lastIndex))) scope.engine->throwTypeError(); } } @@ -563,7 +563,7 @@ ReturnedValue RegExpPrototype::method_match(const FunctionObject *f, const Value ScopedObject rx(scope, thisObject); if (!rx) return scope.engine->throwTypeError(); - ScopedString s(scope, (argc ? argv[0] : Primitive::undefinedValue()).toString(scope.engine)); + ScopedString s(scope, (argc ? argv[0] : Value::undefinedValue()).toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); bool global = ScopedValue(scope, rx->get(scope.engine->id_global()))->toBoolean(); @@ -573,7 +573,7 @@ ReturnedValue RegExpPrototype::method_match(const FunctionObject *f, const Value bool unicode = ScopedValue(scope, rx->get(scope.engine->id_unicode()))->toBoolean(); - rx->put(scope.engine->id_lastIndex(), Primitive::fromInt32(0)); + rx->put(scope.engine->id_lastIndex(), Value::fromInt32(0)); ScopedArrayObject a(scope, scope.engine->newArrayObject()); uint n = 0; @@ -622,24 +622,24 @@ ReturnedValue RegExpPrototype::method_replace(const FunctionObject *f, const Val if (!rx) return scope.engine->throwTypeError(); - ScopedString s(scope, (argc ? argv[0] : Primitive::undefinedValue()).toString(scope.engine)); + ScopedString s(scope, (argc ? argv[0] : Value::undefinedValue()).toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); int lengthS = s->toQString().length(); ScopedString replaceValue(scope); - ScopedFunctionObject replaceFunction(scope, (argc > 1 ? argv[1] : Primitive::undefinedValue())); + ScopedFunctionObject replaceFunction(scope, (argc > 1 ? argv[1] : Value::undefinedValue())); bool functionalReplace = !!replaceFunction; if (!functionalReplace) - replaceValue = (argc > 1 ? argv[1] : Primitive::undefinedValue()).toString(scope.engine); + replaceValue = (argc > 1 ? argv[1] : Value::undefinedValue()).toString(scope.engine); ScopedValue v(scope); bool global = (v = rx->get(scope.engine->id_global()))->toBoolean(); bool unicode = false; if (global) { unicode = (v = rx->get(scope.engine->id_unicode()))->toBoolean(); - if (!rx->put(scope.engine->id_lastIndex(), Primitive::fromInt32(0))) + if (!rx->put(scope.engine->id_lastIndex(), Value::fromInt32(0))) return scope.engine->throwTypeError(); } @@ -724,13 +724,13 @@ ReturnedValue RegExpPrototype::method_search(const FunctionObject *f, const Valu if (!rx) return scope.engine->throwTypeError(); - ScopedString s(scope, (argc ? argv[0] : Primitive::undefinedValue()).toString(scope.engine)); + ScopedString s(scope, (argc ? argv[0] : Value::undefinedValue()).toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); ScopedValue previousLastIndex(scope, rx->get(scope.engine->id_lastIndex())); if (previousLastIndex->toNumber() != 0) { - if (!rx->put(scope.engine->id_lastIndex(), Primitive::fromInt32(0))) + if (!rx->put(scope.engine->id_lastIndex(), Value::fromInt32(0))) return scope.engine->throwTypeError(); } @@ -772,7 +772,7 @@ ReturnedValue RegExpPrototype::method_split(const FunctionObject *f, const Value if (!rx) return scope.engine->throwTypeError(); - ScopedString s(scope, (argc ? argv[0] : Primitive::undefinedValue()).toString(scope.engine)); + ScopedString s(scope, (argc ? argv[0] : Value::undefinedValue()).toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); @@ -818,7 +818,7 @@ ReturnedValue RegExpPrototype::method_split(const FunctionObject *f, const Value ScopedObject zz(scope); ScopedString t(scope); while (q < size) { - Value qq = Primitive::fromInt32(q); + Value qq = Value::fromInt32(q); if (!splitter->put(scope.engine->id_lastIndex(), qq)) return scope.engine->throwTypeError(); z = exec(scope.engine, splitter, s); diff --git a/src/qml/jsruntime/qv4regexpobject_p.h b/src/qml/jsruntime/qv4regexpobject_p.h index ffac04e1f7..5dfb9d9730 100644 --- a/src/qml/jsruntime/qv4regexpobject_p.h +++ b/src/qml/jsruntime/qv4regexpobject_p.h @@ -134,7 +134,7 @@ struct RegExpObject: Object { engine()->throwTypeError(); return; } - return setProperty(Index_LastIndex, Primitive::fromInt32(index)); + return setProperty(Index_LastIndex, Value::fromInt32(index)); } QRegExp toQRegExp() const; diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 6ada8b64f1..8f529cea76 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -287,7 +287,7 @@ void RuntimeHelpers::numberToString(QString *result, double num, int radix) } double frac = num - ::floor(num); - num = Primitive::toInteger(num); + num = Value::toInteger(num); do { char c = (char)::fmod(num, radix); @@ -538,7 +538,7 @@ Heap::String *RuntimeHelpers::convertToString(ExecutionEngine *engine, Value val engine->throwTypeError(QLatin1String("Cannot convert a symbol to a string.")); return nullptr; } - value = Primitive::fromReturnedValue(RuntimeHelpers::toPrimitive(value, hint)); + value = Value::fromReturnedValue(RuntimeHelpers::toPrimitive(value, hint)); Q_ASSERT(value.isPrimitive()); if (value.isString()) return static_cast<const String &>(value).d(); @@ -1044,7 +1044,7 @@ void Runtime::method_storeSuperProperty(ExecutionEngine *engine, const Value &pr ReturnedValue Runtime::method_loadSuperConstructor(ExecutionEngine *engine, const Value &t) { - if (engine->currentStackFrame->thisObject() != Primitive::emptyValue().asReturnedValue()) { + if (engine->currentStackFrame->thisObject() != Value::emptyValue().asReturnedValue()) { return engine->throwReferenceError(QStringLiteral("super() already called."), QString(), 0, 0); // ### fix line number } const FunctionObject *f = t.as<FunctionObject>(); @@ -1077,9 +1077,9 @@ uint RuntimeHelpers::equalHelper(const Value &x, const Value &y) double dx = RuntimeHelpers::toNumber(x); return dx == y.asDouble(); } else if (x.isBoolean()) { - return Runtime::method_compareEqual(Primitive::fromDouble((double) x.booleanValue()), y); + return Runtime::method_compareEqual(Value::fromDouble((double) x.booleanValue()), y); } else if (y.isBoolean()) { - return Runtime::method_compareEqual(x, Primitive::fromDouble((double) y.booleanValue())); + return Runtime::method_compareEqual(x, Value::fromDouble((double) y.booleanValue())); } else { #ifdef V4_BOOTSTRAP Q_UNIMPLEMENTED(); @@ -1291,7 +1291,7 @@ ReturnedValue Runtime::method_callGlobalLookup(ExecutionEngine *engine, uint ind if (!function.isFunctionObject()) return engine->throwTypeError(); - Value thisObject = Primitive::undefinedValue(); + Value thisObject = Value::undefinedValue(); return static_cast<FunctionObject &>(function).call(&thisObject, argv, argc); } @@ -1415,7 +1415,7 @@ ReturnedValue Runtime::method_callValue(ExecutionEngine *engine, const Value &fu { if (!func.isFunctionObject()) return engine->throwTypeError(QStringLiteral("%1 is not a function").arg(func.toQStringNoThrow())); - Value undef = Primitive::undefinedValue(); + Value undef = Value::undefinedValue(); return static_cast<const FunctionObject &>(func).call(&undef, argv, argc); } @@ -1705,9 +1705,9 @@ ReturnedValue Runtime::method_objectLiteral(ExecutionEngine *engine, int classId Q_ASSERT(arg == ObjectLiteralArgument::Value || value->isFunctionObject()); if (arg == ObjectLiteralArgument::Value || arg == ObjectLiteralArgument::Getter) { pd->value = value; - pd->set = Primitive::emptyValue(); + pd->set = Value::emptyValue(); } else { - pd->value = Primitive::emptyValue(); + pd->value = Value::emptyValue(); pd->set = value; } bool ok = o->defineOwnProperty(name, pd, (arg == ObjectLiteralArgument::Value ? Attr_Data : Attr_Accessor)); @@ -1752,7 +1752,7 @@ ReturnedValue Runtime::method_createClass(ExecutionEngine *engine, int classInde QV4::Function *f = cls->constructorFunction != UINT_MAX ? unit->runtimeFunctions[cls->constructorFunction] : nullptr; constructor = FunctionObject::createConstructorFunction(current, f, proto, !superClass.isEmpty())->asReturnedValue(); constructor->setPrototypeUnchecked(constructorParent); - Value argCount = Primitive::fromInt32(f ? f->nFormals : 0); + Value argCount = Value::fromInt32(f ? f->nFormals : 0); constructor->defineReadonlyConfigurableProperty(scope.engine->id_length(), argCount); constructor->defineReadonlyConfigurableProperty(engine->id_prototype(), proto); proto->defineDefaultProperty(engine->id_constructor(), constructor); @@ -1801,17 +1801,17 @@ ReturnedValue Runtime::method_createClass(ExecutionEngine *engine, int classInde switch (methods[i].type) { case CompiledData::Method::Getter: property->setGetter(function); - property->set = Primitive::emptyValue(); + property->set = Value::emptyValue(); attributes = Attr_Accessor|Attr_NotEnumerable; break; case CompiledData::Method::Setter: - property->value = Primitive::emptyValue(); + property->value = Value::emptyValue(); property->setSetter(function); attributes = Attr_Accessor|Attr_NotEnumerable; break; default: // Regular property->value = function; - property->set = Primitive::emptyValue(); + property->set = Value::emptyValue(); attributes = Attr_Data|Attr_NotEnumerable; break; } @@ -1928,7 +1928,7 @@ ReturnedValue Runtime::method_add(ExecutionEngine *engine, const Value &left, co if (Q_LIKELY(left.integerCompatible() && right.integerCompatible())) return add_int32(left.integerValue(), right.integerValue()); if (left.isNumber() && right.isNumber()) - return Primitive::fromDouble(left.asDouble() + right.asDouble()).asReturnedValue(); + return Value::fromDouble(left.asDouble() + right.asDouble()).asReturnedValue(); return RuntimeHelpers::addHelper(engine, left, right); } @@ -1943,7 +1943,7 @@ ReturnedValue Runtime::method_sub(const Value &left, const Value &right) double lval = left.isNumber() ? left.asDouble() : left.toNumberImpl(); double rval = right.isNumber() ? right.asDouble() : right.toNumberImpl(); - return Primitive::fromDouble(lval - rval).asReturnedValue(); + return Value::fromDouble(lval - rval).asReturnedValue(); } ReturnedValue Runtime::method_mul(const Value &left, const Value &right) @@ -1956,7 +1956,7 @@ ReturnedValue Runtime::method_mul(const Value &left, const Value &right) double lval = left.isNumber() ? left.asDouble() : left.toNumberImpl(); double rval = right.isNumber() ? right.asDouble() : right.toNumberImpl(); - return Primitive::fromDouble(lval * rval).asReturnedValue(); + return Value::fromDouble(lval * rval).asReturnedValue(); } ReturnedValue Runtime::method_div(const Value &left, const Value &right) @@ -1976,7 +1976,7 @@ ReturnedValue Runtime::method_div(const Value &left, const Value &right) double lval = left.toNumber(); double rval = right.toNumber(); - return Primitive::fromDouble(lval / rval).asReturnedValue(); + return Value::fromDouble(lval / rval).asReturnedValue(); } ReturnedValue Runtime::method_mod(const Value &left, const Value &right) @@ -1997,7 +1997,7 @@ ReturnedValue Runtime::method_mod(const Value &left, const Value &right) #ifdef fmod # undef fmod #endif - return Primitive::fromDouble(std::fmod(lval, rval)).asReturnedValue(); + return Value::fromDouble(std::fmod(lval, rval)).asReturnedValue(); } ReturnedValue Runtime::method_shl(const Value &left, const Value &right) @@ -2151,7 +2151,7 @@ Bool Runtime::method_compareEqual(const Value &left, const Value &right) return false; case QV4::Value::QT_Bool: case QV4::Value::QT_Int: - rhs = Primitive::fromDouble(rhs.int_32()); + rhs = Value::fromDouble(rhs.int_32()); // fall through default: // double #ifndef V4_BOOTSTRAP diff --git a/src/qml/jsruntime/qv4scopedvalue_p.h b/src/qml/jsruntime/qv4scopedvalue_p.h index 8ac2213492..c28a3ffa2d 100644 --- a/src/qml/jsruntime/qv4scopedvalue_p.h +++ b/src/qml/jsruntime/qv4scopedvalue_p.h @@ -131,11 +131,11 @@ struct Scope { switch (mode) { case Undefined: for (int i = 0; i < nValues; ++i) - ptr[i] = Primitive::undefinedValue(); + ptr[i] = Value::undefinedValue(); break; case Empty: for (int i = 0; i < nValues; ++i) - ptr[i] = Primitive::emptyValue(); + ptr[i] = Value::emptyValue(); break; case Uninitialized: break; @@ -148,10 +148,10 @@ struct Scope { Value *ptr = engine->jsAlloca(1); switch (mode) { case Undefined: - *ptr = Primitive::undefinedValue(); + *ptr = Value::undefinedValue(); break; case Empty: - *ptr = Primitive::emptyValue(); + *ptr = Value::emptyValue(); break; case Uninitialized: break; diff --git a/src/qml/jsruntime/qv4serialize.cpp b/src/qml/jsruntime/qv4serialize.cpp index e151966306..50871a4d87 100644 --- a/src/qml/jsruntime/qv4serialize.cpp +++ b/src/qml/jsruntime/qv4serialize.cpp @@ -262,7 +262,7 @@ void Serialize::serialize(QByteArray &data, const QV4::Value &v, ExecutionEngine } reserve(data, sizeof(quint32) + length * sizeof(quint32)); push(data, valueheader(WorkerSequence, length)); - serialize(data, QV4::Primitive::fromInt32(QV4::SequencePrototype::metaTypeForSequence(o)), engine); // sequence type + serialize(data, QV4::Value::fromInt32(QV4::SequencePrototype::metaTypeForSequence(o)), engine); // sequence type ScopedValue val(scope); for (uint ii = 0; ii < seqLength; ++ii) serialize(data, (val = o->get(ii)), engine); // sequence elements @@ -358,7 +358,7 @@ ReturnedValue Serialize::deserialize(const char *&data, ExecutionEngine *engine) case WorkerNumber: return QV4::Encode(popDouble(data)); case WorkerDate: - return QV4::Encode(engine->newDateObject(QV4::Primitive::fromDouble(popDouble(data)))); + return QV4::Encode(engine->newDateObject(QV4::Value::fromDouble(popDouble(data)))); case WorkerRegexp: { quint32 flags = headersize(header); diff --git a/src/qml/jsruntime/qv4setiterator.cpp b/src/qml/jsruntime/qv4setiterator.cpp index 4681a49bd6..d32e2079a0 100644 --- a/src/qml/jsruntime/qv4setiterator.cpp +++ b/src/qml/jsruntime/qv4setiterator.cpp @@ -68,7 +68,7 @@ ReturnedValue SetIteratorPrototype::method_next(const FunctionObject *b, const V IteratorKind itemKind = thisObject->d()->iterationKind; if (!s) { - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } @@ -92,7 +92,7 @@ ReturnedValue SetIteratorPrototype::method_next(const FunctionObject *b, const V } thisObject->d()->iteratedSet.set(scope.engine, nullptr); - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } diff --git a/src/qml/jsruntime/qv4setobject.cpp b/src/qml/jsruntime/qv4setobject.cpp index 65824926b9..3c9b5031d1 100644 --- a/src/qml/jsruntime/qv4setobject.cpp +++ b/src/qml/jsruntime/qv4setobject.cpp @@ -118,7 +118,7 @@ void WeakSetPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); defineDefaultProperty(engine->id_constructor(), (o = ctor)); @@ -138,7 +138,7 @@ ReturnedValue WeakSetPrototype::method_add(const FunctionObject *b, const Value (!argc || !argv[0].isObject())) return scope.engine->throwTypeError(); - that->d()->esTable->set(argv[0], Primitive::undefinedValue()); + that->d()->esTable->set(argv[0], Value::undefinedValue()); return that.asReturnedValue(); } @@ -170,7 +170,7 @@ void SetPrototype::init(ExecutionEngine *engine, Object *ctor) { Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); ctor->addSymbolSpecies(); defineDefaultProperty(engine->id_constructor(), (o = ctor)); @@ -226,7 +226,7 @@ ReturnedValue SetPrototype::method_add(const FunctionObject *b, const Value *thi if (!that || that->d()->isWeakSet) return scope.engine->throwTypeError(); - that->d()->esTable->set(argv[0], Primitive::undefinedValue()); + that->d()->esTable->set(argv[0], Value::undefinedValue()); return that.asReturnedValue(); } @@ -274,7 +274,7 @@ ReturnedValue SetPrototype::method_forEach(const FunctionObject *b, const Value if (!callbackfn) return scope.engine->throwTypeError(); - ScopedValue thisArg(scope, Primitive::undefinedValue()); + ScopedValue thisArg(scope, Value::undefinedValue()); if (argc > 1) thisArg = ScopedValue(scope, argv[1]); diff --git a/src/qml/jsruntime/qv4stackframe_p.h b/src/qml/jsruntime/qv4stackframe_p.h index 6f21058e91..dd68c29a88 100644 --- a/src/qml/jsruntime/qv4stackframe_p.h +++ b/src/qml/jsruntime/qv4stackframe_p.h @@ -92,7 +92,7 @@ struct CallData } inline ReturnedValue argument(int i) const { - return i < argc() ? args[i].asReturnedValue() : Primitive::undefinedValue().asReturnedValue(); + return i < argc() ? args[i].asReturnedValue() : Value::undefinedValue().asReturnedValue(); } Value args[1]; @@ -160,7 +160,7 @@ struct Q_QML_EXPORT CppStackFrame { return requiredJSStackFrameSize(v4Function); } void setupJSFrame(Value *stackSpace, const Value &function, const Heap::ExecutionContext *scope, - const Value &thisObject, const Value &newTarget = Primitive::undefinedValue()) { + const Value &thisObject, const Value &newTarget = Value::undefinedValue()) { setupJSFrame(stackSpace, function, scope, thisObject, newTarget, v4Function->nFormals, v4Function->compiledFunction->nRegisters); } @@ -189,7 +189,7 @@ struct Q_QML_EXPORT CppStackFrame { const Value * tdzEnd = stackSpace + firstDeadZoneRegister + registerDeadZoneSize; for (Value *v = stackSpace + firstDeadZoneRegister; v < tdzEnd; ++v) - *v = Primitive::emptyValue().asReturnedValue(); + *v = Value::emptyValue().asReturnedValue(); } } #endif diff --git a/src/qml/jsruntime/qv4stringiterator.cpp b/src/qml/jsruntime/qv4stringiterator.cpp index 810ed333e4..62db83ff26 100644 --- a/src/qml/jsruntime/qv4stringiterator.cpp +++ b/src/qml/jsruntime/qv4stringiterator.cpp @@ -64,7 +64,7 @@ ReturnedValue StringIteratorPrototype::method_next(const FunctionObject *b, cons ScopedString s(scope, thisObject->d()->iteratedString); if (!s) { - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } @@ -75,7 +75,7 @@ ReturnedValue StringIteratorPrototype::method_next(const FunctionObject *b, cons if (index >= len) { thisObject->d()->iteratedString.set(scope.engine, nullptr); - QV4::Value undefined = Primitive::undefinedValue(); + QV4::Value undefined = Value::undefinedValue(); return IteratorPrototype::createIterResultObject(scope.engine, undefined, true); } diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp index f6156be0cd..55438465ad 100644 --- a/src/qml/jsruntime/qv4stringobject.cpp +++ b/src/qml/jsruntime/qv4stringobject.cpp @@ -74,14 +74,14 @@ void Heap::StringObject::init() Object::init(); Q_ASSERT(vtable() == QV4::StringObject::staticVTable()); string.set(internalClass->engine, internalClass->engine->id_empty()->d()); - setProperty(internalClass->engine, LengthPropertyIndex, Primitive::fromInt32(0)); + setProperty(internalClass->engine, LengthPropertyIndex, Value::fromInt32(0)); } void Heap::StringObject::init(const QV4::String *str) { Object::init(); string.set(internalClass->engine, str->d()); - setProperty(internalClass->engine, LengthPropertyIndex, Primitive::fromInt32(length())); + setProperty(internalClass->engine, LengthPropertyIndex, Value::fromInt32(length())); } Heap::String *Heap::StringObject::getIndex(uint index) const @@ -283,10 +283,10 @@ void StringPrototype::init(ExecutionEngine *engine, Object *ctor) Heap::InternalClass *ic = scope.engine->classes[ExecutionEngine::Class_StringObject]->changePrototype(scope.engine->objectPrototype()->d()); d()->internalClass.set(scope.engine, ic); d()->string.set(scope.engine, scope.engine->id_empty()->d()); - setProperty(scope.engine, Heap::StringObject::LengthPropertyIndex, Primitive::fromInt32(0)); + setProperty(scope.engine, Heap::StringObject::LengthPropertyIndex, Value::fromInt32(0)); ctor->defineReadonlyProperty(engine->id_prototype(), (o = this)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(1)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(1)); ctor->defineDefaultProperty(QStringLiteral("fromCharCode"), StringCtor::method_fromCharCode, 1); ctor->defineDefaultProperty(QStringLiteral("fromCodePoint"), StringCtor::method_fromCodePoint, 1); ctor->defineDefaultProperty(QStringLiteral("raw"), StringCtor::method_raw, 1); @@ -446,7 +446,7 @@ ReturnedValue StringPrototype::method_endsWith(const FunctionObject *b, const Va if (argc && argv[0].as<RegExpObject>()) return v4->throwTypeError(); - QString searchString = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + QString searchString = (argc ? argv[0] : Value::undefinedValue()).toQString(); if (v4->hasException) return Encode::undefined(); @@ -468,7 +468,7 @@ ReturnedValue StringPrototype::method_indexOf(const FunctionObject *b, const Val if (v4->hasException) return QV4::Encode::undefined(); - QString searchString = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + QString searchString = (argc ? argv[0] : Value::undefinedValue()).toQString(); if (v4->hasException) return Encode::undefined(); @@ -492,7 +492,7 @@ ReturnedValue StringPrototype::method_includes(const FunctionObject *b, const Va if (argc && argv[0].as<RegExpObject>()) return v4->throwTypeError(); - QString searchString = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + QString searchString = (argc ? argv[0] : Value::undefinedValue()).toQString(); if (v4->hasException) return Encode::undefined(); @@ -518,7 +518,7 @@ ReturnedValue StringPrototype::method_lastIndexOf(const FunctionObject *b, const if (v4->hasException) return QV4::Encode::undefined(); - QString searchString = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + QString searchString = (argc ? argv[0] : Value::undefinedValue()).toQString(); if (v4->hasException) return Encode::undefined(); @@ -544,7 +544,7 @@ ReturnedValue StringPrototype::method_localeCompare(const FunctionObject *b, con if (v4->hasException) return QV4::Encode::undefined(); - const QString that = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + const QString that = (argc ? argv[0] : Value::undefinedValue()).toQString(); return Encode(QString::localeAwareCompare(value, that)); } @@ -572,7 +572,7 @@ ReturnedValue StringPrototype::method_match(const FunctionObject *b, const Value if (v4->hasException) return Encode::undefined(); - Scoped<RegExpObject> that(scope, argc ? argv[0] : Primitive::undefinedValue()); + Scoped<RegExpObject> that(scope, argc ? argv[0] : Value::undefinedValue()); if (!that) { // convert args[0] to a regexp that = RegExpCtor::virtualCallAsConstructor(b, argv, argc, b); @@ -703,7 +703,7 @@ ReturnedValue StringPrototype::method_repeat(const FunctionObject *b, const Valu if (v4->hasException) return QV4::Encode::undefined(); - double repeats = (argc ? argv[0] : Primitive::undefinedValue()).toInteger(); + double repeats = (argc ? argv[0] : Value::undefinedValue()).toInteger(); if (repeats < 0 || qIsInf(repeats)) return v4->throwRangeError(QLatin1String("Invalid count value")); @@ -773,7 +773,7 @@ ReturnedValue StringPrototype::method_replace(const FunctionObject *b, const Val uint *matchOffsets = _matchOffsets; Scope scope(b); - ScopedValue searchValue(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue searchValue(scope, argc ? argv[0] : Value::undefinedValue()); Scoped<RegExpObject> regExp(scope, searchValue); if (regExp) { uint offset = 0; @@ -820,7 +820,7 @@ ReturnedValue StringPrototype::method_replace(const FunctionObject *b, const Val QString result; ScopedValue replacement(scope); - ScopedValue replaceValue(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue replaceValue(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedFunctionObject searchCallback(scope, replaceValue); if (!!searchCallback) { result.reserve(string.length() + 10*numStringMatches); @@ -832,7 +832,7 @@ ReturnedValue StringPrototype::method_replace(const FunctionObject *b, const Val int idx = (i * numCaptures + k) * 2; uint start = matchOffsets[idx]; uint end = matchOffsets[idx + 1]; - entry = Primitive::undefinedValue(); + entry = Value::undefinedValue(); if (start != JSC::Yarr::offsetNoMatch && end != JSC::Yarr::offsetNoMatch) entry = scope.engine->newString(string.mid(start, end - start)); arguments[k] = entry; @@ -840,10 +840,10 @@ ReturnedValue StringPrototype::method_replace(const FunctionObject *b, const Val uint matchStart = matchOffsets[i * numCaptures * 2]; Q_ASSERT(matchStart >= static_cast<uint>(lastEnd)); uint matchEnd = matchOffsets[i * numCaptures * 2 + 1]; - arguments[numCaptures] = Primitive::fromUInt32(matchStart); + arguments[numCaptures] = Value::fromUInt32(matchStart); arguments[numCaptures + 1] = scope.engine->newString(string); - Value that = Primitive::undefinedValue(); + Value that = Value::undefinedValue(); replacement = searchCallback->call(&that, arguments, numCaptures + 2); result += string.midRef(lastEnd, matchStart - lastEnd); result += replacement->toQString(); @@ -882,7 +882,7 @@ ReturnedValue StringPrototype::method_search(const FunctionObject *b, const Valu if (scope.engine->hasException) return QV4::Encode::undefined(); - Scoped<RegExpObject> regExp(scope, argc ? argv[0] : Primitive::undefinedValue()); + Scoped<RegExpObject> regExp(scope, argc ? argv[0] : Value::undefinedValue()); if (!regExp) { regExp = scope.engine->regExpCtor()->callAsConstructor(argv, 1); if (scope.engine->hasException) @@ -939,8 +939,8 @@ ReturnedValue StringPrototype::method_split(const FunctionObject *b, const Value return QV4::Encode::undefined(); Scope scope(v4); - ScopedValue separatorValue(scope, argc ? argv[0] : Primitive::undefinedValue()); - ScopedValue limitValue(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue separatorValue(scope, argc ? argv[0] : Value::undefinedValue()); + ScopedValue limitValue(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedArrayObject array(scope, scope.engine->newArrayObject()); @@ -1023,7 +1023,7 @@ ReturnedValue StringPrototype::method_startsWith(const FunctionObject *b, const if (argc && argv[0].as<RegExpObject>()) return v4->throwTypeError(); - QString searchString = (argc ? argv[0] : Primitive::undefinedValue()).toQString(); + QString searchString = (argc ? argv[0] : Value::undefinedValue()).toQString(); if (v4->hasException) return Encode::undefined(); @@ -1059,8 +1059,8 @@ ReturnedValue StringPrototype::method_substr(const FunctionObject *b, const Valu length = qMin(qMax(length, 0.0), count - start); - qint32 x = Primitive::toInt32(start); - qint32 y = Primitive::toInt32(length); + qint32 x = Value::toInt32(start); + qint32 y = Value::toInt32(length); return Encode(v4->newString(value.mid(x, y))); } diff --git a/src/qml/jsruntime/qv4symbol.cpp b/src/qml/jsruntime/qv4symbol.cpp index d5ae094e1f..004a9938e2 100644 --- a/src/qml/jsruntime/qv4symbol.cpp +++ b/src/qml/jsruntime/qv4symbol.cpp @@ -88,7 +88,7 @@ ReturnedValue SymbolCtor::virtualCallAsConstructor(const FunctionObject *f, cons ReturnedValue SymbolCtor::method_for(const FunctionObject *f, const Value *, const Value *argv, int argc) { Scope scope(f); - ScopedValue k(scope, argc ? argv[0]: Primitive::undefinedValue()); + ScopedValue k(scope, argc ? argv[0]: Value::undefinedValue()); ScopedString key(scope, k->toString(scope.engine)); if (scope.hasException()) return Encode::undefined(); @@ -114,7 +114,7 @@ void SymbolPrototype::init(ExecutionEngine *engine, Object *ctor) Scope scope(engine); ScopedValue v(scope); ctor->defineReadonlyProperty(engine->id_prototype(), (v = this)); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ctor->defineDefaultProperty(QStringLiteral("for"), SymbolCtor::method_for, 1); ctor->defineDefaultProperty(QStringLiteral("keyFor"), SymbolCtor::method_keyFor, 1); diff --git a/src/qml/jsruntime/qv4typedarray.cpp b/src/qml/jsruntime/qv4typedarray.cpp index a4d32ec06b..9d052456ef 100644 --- a/src/qml/jsruntime/qv4typedarray.cpp +++ b/src/qml/jsruntime/qv4typedarray.cpp @@ -318,7 +318,7 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f, updateProto(scope, array); return array.asReturnedValue(); } - Scoped<TypedArray> typedArray(scope, argc ? argv[0] : Primitive::undefinedValue()); + Scoped<TypedArray> typedArray(scope, argc ? argv[0] : Value::undefinedValue()); if (!!typedArray) { // ECMA 6 22.2.1.2 Scoped<ArrayBuffer> buffer(scope, typedArray->d()->buffer); @@ -350,7 +350,7 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f, TypedArrayOperations::Read read = typedArray->d()->type->read; TypedArrayOperations::Write write =array->d()->type->write; for (uint i = 0; i < l; ++i) { - Primitive val; + Value val; val.setRawValue(read(src + i*srcElementSize)); write(dest + i*destElementSize, val); } @@ -359,7 +359,7 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f, updateProto(scope, array); return array.asReturnedValue(); } - Scoped<ArrayBuffer> buffer(scope, argc ? argv[0] : Primitive::undefinedValue()); + Scoped<ArrayBuffer> buffer(scope, argc ? argv[0] : Value::undefinedValue()); if (!!buffer) { // ECMA 6 22.2.1.4 @@ -401,7 +401,7 @@ ReturnedValue TypedArrayCtor::virtualCallAsConstructor(const FunctionObject *f, // ECMA 6 22.2.1.3 - ScopedObject o(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedObject o(scope, argc ? argv[0] : Value::undefinedValue()); uint l = (uint) qBound(0., ScopedValue(scope, o->get(scope.engine->id_length()))->toInteger(), (double)UINT_MAX); if (scope.engine->hasException) return scope.engine->throwTypeError(); @@ -538,7 +538,7 @@ bool TypedArray::virtualPut(Managed *m, PropertyKey id, const Value &value, Valu uint byteOffset = a->d()->byteOffset + index * bytesPerElement; Q_ASSERT(byteOffset + bytesPerElement <= (uint)a->d()->buffer->byteLength()); - Value v = Primitive::fromReturnedValue(value.convertedToNumber()); + Value v = Value::fromReturnedValue(value.convertedToNumber()); if (scope.hasException() || a->d()->buffer->isDetachedBuffer()) return scope.engine->throwTypeError(); a->d()->type->write(a->d()->buffer->data->data() + byteOffset, v); @@ -565,7 +565,7 @@ bool TypedArray::virtualDefineOwnProperty(Managed *m, PropertyKey id, const Prop if (!p->value.isEmpty()) { ExecutionEngine *engine = a->engine(); - Value v = Primitive::fromReturnedValue(p->value.convertedToNumber()); + Value v = Value::fromReturnedValue(p->value.convertedToNumber()); if (engine->hasException || a->d()->buffer->isDetachedBuffer()) return engine->throwTypeError(); uint bytesPerElement = a->d()->type->bytesPerElement; @@ -613,14 +613,14 @@ void TypedArrayPrototype::init(ExecutionEngine *engine, TypedArrayCtor *ctor) Scope scope(engine); ScopedObject o(scope); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(3)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(3)); ctor->defineReadonlyProperty(engine->id_prototype(), *this); - ctor->defineReadonlyProperty(QStringLiteral("BYTES_PER_ELEMENT"), Primitive::fromInt32(operations[static_cast<int>(ctor->d()->type)].bytesPerElement)); + ctor->defineReadonlyProperty(QStringLiteral("BYTES_PER_ELEMENT"), Value::fromInt32(operations[static_cast<int>(ctor->d()->type)].bytesPerElement)); ctor->setPrototypeOf(engine->intrinsicTypedArrayCtor()); setPrototypeOf(engine->intrinsicTypedArrayPrototype()); defineDefaultProperty(engine->id_constructor(), (o = ctor)); - defineReadonlyProperty(QStringLiteral("BYTES_PER_ELEMENT"), Primitive::fromInt32(operations[static_cast<int>(ctor->d()->type)].bytesPerElement)); + defineReadonlyProperty(QStringLiteral("BYTES_PER_ELEMENT"), Value::fromInt32(operations[static_cast<int>(ctor->d()->type)].bytesPerElement)); } ReturnedValue IntrinsicTypedArrayPrototype::method_get_buffer(const FunctionObject *b, const Value *thisObject, const Value *, int) @@ -747,7 +747,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_every(const FunctionObject *b THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedValue r(scope); Value *arguments = scope.alloc(3); @@ -762,7 +762,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_every(const FunctionObject *b arguments[0] = v->d()->type->read(data + byteOffset + k * bytesPerElement); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = v; r = callback->call(that, arguments, 3); ok = r->toBoolean(); @@ -800,7 +800,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_fill(const FunctionObject *b, } double val = argc ? argv[0].toNumber() : std::numeric_limits<double>::quiet_NaN(); - Value value = Primitive::fromDouble(val); + Value value = Value::fromDouble(val); if (scope.hasException() || v->d()->buffer->isDetachedBuffer()) return scope.engine->throwTypeError(); @@ -848,7 +848,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_filter(const FunctionObject * const FunctionObject *callback = static_cast<const FunctionObject *>(argv); ScopedValue selected(scope); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); Value *list = arguments; @@ -861,7 +861,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_filter(const FunctionObject * if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; selected = callback->call(that, arguments, 3); if (selected->toBoolean()) { @@ -897,7 +897,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_find(const FunctionObject *b, ScopedValue result(scope); Value *arguments = scope.alloc(3); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); for (uint k = 0; k < len; ++k) { if (v->d()->buffer->isDetachedBuffer()) @@ -905,7 +905,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_find(const FunctionObject *b, arguments[0] = v->get(k); CHECK_EXCEPTION(); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = v; result = callback->call(that, arguments, 3); @@ -933,7 +933,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_findIndex(const FunctionObjec ScopedValue result(scope); Value *arguments = scope.alloc(3); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); for (uint k = 0; k < len; ++k) { if (v->d()->buffer->isDetachedBuffer()) @@ -941,7 +941,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_findIndex(const FunctionObjec arguments[0] = v->get(k); CHECK_EXCEPTION(); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = v; result = callback->call(that, arguments, 3); @@ -966,7 +966,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_forEach(const FunctionObject THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); for (uint k = 0; k < len; ++k) { @@ -977,7 +977,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_forEach(const FunctionObject if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = v; callback->call(that, arguments, 3); } @@ -1034,7 +1034,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_indexOf(const FunctionObject if (!len) return Encode(-1); - ScopedValue searchValue(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue searchValue(scope, argc ? argv[0] : Value::undefinedValue()); uint fromIndex = 0; if (argc >= 2) { @@ -1079,7 +1079,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_join(const FunctionObject *b, uint len = v->length(); - ScopedValue arg(scope, argc ? argv[0] : Primitive::undefinedValue()); + ScopedValue arg(scope, argc ? argv[0] : Value::undefinedValue()); QString r4; if (arg->isUndefined()) @@ -1106,7 +1106,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_join(const FunctionObject *b, for (quint32 k = 1; k < r2; ++k) { R += r4; - name = Primitive::fromDouble(k).toString(scope.engine); + name = Value::fromDouble(k).toString(scope.engine); r12 = v->get(name); CHECK_EXCEPTION(); @@ -1147,7 +1147,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_lastIndexOf(const FunctionObj if (argc >= 1) searchValue = argv[0]; else - searchValue = Primitive::undefinedValue(); + searchValue = Value::undefinedValue(); if (argc >= 2) { double f = argv[1].toInteger(); @@ -1192,7 +1192,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_map(const FunctionObject *b, ScopedValue v(scope); ScopedValue mapped(scope); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); Value *arguments = scope.alloc(3); for (uint k = 0; k < len; ++k) { @@ -1200,7 +1200,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_map(const FunctionObject *b, return scope.engine->throwTypeError(); arguments[0] = instance->get(k); - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; mapped = callback->call(that, arguments, 3); a->put(k, mapped); @@ -1249,7 +1249,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_reduce(const FunctionObject * if (kPresent) { arguments[0] = acc; arguments[1] = v; - arguments[2] = Primitive::fromDouble(k); + arguments[2] = Value::fromDouble(k); arguments[3] = instance; acc = callback->call(nullptr, arguments, 4); } @@ -1304,7 +1304,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_reduceRight(const FunctionObj if (kPresent) { arguments[0] = acc; arguments[1] = v; - arguments[2] = Primitive::fromDouble(k - 1); + arguments[2] = Value::fromDouble(k - 1); arguments[3] = instance; acc = callback->call(nullptr, arguments, 4); } @@ -1353,7 +1353,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_some(const FunctionObject *b, THROW_TYPE_ERROR(); const FunctionObject *callback = static_cast<const FunctionObject *>(argv); - ScopedValue that(scope, argc > 1 ? argv[1] : Primitive::undefinedValue()); + ScopedValue that(scope, argc > 1 ? argv[1] : Value::undefinedValue()); ScopedValue result(scope); Value *arguments = scope.alloc(3); @@ -1365,7 +1365,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_some(const FunctionObject *b, if (!exists) continue; - arguments[1] = Primitive::fromDouble(k); + arguments[1] = Value::fromDouble(k); arguments[2] = instance; result = callback->call(that, arguments, 3); if (result->toBoolean()) @@ -1472,7 +1472,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_set(const FunctionObject *b, TypedArrayOperations::Read read = srcTypedArray->d()->type->read; TypedArrayOperations::Write write = a->d()->type->write; for (uint i = 0; i < l; ++i) { - Primitive val; + Value val; val.setRawValue(read(src + i*srcElementSize)); write(dest + i*elementSize, val); } @@ -1492,7 +1492,7 @@ ReturnedValue IntrinsicTypedArrayPrototype::method_slice(const FunctionObject *b uint len = instance->length(); - double s = (argc ? argv[0] : Primitive::undefinedValue()).toInteger(); + double s = (argc ? argv[0] : Value::undefinedValue()).toInteger(); uint start; if (s < 0) start = (uint)qMax(len + s, 0.); @@ -1633,7 +1633,7 @@ ReturnedValue IntrinsicTypedArrayCtor::method_of(const FunctionObject *f, const if (!C || !C->isConstructor()) return scope.engine->throwTypeError(); - Value lenValue = Primitive::fromInt32(len); + Value lenValue = Value::fromInt32(len); ScopedObject newObj(scope, C->callAsConstructor(&lenValue, 1)); if (scope.hasException()) return Encode::undefined(); @@ -1654,7 +1654,7 @@ void IntrinsicTypedArrayPrototype::init(ExecutionEngine *engine, IntrinsicTypedA { Scope scope(engine); ctor->defineReadonlyProperty(engine->id_prototype(), *this); - ctor->defineReadonlyConfigurableProperty(engine->id_length(), Primitive::fromInt32(0)); + ctor->defineReadonlyConfigurableProperty(engine->id_length(), Value::fromInt32(0)); ScopedString s(scope, engine->newString(QStringLiteral("TypedArray"))); ctor->defineReadonlyConfigurableProperty(engine->id_name(), s); s = scope.engine->newString(QStringLiteral("of")); diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h index 305b8c6bab..7c895e3637 100644 --- a/src/qml/jsruntime/qv4value_p.h +++ b/src/qml/jsruntime/qv4value_p.h @@ -70,7 +70,6 @@ namespace Heap { struct Q_QML_PRIVATE_EXPORT Value { -private: /* We use 8 bytes for a value and a different variant of NaN boxing. A Double NaN (actually -qNaN) is indicated by a number that has the top 13 bits set, and for a @@ -126,10 +125,9 @@ private: quint64 _val; -public: - QML_NEARLY_ALWAYS_INLINE quint64 &rawValueRef() { return _val; } - QML_NEARLY_ALWAYS_INLINE quint64 rawValue() const { return _val; } - QML_NEARLY_ALWAYS_INLINE void setRawValue(quint64 raw) { _val = raw; } + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR quint64 &rawValueRef() { return _val; } + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR quint64 rawValue() const { return _val; } + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR void setRawValue(quint64 raw) { _val = raw; } #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN static inline int valueOffset() { return 0; } @@ -138,10 +136,11 @@ public: static inline int valueOffset() { return 4; } static inline int tagOffset() { return 0; } #endif - QML_NEARLY_ALWAYS_INLINE void setTagValue(quint32 tag, quint32 value) { _val = quint64(tag) << 32 | value; } - QML_NEARLY_ALWAYS_INLINE quint32 value() const { return _val & quint64(~quint32(0)); } - QML_NEARLY_ALWAYS_INLINE quint32 tag() const { return _val >> 32; } - QML_NEARLY_ALWAYS_INLINE void setTag(quint32 tag) { setTagValue(tag, value()); } + static inline constexpr quint64 tagValue(quint32 tag, quint32 value) { return quint64(tag) << 32 | value; } + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR void setTagValue(quint32 tag, quint32 value) { _val = quint64(tag) << 32 | value; } + QML_NEARLY_ALWAYS_INLINE constexpr quint32 value() const { return _val & quint64(~quint32(0)); } + QML_NEARLY_ALWAYS_INLINE constexpr quint32 tag() const { return _val >> 32; } + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR void setTag(quint32 tag) { setTagValue(tag, value()); } #if QT_POINTER_SIZE == 8 QML_NEARLY_ALWAYS_INLINE Heap::Base *m() const @@ -173,17 +172,17 @@ public: # error "unsupported pointer size" #endif - QML_NEARLY_ALWAYS_INLINE int int_32() const + QML_NEARLY_ALWAYS_INLINE constexpr int int_32() const { return int(value()); } - QML_NEARLY_ALWAYS_INLINE void setInt_32(int i) + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR void setInt_32(int i) { setTagValue(quint32(ValueTypeInternal::Integer), quint32(i)); } QML_NEARLY_ALWAYS_INLINE uint uint_32() const { return value(); } - QML_NEARLY_ALWAYS_INLINE void setEmpty() + QML_NEARLY_ALWAYS_INLINE Q_DECL_RELAXED_CONSTEXPR void setEmpty() { setTagValue(quint32(ValueTypeInternal::Empty), 0); } @@ -474,7 +473,7 @@ public: #endif ReturnedValue *data_ptr() { return &_val; } - ReturnedValue asReturnedValue() const { return _val; } + constexpr ReturnedValue asReturnedValue() const { return _val; } static Value fromReturnedValue(ReturnedValue val) { Value v; v._val = val; return v; } // As per ES specs @@ -483,6 +482,18 @@ public: inline void mark(MarkStack *markStack); + inline static constexpr Value emptyValue() { return { tagValue(quint32(ValueTypeInternal::Empty), 0) }; } + static inline constexpr Value fromBoolean(bool b) { return { tagValue(quint32(ValueTypeInternal::Boolean), b) }; } + static inline constexpr Value fromInt32(int i) { return { tagValue(quint32(ValueTypeInternal::Integer), quint32(i)) }; } + inline static constexpr Value undefinedValue() { return { 0 }; } + static inline constexpr Value nullValue() { return { tagValue(quint32(ValueTypeInternal::Null), 0) }; } + static inline Value fromDouble(double d); + static inline Value fromUInt32(uint i); + + static double toInteger(double d); + static int toInt32(double d); + static unsigned int toUInt32(double d); + Value &operator =(const ScopedValue &v); Value &operator=(ReturnedValue v) { _val = v; return *this; } Value &operator=(Managed *m) { @@ -570,71 +581,16 @@ ReturnedValue Heap::Base::asReturnedValue() const return Value::fromHeapObject(const_cast<Heap::Base *>(this)).asReturnedValue(); } - - -struct Q_QML_PRIVATE_EXPORT Primitive : public Value -{ - inline static Primitive emptyValue(); - static inline Primitive fromBoolean(bool b); - static inline Primitive fromInt32(int i); - inline static Primitive undefinedValue(); - static inline Primitive nullValue(); - static inline Primitive fromDouble(double d); - static inline Primitive fromUInt32(uint i); - - using Value::toInt32; - using Value::toUInt32; - - static double toInteger(double d); - static int toInt32(double d); - static unsigned int toUInt32(double d); -}; - -inline Primitive Primitive::undefinedValue() -{ - Primitive v; - v.setM(nullptr); - return v; -} - -inline Primitive Primitive::emptyValue() -{ - Primitive v; - v.setEmpty(); - return v; -} - -inline Primitive Primitive::nullValue() -{ - Primitive v; - v.setTagValue(quint32(ValueTypeInternal::Null), 0); - return v; -} - -inline Primitive Primitive::fromBoolean(bool b) +inline Value Value::fromDouble(double d) { - Primitive v; - v.setTagValue(quint32(ValueTypeInternal::Boolean), b); - return v; -} - -inline Primitive Primitive::fromDouble(double d) -{ - Primitive v; + Value v; v.setDouble(d); return v; } -inline Primitive Primitive::fromInt32(int i) +inline Value Value::fromUInt32(uint i) { - Primitive v; - v.setInt_32(i); - return v; -} - -inline Primitive Primitive::fromUInt32(uint i) -{ - Primitive v; + Value v; if (i < INT_MAX) { v.setTagValue(quint32(ValueTypeInternal::Integer), i); } else { @@ -690,7 +646,7 @@ struct Double { } }; -inline double Primitive::toInteger(double d) +inline double Value::toInteger(double d) { if (std::isnan(d)) return +0; @@ -699,41 +655,48 @@ inline double Primitive::toInteger(double d) return d >= 0 ? std::floor(d) : std::ceil(d); } -inline int Primitive::toInt32(double value) +inline int Value::toInt32(double value) { return Double::toInt32(value); } -inline unsigned int Primitive::toUInt32(double d) +inline unsigned int Value::toUInt32(double d) { return static_cast<uint>(toInt32(d)); } +// For source compat with older code in other modules +using Primitive = Value; + struct Encode { static constexpr ReturnedValue undefined() { - return 0; + return Value::undefinedValue().asReturnedValue(); } - static ReturnedValue null() { - return Primitive::nullValue().rawValue(); + static constexpr ReturnedValue null() { + return Value::nullValue().asReturnedValue(); } - explicit Encode(bool b) { - val = Primitive::fromBoolean(b).rawValue(); + explicit constexpr Encode(bool b) + : val(Value::fromBoolean(b).asReturnedValue()) + { } explicit Encode(double d) { - val = Primitive::fromDouble(d).rawValue(); + val = Value::fromDouble(d).asReturnedValue(); } - explicit Encode(int i) { - val = Primitive::fromInt32(i).rawValue(); + explicit constexpr Encode(int i) + : val(Value::fromInt32(i).asReturnedValue()) + { } explicit Encode(uint i) { - val = Primitive::fromUInt32(i).rawValue(); + val = Value::fromUInt32(i).asReturnedValue(); } - explicit Encode(ReturnedValue v) { - val = v; + explicit constexpr Encode(ReturnedValue v) + : val(v) + { } - Encode(Value v) { - val = v.rawValue(); + constexpr Encode(Value v) + : val(v.asReturnedValue()) + { } explicit Encode(Heap::Base *o) { @@ -752,7 +715,7 @@ struct Encode { return Encode(d); } - operator ReturnedValue() const { + constexpr operator ReturnedValue() const { return val; } quint64 val; @@ -783,7 +746,7 @@ inline qint64 Value::toLength() const { if (Q_LIKELY(integerCompatible())) return int_32() < 0 ? 0 : int_32(); - double i = Primitive::toInteger(isDouble() ? doubleValue() : toNumberImpl()); + double i = Value::toInteger(isDouble() ? doubleValue() : toNumberImpl()); if (i <= 0) return 0; if (i > (static_cast<qint64>(1) << 53) - 1) @@ -797,7 +760,7 @@ inline qint64 Value::toIndex() const if (Q_LIKELY(integerCompatible())) { idx = int_32(); } else { - idx = static_cast<qint64>(Primitive::toInteger(isDouble() ? doubleValue() : toNumberImpl())); + idx = static_cast<qint64>(Value::toInteger(isDouble() ? doubleValue() : toNumberImpl())); } if (idx > (static_cast<qint64>(1) << 53) - 1) idx = -1; @@ -809,7 +772,7 @@ inline double Value::toInteger() const if (integerCompatible()) return int_32(); - return Primitive::toInteger(isDouble() ? doubleValue() : toNumberImpl()); + return Value::toInteger(isDouble() ? doubleValue() : toNumberImpl()); } diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 07eb054350..f81c8438ce 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -377,7 +377,7 @@ static bool compareEqualInt(QV4::Value &accumulator, QV4::Value lhs, int rhs) if (lhs.m()->internalClass->vtable->isString) return RuntimeHelpers::stringToNumber(static_cast<String &>(lhs).toQString()) == rhs; accumulator = lhs; - lhs = Primitive::fromReturnedValue(RuntimeHelpers::objectDefaultValue(&static_cast<QV4::Object &>(accumulator), PREFERREDTYPE_HINT)); + lhs = Value::fromReturnedValue(RuntimeHelpers::objectDefaultValue(&static_cast<QV4::Object &>(accumulator), PREFERREDTYPE_HINT)); goto redo; case QV4::Value::QT_Empty: Q_UNREACHABLE(); @@ -393,7 +393,7 @@ static bool compareEqualInt(QV4::Value &accumulator, QV4::Value lhs, int rhs) #define STORE_IP() frame->instructionPointer = int(code - function->codeData); #define STORE_ACC() accumulator = acc; -#define ACC Primitive::fromReturnedValue(acc) +#define ACC Value::fromReturnedValue(acc) #define VALUE_TO_INT(i, val) \ int i; \ do { \ @@ -675,10 +675,10 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine, // check exception, in case the generator was called with throw() or return() if (engine->hasException) { // an empty value indicates that the generator was called with return() - if (engine->exceptionValue->asReturnedValue() != Primitive::emptyValue().asReturnedValue()) + if (engine->exceptionValue->asReturnedValue() != Value::emptyValue().asReturnedValue()) goto handleUnwind; engine->hasException = false; - *engine->exceptionValue = Primitive::undefinedValue(); + *engine->exceptionValue = Value::undefinedValue(); } else { code += offset; } @@ -697,7 +697,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine, acc = engine->throwTypeError(QStringLiteral("%1 is not a function").arg(func.toQStringNoThrow())); goto handleUnwind; } - Value undef = Primitive::undefinedValue(); + Value undef = Value::undefinedValue(); acc = static_cast<const FunctionObject &>(func).call(&undef, stack + argv, argc); CHECK_EXCEPTION; MOTH_END_INSTR(CallValue) @@ -826,12 +826,12 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine, MOTH_BEGIN_INSTR(GetException) acc = engine->hasException ? engine->exceptionValue->asReturnedValue() - : Primitive::emptyValue().asReturnedValue(); + : Value::emptyValue().asReturnedValue(); engine->hasException = false; MOTH_END_INSTR(HasException) MOTH_BEGIN_INSTR(SetException) - if (acc != Primitive::emptyValue().asReturnedValue()) { + if (acc != Value::emptyValue().asReturnedValue()) { *engine->exceptionValue = acc; engine->hasException = true; } @@ -1352,13 +1352,13 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine, MOTH_END_INSTR(Ret) MOTH_BEGIN_INSTR(InitializeBlockDeadTemporalZone) - acc = Encode(Primitive::emptyValue()); + acc = Encode(Value::emptyValue()); for (int i = firstReg, end = firstReg + count; i < end; ++i) STACK_VALUE(i) = acc; MOTH_END_INSTR(InitializeBlockDeadTemporalZone) MOTH_BEGIN_INSTR(ThrowOnNullOrUndefined) - if (Primitive::fromReturnedValue(acc).isNullOrUndefined()) { + if (Value::fromReturnedValue(acc).isNullOrUndefined()) { engine->throwTypeError(); goto handleUnwind; } diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp index acaaa3b920..fb6d9478db 100644 --- a/src/qml/memory/qv4mm.cpp +++ b/src/qml/memory/qv4mm.cpp @@ -975,7 +975,7 @@ void MemoryManager::sweep(bool lastSweep, ClassDestroyStatsCallback classCountPt if (QObjectWrapper *qobjectWrapper = (*it).as<QObjectWrapper>()) qobjectWrapper->destroyObject(lastSweep); - (*it) = Primitive::undefinedValue(); + (*it) = Value::undefinedValue(); } // remove objects from weak maps and sets @@ -1007,7 +1007,7 @@ void MemoryManager::sweep(bool lastSweep, ClassDestroyStatsCallback classCountPt Managed *m = (*it).managed(); if (!m || m->markBit()) continue; - (*it) = Primitive::undefinedValue(); + (*it) = Value::undefinedValue(); } // Now it is time to free QV4::QObjectWrapper Value, we must check the Value's tag to make sure its object has been destroyed diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 82c7921e0c..e5b78591e0 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -209,12 +209,12 @@ void QQmlBoundSignalExpression::evaluate(void **a) jsCall->args[ii] = scope.engine->fromVariant(*((QVariant *)a[ii + 1])); } else if (type == QMetaType::Int) { //### optimization. Can go away if we switch to metaTypeToJS, or be expanded otherwise - jsCall->args[ii] = QV4::Primitive::fromInt32(*reinterpret_cast<const int*>(a[ii + 1])); + jsCall->args[ii] = QV4::Value::fromInt32(*reinterpret_cast<const int*>(a[ii + 1])); } else if (type == qMetaTypeId<QQmlV4Handle>()) { jsCall->args[ii] = *reinterpret_cast<QQmlV4Handle *>(a[ii + 1]); } else if (ep->isQObject(type)) { if (!*reinterpret_cast<void* const *>(a[ii + 1])) - jsCall->args[ii] = QV4::Primitive::nullValue(); + jsCall->args[ii] = QV4::Value::nullValue(); else jsCall->args[ii] = QV4::QObjectWrapper::wrap(v4, *reinterpret_cast<QObject* const *>(a[ii + 1])); } else { diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp index 45b0f18530..6dc8dd0ce7 100644 --- a/src/qml/qml/qqmlcomponent.cpp +++ b/src/qml/qml/qqmlcomponent.cpp @@ -1271,7 +1271,7 @@ void QQmlComponent::createObject(QQmlV4Function *args) QObject *parent = nullptr; QV4::ExecutionEngine *v4 = args->v4engine(); QV4::Scope scope(v4); - QV4::ScopedValue valuemap(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue valuemap(scope, QV4::Value::undefinedValue()); if (args->length() >= 1) { QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, (*args)[0]); @@ -1386,7 +1386,7 @@ void QQmlComponent::incubateObject(QQmlV4Function *args) QV4::Scope scope(v4); QObject *parent = nullptr; - QV4::ScopedValue valuemap(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue valuemap(scope, QV4::Value::undefinedValue()); QQmlIncubator::IncubationMode mode = QQmlIncubator::Asynchronous; if (args->length() >= 1) { @@ -1524,8 +1524,8 @@ QQmlComponentExtension::~QQmlComponentExtension() void QV4::Heap::QmlIncubatorObject::init(QQmlIncubator::IncubationMode m) { Object::init(); - valuemap.set(internalClass->engine, QV4::Primitive::undefinedValue()); - statusChanged.set(internalClass->engine, QV4::Primitive::undefinedValue()); + valuemap.set(internalClass->engine, QV4::Value::undefinedValue()); + statusChanged.set(internalClass->engine, QV4::Value::undefinedValue()); parent.init(); qmlContext.set(internalClass->engine, nullptr); incubator = new QQmlComponentIncubator(this, m); @@ -1566,7 +1566,7 @@ void QV4::QmlIncubatorObject::statusChanged(QQmlIncubator::Status s) if (f) { QV4::JSCallData jsCallData(scope, 1); *jsCallData->thisObject = this; - jsCallData->args[0] = QV4::Primitive::fromUInt32(s); + jsCallData->args[0] = QV4::Value::fromUInt32(s); f->call(jsCallData); if (scope.hasException()) { QQmlError error = scope.engine->catchExceptionAsQmlError(); diff --git a/src/qml/qml/qqmllistwrapper.cpp b/src/qml/qml/qqmllistwrapper.cpp index dcbd3dd488..2f769c1aef 100644 --- a/src/qml/qml/qqmllistwrapper.cpp +++ b/src/qml/qml/qqmllistwrapper.cpp @@ -119,11 +119,11 @@ ReturnedValue QmlListWrapper::virtualGet(const Managed *m, PropertyKey id, const if (hasProperty) *hasProperty = false; - return Primitive::undefinedValue().asReturnedValue(); + return Value::undefinedValue().asReturnedValue(); } else if (id.isString()) { if (id == v4->id_length()->propertyKey() && !w->d()->object.isNull()) { quint32 count = w->d()->property().count ? w->d()->property().count(&w->d()->property()) : 0; - return Primitive::fromUInt32(count).asReturnedValue(); + return Value::fromUInt32(count).asReturnedValue(); } } diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp index f9f13e7b7c..2b17037df0 100644 --- a/src/qml/qml/qqmllocale.cpp +++ b/src/qml/qml/qqmllocale.cpp @@ -512,7 +512,7 @@ ReturnedValue QQmlLocaleData::method_get_weekDays(const QV4::FunctionObject *b, int day = days.at(i); if (day == 7) // JS Date days in range 0(Sunday) to 6(Saturday) day = 0; - result->arrayPut(i, QV4::Primitive::fromInt32(day)); + result->arrayPut(i, QV4::Value::fromInt32(day)); } result->setArrayLengthUnchecked(days.size()); diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp index 7a55ce78e0..c181d791f5 100644 --- a/src/qml/qml/qqmlobjectcreator.cpp +++ b/src/qml/qml/qqmlobjectcreator.cpp @@ -387,7 +387,7 @@ void QQmlObjectCreator::setPropertyValue(const QQmlPropertyData *property, const double n = binding->valueAsNumber(compilationUnit->constants); if (double(int(n)) == n) { if (property->isVarProperty()) { - _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Primitive::fromInt32(int(n))); + _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Value::fromInt32(int(n))); } else { int i = int(n); QVariant value(i); @@ -395,7 +395,7 @@ void QQmlObjectCreator::setPropertyValue(const QQmlPropertyData *property, const } } else { if (property->isVarProperty()) { - _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Primitive::fromDouble(n)); + _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Value::fromDouble(n)); } else { QVariant value(n); property->writeProperty(_qobject, &value, propertyWriteFlags); @@ -403,7 +403,7 @@ void QQmlObjectCreator::setPropertyValue(const QQmlPropertyData *property, const } } else if (binding->type == QV4::CompiledData::Binding::Type_Boolean) { if (property->isVarProperty()) { - _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Primitive::fromBoolean(binding->valueAsBoolean())); + _vmeMetaObject->setVMEProperty(property->coreIndex(), QV4::Value::fromBoolean(binding->valueAsBoolean())); } else { QVariant value(binding->valueAsBoolean()); property->writeProperty(_qobject, &value, propertyWriteFlags); diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp index c6affcb79c..cb4df7d912 100644 --- a/src/qml/qml/qqmltypewrapper.cpp +++ b/src/qml/qml/qqmltypewrapper.cpp @@ -205,7 +205,7 @@ ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, cons bool ok = false; const int value = enumForSingleton(v4, name, qobjectSingleton, type, &ok); if (ok) - return QV4::Primitive::fromInt32(value).asReturnedValue(); + return QV4::Value::fromInt32(value).asReturnedValue(); } // check for property. @@ -237,7 +237,7 @@ ReturnedValue QQmlTypeWrapper::virtualGet(const Managed *m, PropertyKey id, cons bool ok = false; int value = type.enumValue(QQmlEnginePrivate::get(v4->qmlEngine()), name, &ok); if (ok) - return QV4::Primitive::fromInt32(value).asReturnedValue(); + return QV4::Value::fromInt32(value).asReturnedValue(); value = type.scopedEnumIndex(QQmlEnginePrivate::get(v4->qmlEngine()), name, &ok); if (ok) { @@ -447,7 +447,7 @@ ReturnedValue QQmlScopedEnumWrapper::virtualGet(const Managed *m, PropertyKey id if (hasProperty) *hasProperty = ok; if (ok) - return QV4::Primitive::fromInt32(value).asReturnedValue(); + return QV4::Value::fromInt32(value).asReturnedValue(); return Encode::undefined(); } diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index f885182a12..fb43834472 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -387,7 +387,7 @@ ReturnedValue QQmlValueTypeWrapper::virtualGet(const Managed *m, PropertyKey id, // Note: readReferenceValue() can change the reference->type. if (const QQmlValueTypeReference *reference = r->as<QQmlValueTypeReference>()) { if (!reference->readReferenceValue()) - return Primitive::undefinedValue().asReturnedValue(); + return Value::undefinedValue().asReturnedValue(); } QQmlPropertyData *result = r->d()->propertyCache()->property(name.getPointer(), nullptr, nullptr); diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index d01e089054..6bc469c836 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -107,7 +107,7 @@ void QQmlVMEVariantQObjectPtr::objectDestroyed(QObject *) QV4::Scoped<QV4::MemberData> sp(scope, m_target->propertyAndMethodStorage.value()); if (sp) { QV4::PropertyIndex index{ sp->d(), sp->d()->values.values + m_index }; - index.set(v4, QV4::Primitive::nullValue()); + index.set(v4, QV4::Value::nullValue()); } } @@ -368,21 +368,21 @@ void QQmlVMEMetaObject::writeProperty(int id, int v) { QV4::MemberData *md = propertyAndMethodStorageAsMemberData(); if (md) - md->set(engine, id, QV4::Primitive::fromInt32(v)); + md->set(engine, id, QV4::Value::fromInt32(v)); } void QQmlVMEMetaObject::writeProperty(int id, bool v) { QV4::MemberData *md = propertyAndMethodStorageAsMemberData(); if (md) - md->set(engine, id, QV4::Primitive::fromBoolean(v)); + md->set(engine, id, QV4::Value::fromBoolean(v)); } void QQmlVMEMetaObject::writeProperty(int id, double v) { QV4::MemberData *md = propertyAndMethodStorageAsMemberData(); if (md) - md->set(engine, id, QV4::Primitive::fromDouble(v)); + md->set(engine, id, QV4::Value::fromDouble(v)); } void QQmlVMEMetaObject::writeProperty(int id, const QString& v) @@ -1005,7 +1005,7 @@ QV4::ReturnedValue QQmlVMEMetaObject::readVarProperty(int id) const QV4::MemberData *md = propertyAndMethodStorageAsMemberData(); if (md) return (md->data() + id)->asReturnedValue(); - return QV4::Primitive::undefinedValue().asReturnedValue(); + return QV4::Value::undefinedValue().asReturnedValue(); } QVariant QQmlVMEMetaObject::readPropertyAsVariant(int id) const @@ -1122,7 +1122,7 @@ QV4::ReturnedValue QQmlVMEMetaObject::vmeMethod(int index) const return parentVMEMetaObject()->vmeMethod(index); } if (!compiledObject) - return QV4::Primitive::undefinedValue().asReturnedValue(); + return QV4::Value::undefinedValue().asReturnedValue(); const int plainSignals = compiledObject->nSignals + compiledObject->nProperties + compiledObject->nAliases; Q_ASSERT(index >= (methodOffset() + plainSignals) && index < (methodOffset() + plainSignals + int(compiledObject->nFunctions))); return method(index - methodOffset() - plainSignals); diff --git a/src/qml/qml/qqmlxmlhttprequest.cpp b/src/qml/qml/qqmlxmlhttprequest.cpp index c739a91fd5..9f629f974d 100644 --- a/src/qml/qml/qqmlxmlhttprequest.cpp +++ b/src/qml/qml/qqmlxmlhttprequest.cpp @@ -910,7 +910,7 @@ ReturnedValue NamedNodeMap::virtualGet(const Managed *m, PropertyKey id, const V return Object::virtualGet(m, id, receiver, hasProperty); if (id == v4->id_length()->propertyKey()) - return Primitive::fromInt32(r->d()->list().count()).asReturnedValue(); + return Value::fromInt32(r->d()->list().count()).asReturnedValue(); QString str = id.toQString(); for (int ii = 0; ii < r->d()->list().count(); ++ii) { @@ -950,7 +950,7 @@ ReturnedValue NodeList::virtualGet(const Managed *m, PropertyKey id, const Value } if (id == v4->id_length()->propertyKey()) - return Primitive::fromInt32(r->d()->d->children.count()).asReturnedValue(); + return Value::fromInt32(r->d()->d->children.count()).asReturnedValue(); return Object::virtualGet(m, id, receiver, hasProperty); } @@ -1690,11 +1690,11 @@ void Heap::QQmlXMLHttpRequestCtor::init(ExecutionEngine *engine) Scope scope(engine); Scoped<QV4::QQmlXMLHttpRequestCtor> ctor(scope, this); - ctor->defineReadonlyProperty(QStringLiteral("UNSENT"), Primitive::fromInt32(0)); - ctor->defineReadonlyProperty(QStringLiteral("OPENED"), Primitive::fromInt32(1)); - ctor->defineReadonlyProperty(QStringLiteral("HEADERS_RECEIVED"), Primitive::fromInt32(2)); - ctor->defineReadonlyProperty(QStringLiteral("LOADING"), Primitive::fromInt32(3)); - ctor->defineReadonlyProperty(QStringLiteral("DONE"), Primitive::fromInt32(4)); + ctor->defineReadonlyProperty(QStringLiteral("UNSENT"), Value::fromInt32(0)); + ctor->defineReadonlyProperty(QStringLiteral("OPENED"), Value::fromInt32(1)); + ctor->defineReadonlyProperty(QStringLiteral("HEADERS_RECEIVED"), Value::fromInt32(2)); + ctor->defineReadonlyProperty(QStringLiteral("LOADING"), Value::fromInt32(3)); + ctor->defineReadonlyProperty(QStringLiteral("DONE"), Value::fromInt32(4)); if (!ctor->d()->proto) ctor->setupProto(); ScopedString s(scope, engine->id_prototype()); @@ -1730,11 +1730,11 @@ void QQmlXMLHttpRequestCtor::setupProto() p->defineAccessorProperty(QStringLiteral("responseType"), method_get_responseType, method_set_responseType); // State values - p->defineReadonlyProperty(QStringLiteral("UNSENT"), Primitive::fromInt32(0)); - p->defineReadonlyProperty(QStringLiteral("OPENED"), Primitive::fromInt32(1)); - p->defineReadonlyProperty(QStringLiteral("HEADERS_RECEIVED"), Primitive::fromInt32(2)); - p->defineReadonlyProperty(QStringLiteral("LOADING"), Primitive::fromInt32(3)); - p->defineReadonlyProperty(QStringLiteral("DONE"), Primitive::fromInt32(4)); + p->defineReadonlyProperty(QStringLiteral("UNSENT"), Value::fromInt32(0)); + p->defineReadonlyProperty(QStringLiteral("OPENED"), Value::fromInt32(1)); + p->defineReadonlyProperty(QStringLiteral("HEADERS_RECEIVED"), Value::fromInt32(2)); + p->defineReadonlyProperty(QStringLiteral("LOADING"), Value::fromInt32(3)); + p->defineReadonlyProperty(QStringLiteral("DONE"), Value::fromInt32(4)); } diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index e7899970ad..8feac26cdf 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -110,8 +110,8 @@ void Heap::QtObject::init(QQmlEngine *qmlEngine) { ScopedString str(scope); ScopedValue v(scope); - o->put((str = scope.engine->newString(QStringLiteral("Asynchronous"))), (v = QV4::Primitive::fromInt32(0))); - o->put((str = scope.engine->newString(QStringLiteral("Synchronous"))), (v = QV4::Primitive::fromInt32(1))); + o->put((str = scope.engine->newString(QStringLiteral("Asynchronous"))), (v = QV4::Value::fromInt32(0))); + o->put((str = scope.engine->newString(QStringLiteral("Synchronous"))), (v = QV4::Value::fromInt32(1))); } o->defineDefaultProperty(QStringLiteral("include"), QV4Include::method_include); @@ -183,7 +183,7 @@ ReturnedValue QtObject::findAndAdd(const QString *name, bool &foundProperty) con QMetaEnum enumerator = qtMetaObject->enumerator(d()->enumeratorIterator); for (int keyCount = enumerator.keyCount(); d()->keyIterator < keyCount; ++d()->keyIterator) { key = scope.engine->newString(QString::fromUtf8(enumerator.key(d()->keyIterator))); - value = QV4::Primitive::fromInt32(enumerator.value(d()->keyIterator)); + value = QV4::Value::fromInt32(enumerator.value(d()->keyIterator)); o->put(key, value); if (name && key->toQString() == *name) { ++d()->keyIterator; @@ -1106,8 +1106,8 @@ ReturnedValue QtObject::method_createQmlObject(const FunctionObject *b, const Va const QQmlError &error = errors.at(ii); errorstr += QLatin1String("\n ") + error.toString(); qmlerror = v4->newObject(); - qmlerror->put((s = v4->newString(QStringLiteral("lineNumber"))), (v = QV4::Primitive::fromInt32(error.line()))); - qmlerror->put((s = v4->newString(QStringLiteral("columnNumber"))), (v = QV4::Primitive::fromInt32(error.column()))); + qmlerror->put((s = v4->newString(QStringLiteral("lineNumber"))), (v = QV4::Value::fromInt32(error.line()))); + qmlerror->put((s = v4->newString(QStringLiteral("columnNumber"))), (v = QV4::Value::fromInt32(error.column()))); qmlerror->put((s = v4->newString(QStringLiteral("fileName"))), (v = v4->newString(error.url().toString()))); qmlerror->put((s = v4->newString(QStringLiteral("message"))), (v = v4->newString(error.description()))); qmlerrors->put(ii, qmlerror); diff --git a/src/qml/qml/v8/qv4domerrors.cpp b/src/qml/qml/v8/qv4domerrors.cpp index b680aa07da..7ad37d098f 100644 --- a/src/qml/qml/v8/qv4domerrors.cpp +++ b/src/qml/qml/v8/qv4domerrors.cpp @@ -48,23 +48,23 @@ void qt_add_domexceptions(ExecutionEngine *e) { Scope scope(e); ScopedObject domexception(scope, e->newObject()); - domexception->defineReadonlyProperty(QStringLiteral("INDEX_SIZE_ERR"), Primitive::fromInt32(DOMEXCEPTION_INDEX_SIZE_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("DOMSTRING_SIZE_ERR"), Primitive::fromInt32(DOMEXCEPTION_DOMSTRING_SIZE_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("HIERARCHY_REQUEST_ERR"), Primitive::fromInt32(DOMEXCEPTION_HIERARCHY_REQUEST_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("WRONG_DOCUMENT_ERR"), Primitive::fromInt32(DOMEXCEPTION_WRONG_DOCUMENT_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("INVALID_CHARACTER_ERR"), Primitive::fromInt32(DOMEXCEPTION_INVALID_CHARACTER_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("NO_DATA_ALLOWED_ERR"), Primitive::fromInt32(DOMEXCEPTION_NO_DATA_ALLOWED_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("NO_MODIFICATION_ALLOWED_ERR"), Primitive::fromInt32(DOMEXCEPTION_NO_MODIFICATION_ALLOWED_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("NOT_FOUND_ERR"), Primitive::fromInt32(DOMEXCEPTION_NOT_FOUND_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("NOT_SUPPORTED_ERR"), Primitive::fromInt32(DOMEXCEPTION_NOT_SUPPORTED_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("INUSE_ATTRIBUTE_ERR"), Primitive::fromInt32(DOMEXCEPTION_INUSE_ATTRIBUTE_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("INVALID_STATE_ERR"), Primitive::fromInt32(DOMEXCEPTION_INVALID_STATE_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("SYNTAX_ERR"), Primitive::fromInt32(DOMEXCEPTION_SYNTAX_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("INVALID_MODIFICATION_ERR"), Primitive::fromInt32(DOMEXCEPTION_INVALID_MODIFICATION_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("NAMESPACE_ERR"), Primitive::fromInt32(DOMEXCEPTION_NAMESPACE_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("INVALID_ACCESS_ERR"), Primitive::fromInt32(DOMEXCEPTION_INVALID_ACCESS_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("VALIDATION_ERR"), Primitive::fromInt32(DOMEXCEPTION_VALIDATION_ERR)); - domexception->defineReadonlyProperty(QStringLiteral("TYPE_MISMATCH_ERR"), Primitive::fromInt32(DOMEXCEPTION_TYPE_MISMATCH_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INDEX_SIZE_ERR"), Value::fromInt32(DOMEXCEPTION_INDEX_SIZE_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("DOMSTRING_SIZE_ERR"), Value::fromInt32(DOMEXCEPTION_DOMSTRING_SIZE_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("HIERARCHY_REQUEST_ERR"), Value::fromInt32(DOMEXCEPTION_HIERARCHY_REQUEST_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("WRONG_DOCUMENT_ERR"), Value::fromInt32(DOMEXCEPTION_WRONG_DOCUMENT_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INVALID_CHARACTER_ERR"), Value::fromInt32(DOMEXCEPTION_INVALID_CHARACTER_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("NO_DATA_ALLOWED_ERR"), Value::fromInt32(DOMEXCEPTION_NO_DATA_ALLOWED_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("NO_MODIFICATION_ALLOWED_ERR"), Value::fromInt32(DOMEXCEPTION_NO_MODIFICATION_ALLOWED_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("NOT_FOUND_ERR"), Value::fromInt32(DOMEXCEPTION_NOT_FOUND_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("NOT_SUPPORTED_ERR"), Value::fromInt32(DOMEXCEPTION_NOT_SUPPORTED_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INUSE_ATTRIBUTE_ERR"), Value::fromInt32(DOMEXCEPTION_INUSE_ATTRIBUTE_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INVALID_STATE_ERR"), Value::fromInt32(DOMEXCEPTION_INVALID_STATE_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("SYNTAX_ERR"), Value::fromInt32(DOMEXCEPTION_SYNTAX_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INVALID_MODIFICATION_ERR"), Value::fromInt32(DOMEXCEPTION_INVALID_MODIFICATION_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("NAMESPACE_ERR"), Value::fromInt32(DOMEXCEPTION_NAMESPACE_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("INVALID_ACCESS_ERR"), Value::fromInt32(DOMEXCEPTION_INVALID_ACCESS_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("VALIDATION_ERR"), Value::fromInt32(DOMEXCEPTION_VALIDATION_ERR)); + domexception->defineReadonlyProperty(QStringLiteral("TYPE_MISMATCH_ERR"), Value::fromInt32(DOMEXCEPTION_TYPE_MISMATCH_ERR)); e->globalObject->defineDefaultProperty(QStringLiteral("DOMException"), domexception); } diff --git a/src/qml/qml/v8/qv4domerrors_p.h b/src/qml/qml/v8/qv4domerrors_p.h index 06a70a13e9..1842e46a9c 100644 --- a/src/qml/qml/v8/qv4domerrors_p.h +++ b/src/qml/qml/v8/qv4domerrors_p.h @@ -77,7 +77,7 @@ QT_BEGIN_NAMESPACE #define THROW_DOM(error, string) { \ QV4::ScopedValue v(scope, scope.engine->newString(QStringLiteral(string))); \ QV4::ScopedObject ex(scope, scope.engine->newErrorObject(v)); \ - ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))), QV4::ScopedValue(scope, QV4::Primitive::fromInt32(error))); \ + ex->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("code"))), QV4::ScopedValue(scope, QV4::Value::fromInt32(error))); \ return scope.engine->throwError(ex); \ } diff --git a/src/qml/qml/v8/qv4sqlerrors.cpp b/src/qml/qml/v8/qv4sqlerrors.cpp index db8d130cef..3f1744a687 100644 --- a/src/qml/qml/v8/qv4sqlerrors.cpp +++ b/src/qml/qml/v8/qv4sqlerrors.cpp @@ -49,14 +49,14 @@ void qt_add_sqlexceptions(QV4::ExecutionEngine *engine) { Scope scope(engine); ScopedObject sqlexception(scope, engine->newObject()); - sqlexception->defineReadonlyProperty(QStringLiteral("UNKNOWN_ERR"), Primitive::fromInt32(SQLEXCEPTION_UNKNOWN_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("DATABASE_ERR"), Primitive::fromInt32(SQLEXCEPTION_DATABASE_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("VERSION_ERR"), Primitive::fromInt32(SQLEXCEPTION_VERSION_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("TOO_LARGE_ERR"), Primitive::fromInt32(SQLEXCEPTION_TOO_LARGE_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("QUOTA_ERR"), Primitive::fromInt32(SQLEXCEPTION_QUOTA_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("SYNTAX_ERR"), Primitive::fromInt32(SQLEXCEPTION_SYNTAX_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("CONSTRAINT_ERR"), Primitive::fromInt32(SQLEXCEPTION_CONSTRAINT_ERR)); - sqlexception->defineReadonlyProperty(QStringLiteral("TIMEOUT_ERR"), Primitive::fromInt32(SQLEXCEPTION_TIMEOUT_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("UNKNOWN_ERR"), Value::fromInt32(SQLEXCEPTION_UNKNOWN_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("DATABASE_ERR"), Value::fromInt32(SQLEXCEPTION_DATABASE_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("VERSION_ERR"), Value::fromInt32(SQLEXCEPTION_VERSION_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("TOO_LARGE_ERR"), Value::fromInt32(SQLEXCEPTION_TOO_LARGE_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("QUOTA_ERR"), Value::fromInt32(SQLEXCEPTION_QUOTA_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("SYNTAX_ERR"), Value::fromInt32(SQLEXCEPTION_SYNTAX_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("CONSTRAINT_ERR"), Value::fromInt32(SQLEXCEPTION_CONSTRAINT_ERR)); + sqlexception->defineReadonlyProperty(QStringLiteral("TIMEOUT_ERR"), Value::fromInt32(SQLEXCEPTION_TIMEOUT_ERR)); engine->globalObject->defineDefaultProperty(QStringLiteral("SQLException"), sqlexception); } diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index 015458169a..4f7f92aca8 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -105,7 +105,7 @@ struct DelegateModelGroupFunction : QV4::FunctionObject if (!o) return scope.engine->throwTypeError(QStringLiteral("Not a valid VisualData object")); - QV4::ScopedValue v(scope, argc ? argv[0] : Primitive::undefinedValue()); + QV4::ScopedValue v(scope, argc ? argv[0] : Value::undefinedValue()); return f->d()->code(o->d()->item, f->d()->flag, v); } }; @@ -3476,7 +3476,7 @@ public: if (index >= array->count()) { if (hasProperty) *hasProperty = false; - return QV4::Primitive::undefinedValue().asReturnedValue(); + return QV4::Value::undefinedValue().asReturnedValue(); } const QQmlChangeSet::Change &change = array->at(index); diff --git a/src/qml/types/qqmllistmodel.cpp b/src/qml/types/qqmllistmodel.cpp index 71b7328411..debf14df97 100644 --- a/src/qml/types/qqmllistmodel.cpp +++ b/src/qml/types/qqmllistmodel.cpp @@ -2542,7 +2542,7 @@ void QQmlListModel::append(QQmlV4Function *args) QQmlV4Handle QQmlListModel::get(int index) const { QV4::Scope scope(engine()); - QV4::ScopedValue result(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue result(scope, QV4::Value::undefinedValue()); if (index >= 0 && index < count()) { diff --git a/src/qml/types/qquickworkerscript.cpp b/src/qml/types/qquickworkerscript.cpp index cf3bead048..fe51f8ec47 100644 --- a/src/qml/types/qquickworkerscript.cpp +++ b/src/qml/types/qquickworkerscript.cpp @@ -191,7 +191,7 @@ QV4::ReturnedValue QQuickWorkerScriptEnginePrivate::method_sendMessage(const QV4 QV4::Scope scope(b); WorkerScript *script = static_cast<WorkerScript *>(scope.engine->v8Engine); - QV4::ScopedValue v(scope, argc > 0 ? argv[0] : QV4::Primitive::undefinedValue()); + QV4::ScopedValue v(scope, argc > 0 ? argv[0] : QV4::Value::undefinedValue()); QByteArray data = QV4::Serialize::serialize(v, scope.engine); QMutexLocker locker(&script->p->m_lock); @@ -600,7 +600,7 @@ void QQuickWorkerScript::sendMessage(QQmlV4Function *args) } QV4::Scope scope(args->v4engine()); - QV4::ScopedValue argument(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue argument(scope, QV4::Value::undefinedValue()); if (args->length() != 0) argument = (*args)[0]; diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index eee64c9663..06dddabb65 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -735,7 +735,7 @@ void QQuickCanvasItem::updatePolish() for (auto it = animationCallbacks.cbegin(), end = animationCallbacks.cend(); it != end; ++it) { function = it.value().value(); - jsCall->args[0] = QV4::Primitive::fromUInt32(QDateTime::currentMSecsSinceEpoch() / 1000); + jsCall->args[0] = QV4::Value::fromUInt32(QDateTime::currentMSecsSinceEpoch() / 1000); function->call(jsCall); } } diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index e4012941cd..32336b5baf 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -944,7 +944,7 @@ struct QQuickJSContext2DImageData : public QV4::Object void QV4::Heap::QQuickJSContext2DImageData::init() { Object::init(); - pixelData = QV4::Primitive::undefinedValue(); + pixelData = QV4::Value::undefinedValue(); QV4::Scope scope(internalClass->engine); QV4::ScopedObject o(scope, this); @@ -1412,7 +1412,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_fillStyle(const QV4::FunctionOb QV4::Scoped<QQuickJSContext2D> r(scope, thisObject->as<QQuickJSContext2D>()); CHECK_CONTEXT_SETTER(r) - QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Primitive::undefinedValue()); + QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Value::undefinedValue()); if (value->as<Object>()) { QColor color = scope.engine->toVariant(value, qMetaTypeId<QColor>()).value<QColor>(); @@ -1467,7 +1467,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_fillRule(const QV4::FunctionObj QV4::Scoped<QQuickJSContext2D> r(scope, thisObject->as<QQuickJSContext2D>()); CHECK_CONTEXT_SETTER(r) - QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Primitive::undefinedValue()); + QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Value::undefinedValue()); if ((value->isString() && value->toQString() == QLatin1String("WindingFill")) || (value->isInt32() && value->integerValue() == Qt::WindingFill)) { @@ -1521,7 +1521,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_strokeStyle(const QV4::Function QV4::Scoped<QQuickJSContext2D> r(scope, thisObject->as<QQuickJSContext2D>()); CHECK_CONTEXT_SETTER(r) - QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Primitive::undefinedValue()); + QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Value::undefinedValue()); if (value->as<Object>()) { QColor color = scope.engine->toVariant(value, qMetaTypeId<QColor>()).value<QColor>(); @@ -1986,7 +1986,7 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_getLineDash(const QV4::Fun QV4::ScopedArrayObject array(scope, scope.engine->newArrayObject(pattern.size())); array->arrayReserve(pattern.size()); for (int i = 0; i < pattern.size(); i++) - array->put(i, QV4::Primitive::fromDouble(pattern[i])); + array->put(i, QV4::Value::fromDouble(pattern[i])); array->setArrayLengthUnchecked(pattern.size()); @@ -2218,7 +2218,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_path(const QV4::FunctionObject QV4::Scoped<QQuickJSContext2D> r(scope, *thisObject); CHECK_CONTEXT_SETTER(r) - QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Primitive::undefinedValue()); + QV4::ScopedValue value(scope, argc ? argv[0] : QV4::Value::undefinedValue()); r->d()->context->beginPath(); QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, value); if (!!qobjectWrapper) { @@ -2715,7 +2715,7 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_isPointInPath(const QV4::F bool pointInPath = false; if (argc >= 2) pointInPath = r->d()->context->isPointInPath(argv[0].toNumber(), argv[1].toNumber()); - RETURN_RESULT(QV4::Primitive::fromBoolean(pointInPath).asReturnedValue()); + RETURN_RESULT(QV4::Value::fromBoolean(pointInPath).asReturnedValue()); } QV4::ReturnedValue QQuickJSContext2DPrototype::method_drawFocusRing(const QV4::FunctionObject *b, const QV4::Value *, const QV4::Value *, int) @@ -2774,7 +2774,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_font(const QV4::FunctionObject QV4::Scoped<QQuickJSContext2D> r(scope, *thisObject); CHECK_CONTEXT_SETTER(r) - QV4::ScopedString s(scope, argc ? argv[0] : QV4::Primitive::undefinedValue(), QV4::ScopedString::Convert); + QV4::ScopedString s(scope, argc ? argv[0] : QV4::Value::undefinedValue(), QV4::ScopedString::Convert); if (scope.engine->hasException) RETURN_UNDEFINED(); QFont font = qt_font_from_string(s->toQString(), r->d()->context->state.font); @@ -2826,7 +2826,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_textAlign(const QV4::FunctionOb QV4::Scoped<QQuickJSContext2D> r(scope, *thisObject); CHECK_CONTEXT_SETTER(r) - QV4::ScopedString s(scope, argc ? argv[0] : QV4::Primitive::undefinedValue(), QV4::ScopedString::Convert); + QV4::ScopedString s(scope, argc ? argv[0] : QV4::Value::undefinedValue(), QV4::ScopedString::Convert); if (scope.engine->hasException) RETURN_UNDEFINED(); QString textAlign = s->toQString(); @@ -2893,7 +2893,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_set_textBaseline(const QV4::Functio QV4::Scope scope(b); QV4::Scoped<QQuickJSContext2D> r(scope, *thisObject); CHECK_CONTEXT_SETTER(r) - QV4::ScopedString s(scope, argc ? argv[0] : QV4::Primitive::undefinedValue(), QV4::ScopedString::Convert); + QV4::ScopedString s(scope, argc ? argv[0] : QV4::Value::undefinedValue(), QV4::ScopedString::Convert); if (scope.engine->hasException) RETURN_UNDEFINED(); QString textBaseline = s->toQString(); @@ -2980,7 +2980,7 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_measureText(const QV4::Fun uint width = fm.width(argv[0].toQStringNoThrow()); QV4::ScopedObject tm(scope, scope.engine->newObject()); tm->put(QV4::ScopedString(scope, scope.engine->newIdentifier(QStringLiteral("width"))).getPointer(), - QV4::ScopedValue(scope, QV4::Primitive::fromDouble(width))); + QV4::ScopedValue(scope, QV4::Value::fromDouble(width))); RETURN_RESULT(*tm); } RETURN_UNDEFINED(); diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp index f32f25a42f..d0e29c204e 100644 --- a/src/quick/items/qquickloader.cpp +++ b/src/quick/items/qquickloader.cpp @@ -1002,7 +1002,7 @@ QUrl QQuickLoaderPrivate::resolveSourceUrl(QQmlV4Function *args) QV4::ReturnedValue QQuickLoaderPrivate::extractInitialPropertyValues(QQmlV4Function *args, QObject *loader, bool *error) { QV4::Scope scope(args->v4engine()); - QV4::ScopedValue valuemap(scope, QV4::Primitive::undefinedValue()); + QV4::ScopedValue valuemap(scope, QV4::Encode::undefined()); if (args->length() >= 2) { QV4::ScopedValue v(scope, (*args)[1]); if (!v->isObject() || v->as<QV4::ArrayObject>()) { |