aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-26 12:04:52 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-28 13:33:46 +0200
commitd2e2a5b59c617e6cf7236cf36e9c20fe9ea36fdb (patch)
tree1fc21beff4add85e68a61b7c88b5d5f928bec6e8
parent18d4794e3f614eec8594f6636d569af8bc112618 (diff)
Remove Value::fromString()
replaced with call to the GC safe ExceutionEngine::newString() method. Change-Id: I7258296e75ca724ff42b94a0d147bc33a05f8f68 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r--src/imports/localstorage/plugin.cpp4
-rw-r--r--src/qml/jsruntime/qv4context.cpp4
-rw-r--r--src/qml/jsruntime/qv4dateobject.cpp20
-rw-r--r--src/qml/jsruntime/qv4errorobject.cpp24
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4globalobject.cpp16
-rw-r--r--src/qml/jsruntime/qv4jsonobject.cpp10
-rw-r--r--src/qml/jsruntime/qv4numberobject.cpp12
-rw-r--r--src/qml/jsruntime/qv4objectproto.cpp6
-rw-r--r--src/qml/jsruntime/qv4qobjectwrapper.cpp4
-rw-r--r--src/qml/jsruntime/qv4regexpobject.cpp4
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp2
-rw-r--r--src/qml/jsruntime/qv4scopedvalue_p.h13
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp8
-rw-r--r--src/qml/jsruntime/qv4stringobject.cpp50
-rw-r--r--src/qml/jsruntime/qv4value.cpp10
-rw-r--r--src/qml/jsruntime/qv4value_def_p.h7
-rw-r--r--src/qml/qml/qqmllocale.cpp32
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp5
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp26
-rw-r--r--src/qml/qml/v8/qv4domerrors_p.h2
-rw-r--r--src/qml/qml/v8/qv8engine.cpp4
-rw-r--r--src/quick/items/qquickdroparea.cpp2
23 files changed, 141 insertions, 126 deletions
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp
index 3cb0141986..0060613e93 100644
--- a/src/imports/localstorage/plugin.cpp
+++ b/src/imports/localstorage/plugin.cpp
@@ -65,14 +65,14 @@
using namespace QV4;
#define V4THROW_SQL(error, desc) { \
- QV4::Scoped<String> v(scope, Value::fromString(ctx, desc)); \
+ QV4::Scoped<String> v(scope, ctx->engine->newString(desc)); \
QV4::Scoped<Object> ex(scope, ctx->engine->newErrorObject(v)); \
ex->put(QV4::ScopedString(scope, ctx->engine->newIdentifier(QStringLiteral("code"))), QV4::ScopedValue(scope, Primitive::fromInt32(error))); \
ctx->throwError(ex); \
}
#define V4THROW_REFERENCE(string) { \
- QV4::Scoped<String> v(scope, Value::fromString(ctx, string)); \
+ QV4::Scoped<String> v(scope, ctx->engine->newString(string)); \
ctx->throwReferenceError(v); \
}
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp
index d8990bf8be..aa0688ee9b 100644
--- a/src/qml/jsruntime/qv4context.cpp
+++ b/src/qml/jsruntime/qv4context.cpp
@@ -604,7 +604,7 @@ void ExecutionContext::throwError(const ValueRef value)
void ExecutionContext::throwError(const QString &message)
{
Scope scope(this);
- ScopedValue v(scope, Value::fromString(this, message));
+ ScopedValue v(scope, engine->newString(message));
v = engine->newErrorObject(v);
throwError(v);
}
@@ -640,7 +640,7 @@ void ExecutionContext::throwTypeError(const QString &message)
void ExecutionContext::throwUnimplemented(const QString &message)
{
Scope scope(this);
- ScopedValue v(scope, Value::fromString(this, QStringLiteral("Unimplemented ") + message));
+ ScopedValue v(scope, engine->newString(QStringLiteral("Unimplemented ") + message));
v = engine->newErrorObject(v);
throwError(v);
}
diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp
index d18f3eb681..cb5c37d421 100644
--- a/src/qml/jsruntime/qv4dateobject.cpp
+++ b/src/qml/jsruntime/qv4dateobject.cpp
@@ -698,7 +698,7 @@ ReturnedValue DateCtor::construct(Managed *m, CallData *callData)
ReturnedValue DateCtor::call(Managed *m, CallData *)
{
double t = currentTime();
- return Value::fromString(m->engine()->current, ToString(t)).asReturnedValue();
+ return m->engine()->newString(ToString(t))->asReturnedValue();
}
void DatePrototype::init(ExecutionEngine *engine, const Value &ctor)
@@ -807,37 +807,37 @@ ReturnedValue DatePrototype::method_now(SimpleCallContext *ctx)
ReturnedValue DatePrototype::method_toString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToString(t)).asReturnedValue();
+ return ctx->engine->newString(ToString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_toDateString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToDateString(t)).asReturnedValue();
+ return ctx->engine->newString(ToDateString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_toTimeString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToTimeString(t)).asReturnedValue();
+ return ctx->engine->newString(ToTimeString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_toLocaleString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToLocaleString(t)).asReturnedValue();
+ return ctx->engine->newString(ToLocaleString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_toLocaleDateString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToLocaleDateString(t)).asReturnedValue();
+ return ctx->engine->newString(ToLocaleDateString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_toLocaleTimeString(SimpleCallContext *ctx)
{
double t = getThisDate(ctx);
- return Value::fromString(ctx, ToLocaleTimeString(t)).asReturnedValue();
+ return ctx->engine->newString(ToLocaleTimeString(t))->asReturnedValue();
}
ReturnedValue DatePrototype::method_valueOf(SimpleCallContext *ctx)
@@ -1242,7 +1242,7 @@ ReturnedValue DatePrototype::method_toUTCString(SimpleCallContext *ctx)
ctx->throwTypeError();
double t = self->value.asDouble();
- return Value::fromString(ctx, ToUTCString(t)).asReturnedValue();
+ return ctx->engine->newString(ToUTCString(t))->asReturnedValue();
}
static void addZeroPrefixedInt(QString &str, int num, int nDigits)
@@ -1272,7 +1272,7 @@ ReturnedValue DatePrototype::method_toISOString(SimpleCallContext *ctx)
int year = (int)YearFromTime(t);
if (year < 0 || year > 9999) {
if (qAbs(year) >= 1000000)
- return Value::fromString(ctx, QStringLiteral("Invalid Date")).asReturnedValue();
+ return ctx->engine->newString(QStringLiteral("Invalid Date"))->asReturnedValue();
result += year < 0 ? '-' : '+';
year = qAbs(year);
addZeroPrefixedInt(result, year, 6);
@@ -1293,7 +1293,7 @@ ReturnedValue DatePrototype::method_toISOString(SimpleCallContext *ctx)
addZeroPrefixedInt(result, msFromTime(t), 3);
result += 'Z';
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
ReturnedValue DatePrototype::method_toJSON(SimpleCallContext *ctx)
diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp
index 21917a94f0..88c47a0c3a 100644
--- a/src/qml/jsruntime/qv4errorobject.cpp
+++ b/src/qml/jsruntime/qv4errorobject.cpp
@@ -82,7 +82,8 @@ ErrorObject::ErrorObject(InternalClass *ic)
Scope scope(engine());
ScopedValue protectThis(scope, this);
- defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, "Error"));
+ ScopedString s(scope, ic->engine->newString("Error"));
+ defineDefaultProperty(QStringLiteral("name"), s.asValue());
}
ErrorObject::ErrorObject(InternalClass *ic, const ValueRef message, ErrorType t)
@@ -100,11 +101,12 @@ ErrorObject::ErrorObject(InternalClass *ic, const ValueRef message, ErrorType t)
if (!message->isUndefined())
defineDefaultProperty(QStringLiteral("message"), *message);
- defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, className()));
+ ScopedString s(scope);
+ defineDefaultProperty(QStringLiteral("name"), (s = ic->engine->newString(className())).asValue());
stackTrace = ic->engine->stackTrace();
if (!stackTrace.isEmpty()) {
- defineDefaultProperty(QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source));
+ defineDefaultProperty(QStringLiteral("fileName"), (s = ic->engine->newString(stackTrace.at(0).source)).asValue());
defineDefaultProperty(QStringLiteral("lineNumber"), Primitive::fromInt32(stackTrace.at(0).line));
}
}
@@ -119,16 +121,17 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, ErrorObject:
Scope scope(engine());
ScopedValue protectThis(scope, this);
+ ScopedString s(scope);
defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0);
ScopedValue v(scope, ic->engine->newString(message));
defineDefaultProperty(QStringLiteral("message"), v);
- defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, className()));
+ defineDefaultProperty(QStringLiteral("name"), (s = ic->engine->newString(className())).asValue());
stackTrace = ic->engine->stackTrace();
if (!stackTrace.isEmpty()) {
- defineDefaultProperty(QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source));
+ defineDefaultProperty(QStringLiteral("fileName"), (s = ic->engine->newString(stackTrace.at(0).source)).asValue());
defineDefaultProperty(QStringLiteral("lineNumber"), Primitive::fromInt32(stackTrace.at(0).line));
}
}
@@ -143,9 +146,10 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QStrin
Scope scope(engine());
ScopedValue protectThis(scope, this);
+ ScopedString s(scope);
defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0);
- defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, className()));
+ defineDefaultProperty(QStringLiteral("name"), (s = ic->engine->newString(className())).asValue());
stackTrace = ic->engine->stackTrace();
ExecutionEngine::StackFrame frame;
@@ -155,7 +159,7 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QStrin
stackTrace.prepend(frame);
if (!stackTrace.isEmpty()) {
- defineDefaultProperty(QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source));
+ defineDefaultProperty(QStringLiteral("fileName"), (s = ic->engine->newString(stackTrace.at(0).source)).asValue());
defineDefaultProperty(QStringLiteral("lineNumber"), Primitive::fromInt32(stackTrace.at(0).line));
}
@@ -368,11 +372,13 @@ ReturnedValue URIErrorCtor::construct(Managed *m, CallData *callData)
void ErrorPrototype::init(ExecutionEngine *engine, const Value &ctor, Object *obj)
{
+ Scope scope(engine);
+ ScopedString s(scope);
ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(obj));
ctor.objectValue()->defineReadonlyProperty(engine->id_length, Primitive::fromInt32(1));
obj->defineDefaultProperty(QStringLiteral("constructor"), ctor);
obj->defineDefaultProperty(engine->id_toString, method_toString, 0);
- obj->defineDefaultProperty(QStringLiteral("message"), Value::fromString(engine, QString()));
+ obj->defineDefaultProperty(QStringLiteral("message"), (s = engine->newString(QString())).asValue());
}
ReturnedValue ErrorPrototype::method_toString(SimpleCallContext *ctx)
@@ -405,5 +411,5 @@ ReturnedValue ErrorPrototype::method_toString(SimpleCallContext *ctx)
str = qname + QLatin1String(": ") + qmessage;
}
- return Value::fromString(ctx, str).asReturnedValue();
+ return ctx->engine->newString(str)->asReturnedValue();
}
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp
index fbc5c10e3c..888be1733e 100644
--- a/src/qml/jsruntime/qv4functionobject.cpp
+++ b/src/qml/jsruntime/qv4functionobject.cpp
@@ -313,7 +313,7 @@ ReturnedValue FunctionPrototype::method_toString(SimpleCallContext *ctx)
if (!fun)
ctx->throwTypeError();
- return Value::fromString(ctx, QStringLiteral("function() { [code] }")).asReturnedValue();
+ return ctx->engine->newString(QStringLiteral("function() { [code] }"))->asReturnedValue();
}
ReturnedValue FunctionPrototype::method_apply(SimpleCallContext *ctx)
diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp
index 4cb351eeb0..856b85cc1c 100644
--- a/src/qml/jsruntime/qv4globalobject.cpp
+++ b/src/qml/jsruntime/qv4globalobject.cpp
@@ -605,7 +605,7 @@ ReturnedValue GlobalFunctions::method_decodeURI(SimpleCallContext *context)
context->throwURIError(s);
}
- return Value::fromString(context, out).asReturnedValue();
+ return context->engine->newString(out)->asReturnedValue();
}
/// decodeURIComponent [15.1.3.2]
@@ -623,7 +623,7 @@ ReturnedValue GlobalFunctions::method_decodeURIComponent(SimpleCallContext *cont
context->throwURIError(s);
}
- return Value::fromString(context, out).asReturnedValue();
+ return context->engine->newString(out)->asReturnedValue();
}
/// encodeURI [15.1.3.3]
@@ -641,7 +641,7 @@ ReturnedValue GlobalFunctions::method_encodeURI(SimpleCallContext *context)
context->throwURIError(s);
}
- return Value::fromString(context, out).asReturnedValue();
+ return context->engine->newString(out)->asReturnedValue();
}
/// encodeURIComponent [15.1.3.4]
@@ -659,23 +659,23 @@ ReturnedValue GlobalFunctions::method_encodeURIComponent(SimpleCallContext *cont
context->throwURIError(s);
}
- return Value::fromString(context, out).asReturnedValue();
+ return context->engine->newString(out)->asReturnedValue();
}
ReturnedValue GlobalFunctions::method_escape(SimpleCallContext *context)
{
if (!context->callData->argc)
- return Value::fromString(context, QStringLiteral("undefined")).asReturnedValue();
+ return context->engine->newString(QStringLiteral("undefined"))->asReturnedValue();
QString str = context->callData->args[0].toString(context)->toQString();
- return Value::fromString(context, escape(str)).asReturnedValue();
+ return context->engine->newString(escape(str))->asReturnedValue();
}
ReturnedValue GlobalFunctions::method_unescape(SimpleCallContext *context)
{
if (!context->callData->argc)
- return Value::fromString(context, QStringLiteral("undefined")).asReturnedValue();
+ return context->engine->newString(QStringLiteral("undefined"))->asReturnedValue();
QString str = context->callData->args[0].toString(context)->toQString();
- return Value::fromString(context, unescape(str)).asReturnedValue();
+ return context->engine->newString(unescape(str))->asReturnedValue();
}
diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp
index b6429278c2..53bdb6d630 100644
--- a/src/qml/jsruntime/qv4jsonobject.cpp
+++ b/src/qml/jsruntime/qv4jsonobject.cpp
@@ -400,7 +400,7 @@ bool JsonParser::parseValue(ValueRef val)
return false;
DEBUG << "value: string";
END;
- *val = Value::fromString(context, value);
+ val = context->engine->newString(value);
return true;
}
case BeginArray: {
@@ -709,7 +709,7 @@ QString Stringify::Str(const QString &key, Value value)
if (!!toJSON) {
ScopedCallData callData(scope, 1);
callData->thisObject = value;
- callData->args[0] = Value::fromString(ctx, key);
+ callData->args[0] = ctx->engine->newString(key);
value = Value::fromReturnedValue(toJSON->call(callData));
}
}
@@ -719,7 +719,7 @@ QString Stringify::Str(const QString &key, Value value)
ScopedValue v(scope, value);
holder->put(ctx, QString(), v);
ScopedCallData callData(scope, 2);
- callData->args[0] = Value::fromString(ctx, key);
+ callData->args[0] = ctx->engine->newString(key);
callData->args[1] = value;
callData->thisObject = holder;
value = Value::fromReturnedValue(replacerFunction->call(callData));
@@ -940,7 +940,7 @@ ReturnedValue JsonObject::method_stringify(SimpleCallContext *ctx)
QString result = stringify.Str(QString(), arg0);
if (result.isEmpty())
return Encode::undefined();
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
@@ -948,7 +948,7 @@ ReturnedValue JsonObject::method_stringify(SimpleCallContext *ctx)
ReturnedValue JsonObject::fromJsonValue(ExecutionEngine *engine, const QJsonValue &value)
{
if (value.isString())
- return Value::fromString(engine->current, value.toString()).asReturnedValue();
+ return engine->current->engine->newString(value.toString())->asReturnedValue();
else if (value.isDouble())
return Encode(value.toDouble());
else if (value.isBool())
diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp
index 9bf0d506f4..38cf899427 100644
--- a/src/qml/jsruntime/qv4numberobject.cpp
+++ b/src/qml/jsruntime/qv4numberobject.cpp
@@ -121,9 +121,9 @@ ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx)
}
if (std::isnan(num)) {
- return Value::fromString(ctx, QStringLiteral("NaN")).asReturnedValue();
+ return ctx->engine->newString(QStringLiteral("NaN"))->asReturnedValue();
} else if (qIsInf(num)) {
- return Value::fromString(ctx, QLatin1String(num < 0 ? "-Infinity" : "Infinity")).asReturnedValue();
+ return ctx->engine->newString(QLatin1String(num < 0 ? "-Infinity" : "Infinity"))->asReturnedValue();
}
if (radix != 10) {
@@ -153,7 +153,7 @@ ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx)
}
if (negative)
str.prepend(QLatin1Char('-'));
- return Value::fromString(ctx, str).asReturnedValue();
+ return ctx->engine->newString(str)->asReturnedValue();
}
}
@@ -198,7 +198,7 @@ ReturnedValue NumberPrototype::method_toFixed(SimpleCallContext *ctx)
str = QString::number(v, 'f', int (fdigits));
else
return __qmljs_string_from_number(ctx, v)->asReturnedValue();
- return Value::fromString(ctx, str).asReturnedValue();
+ return ctx->engine->newString(str)->asReturnedValue();
}
ReturnedValue NumberPrototype::method_toExponential(SimpleCallContext *ctx)
@@ -221,7 +221,7 @@ ReturnedValue NumberPrototype::method_toExponential(SimpleCallContext *ctx)
double_conversion::DoubleToStringConverter::EcmaScriptConverter().ToExponential(d, fdigits, &builder);
QString result = QString::fromLatin1(builder.Finalize());
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
ReturnedValue NumberPrototype::method_toPrecision(SimpleCallContext *ctx)
@@ -244,5 +244,5 @@ ReturnedValue NumberPrototype::method_toPrecision(SimpleCallContext *ctx)
double_conversion::DoubleToStringConverter::EcmaScriptConverter().ToPrecision(v->asDouble(), precision, &builder);
QString result = QString::fromLatin1(builder.Finalize());
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp
index fb47c4a15e..49bee363a3 100644
--- a/src/qml/jsruntime/qv4objectproto.cpp
+++ b/src/qml/jsruntime/qv4objectproto.cpp
@@ -388,13 +388,13 @@ ReturnedValue ObjectPrototype::method_toString(SimpleCallContext *ctx)
{
Scope scope(ctx);
if (ctx->callData->thisObject.isUndefined()) {
- return Value::fromString(ctx, QStringLiteral("[object Undefined]")).asReturnedValue();
+ return ctx->engine->newString(QStringLiteral("[object Undefined]"))->asReturnedValue();
} else if (ctx->callData->thisObject.isNull()) {
- return Value::fromString(ctx, QStringLiteral("[object Null]")).asReturnedValue();
+ return ctx->engine->newString(QStringLiteral("[object Null]"))->asReturnedValue();
} else {
ScopedObject obj(scope, __qmljs_to_object(ctx, ValueRef(&ctx->callData->thisObject)));
QString className = obj->className();
- return Value::fromString(ctx, QString::fromUtf8("[object %1]").arg(className)).asReturnedValue();
+ return ctx->engine->newString(QString::fromUtf8("[object %1]").arg(className))->asReturnedValue();
}
}
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp
index 6870cd693c..c206826cbc 100644
--- a/src/qml/jsruntime/qv4qobjectwrapper.cpp
+++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp
@@ -170,7 +170,7 @@ static QV4::ReturnedValue LoadProperty(QV8Engine *engine, QObject *object,
} else if (property.propType == QMetaType::QString) {
QString v;
ReadFunction(object, property, &v, notifier);
- return Value::fromString(v4, v).asReturnedValue();
+ return v4->newString(v)->asReturnedValue();
} else if (property.propType == QMetaType::UInt) {
uint v = 0;
ReadFunction(object, property, &v, notifier);
@@ -1680,7 +1680,7 @@ QV4::ReturnedValue QObjectMethod::method_toString(QV4::ExecutionContext *ctx)
result = QLatin1String("null");
}
- return QV4::Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
QV4::ReturnedValue QObjectMethod::method_destroy(QV4::ExecutionContext *ctx, const Value *args, int argc)
diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp
index b3dec63d53..126188fcb7 100644
--- a/src/qml/jsruntime/qv4regexpobject.cpp
+++ b/src/qml/jsruntime/qv4regexpobject.cpp
@@ -332,7 +332,7 @@ ReturnedValue RegExpPrototype::method_exec(SimpleCallContext *ctx)
for (int i = 0; i < len; ++i) {
int start = matchOffsets[i * 2];
int end = matchOffsets[i * 2 + 1];
- array->arrayData[i].value = (start != -1 && end != -1) ? Value::fromString(ctx, s.mid(start, end - start)) : Primitive::undefinedValue();
+ array->arrayData[i].value = (start != -1 && end != -1) ? ctx->engine->newString(s.mid(start, end - start))->asReturnedValue() : Encode::undefined();
array->arrayDataLen = i + 1;
}
array->setArrayLengthUnchecked(len);
@@ -360,7 +360,7 @@ ReturnedValue RegExpPrototype::method_toString(SimpleCallContext *ctx)
if (!r)
ctx->throwTypeError();
- return Value::fromString(ctx, r->toString()).asReturnedValue();
+ return ctx->engine->newString(r->toString())->asReturnedValue();
}
ReturnedValue RegExpPrototype::method_compile(SimpleCallContext *ctx)
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index 0d7be34e74..8d1171a18b 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -677,7 +677,7 @@ ReturnedValue __qmljs_get_element(ExecutionContext *ctx, const ValueRef object,
return Primitive::undefinedValue().asReturnedValue();
}
const QString s = str->toQString().mid(idx, 1);
- return Value::fromString(ctx, s).asReturnedValue();
+ return scope.engine->newString(s)->asReturnedValue();
}
}
diff --git a/src/qml/jsruntime/qv4scopedvalue_p.h b/src/qml/jsruntime/qv4scopedvalue_p.h
index 775225a83b..b629c2fa54 100644
--- a/src/qml/jsruntime/qv4scopedvalue_p.h
+++ b/src/qml/jsruntime/qv4scopedvalue_p.h
@@ -406,6 +406,11 @@ struct ValueRef {
ptr->val = v;
return *this;
}
+ template <typename T>
+ ValueRef &operator=(Returned<T> *v) {
+ ptr->val = v->asReturnedValue();
+ return *this;
+ }
operator const Value *() const {
return ptr;
@@ -583,6 +588,14 @@ private:
Encode(void *);
};
+
+template <typename T>
+inline Value &Value::operator=(Returned<T> *t)
+{
+ val = t->getPointer()->asReturnedValue();
+ return *this;
+}
+
inline SafeValue &SafeValue::operator =(const ScopedValue &v)
{
val = v.ptr->val;
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 4ec5644352..f864d4dabf 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -81,7 +81,9 @@ static void generateWarning(QV4::ExecutionContext *ctx, const QString& descripti
static QV4::Value convertElementToValue(QV4::ExecutionEngine *engine, const QString &element)
{
- return QV4::Value::fromString(engine, element);
+ QV4::Value v;
+ v = engine->newString(element)->asReturnedValue();
+ return v;
}
static QV4::Value convertElementToValue(QV4::ExecutionEngine *, int element)
@@ -91,7 +93,9 @@ static QV4::Value convertElementToValue(QV4::ExecutionEngine *, int element)
static QV4::Value convertElementToValue(QV4::ExecutionEngine *engine, const QUrl &element)
{
- return QV4::Value::fromString(engine, element.toString());
+ QV4::Value v;
+ v = engine->newString(element.toString())->asReturnedValue();
+ return v;
}
static QV4::Value convertElementToValue(QV4::ExecutionEngine *, qreal element)
diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp
index af6e92105f..adff8e3978 100644
--- a/src/qml/jsruntime/qv4stringobject.cpp
+++ b/src/qml/jsruntime/qv4stringobject.cpp
@@ -78,10 +78,11 @@ using namespace QV4;
DEFINE_MANAGED_VTABLE(StringObject);
StringObject::StringObject(InternalClass *ic)
- : Object(ic), value(Value::fromString(ic->engine, ""))
+ : Object(ic)
{
vtbl = &static_vtbl;
type = Type_StringObject;
+ value = ic->engine->newString("")->asReturnedValue();
tmpProperty.value = Primitive::undefinedValue();
@@ -171,7 +172,7 @@ ReturnedValue StringCtor::construct(Managed *m, CallData *callData)
if (callData->argc)
value = callData->args[0].toString(v4->current);
else
- value = Value::fromString(v4->current, QString());
+ value = v4->newString(QString());
return Encode(v4->newStringObject(value));
}
@@ -183,7 +184,7 @@ ReturnedValue StringCtor::call(Managed *m, CallData *callData)
if (callData->argc)
value = callData->args[0].toString(v4->current);
else
- value = Value::fromString(v4->current, QString());
+ value = v4->newString(QString());
return value.asReturnedValue();
}
@@ -252,7 +253,7 @@ ReturnedValue StringPrototype::method_charAt(SimpleCallContext *context)
if (pos >= 0 && pos < str.length())
result += str.at(pos);
- return Value::fromString(context, result).asReturnedValue();
+ return context->engine->newString(result)->asReturnedValue();
}
ReturnedValue StringPrototype::method_charCodeAt(SimpleCallContext *context)
@@ -283,7 +284,7 @@ ReturnedValue StringPrototype::method_concat(SimpleCallContext *context)
value += v->stringValue()->toQString();
}
- return Value::fromString(context, value).asReturnedValue();
+ return context->engine->newString(value)->asReturnedValue();
}
ReturnedValue StringPrototype::method_indexOf(SimpleCallContext *context)
@@ -513,21 +514,22 @@ ReturnedValue StringPrototype::method_replace(SimpleCallContext *ctx)
ScopedCallData callData(scope, numCaptures + 2);
callData->thisObject = Primitive::undefinedValue();
int lastEnd = 0;
+ ScopedValue entry(scope);
for (int i = 0; i < numStringMatches; ++i) {
for (int k = 0; k < numCaptures; ++k) {
int idx = (i * numCaptures + k) * 2;
uint start = matchOffsets[idx];
uint end = matchOffsets[idx + 1];
- Value entry = Primitive::undefinedValue();
+ entry = Primitive::undefinedValue();
if (start != JSC::Yarr::offsetNoMatch && end != JSC::Yarr::offsetNoMatch)
- entry = Value::fromString(ctx, string.mid(start, end - start));
+ entry = ctx->engine->newString(string.mid(start, end - start));
callData->args[k] = entry;
}
uint matchStart = matchOffsets[i * numCaptures * 2];
Q_ASSERT(matchStart >= lastEnd);
uint matchEnd = matchOffsets[i * numCaptures * 2 + 1];
callData->args[numCaptures] = Primitive::fromUInt32(matchStart);
- callData->args[numCaptures + 1] = Value::fromString(ctx, string);
+ callData->args[numCaptures + 1] = ctx->engine->newString(string);
replacement = searchCallback->call(callData);
result += string.midRef(lastEnd, matchStart - lastEnd);
@@ -557,7 +559,7 @@ ReturnedValue StringPrototype::method_replace(SimpleCallContext *ctx)
if (matchOffsets != _matchOffsets)
free(matchOffsets);
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
ReturnedValue StringPrototype::method_search(SimpleCallContext *ctx)
@@ -604,7 +606,7 @@ ReturnedValue StringPrototype::method_slice(SimpleCallContext *ctx)
const int intEnd = int(end);
int count = qMax(0, intEnd - intStart);
- return Value::fromString(ctx, text.mid(intStart, count)).asReturnedValue();
+ return ctx->engine->newString(text.mid(intStart, count))->asReturnedValue();
}
ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx)
@@ -623,7 +625,7 @@ ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx)
array->push_back(s);
return array.asReturnedValue();
}
- return Value::fromString(ctx, text.left(limitValue->toInteger())).asReturnedValue();
+ return ctx->engine->newString(text.left(limitValue->toInteger()))->asReturnedValue();
}
uint limit = limitValue->isUndefined() ? UINT_MAX : limitValue->toUInt32();
@@ -635,7 +637,7 @@ ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx)
if (re) {
if (re->value->pattern().isEmpty()) {
re = (RegExpObject *)0;
- separatorValue = Value::fromString(ctx, QString());
+ separatorValue = ctx->engine->newString(QString());
}
}
@@ -648,7 +650,7 @@ ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx)
if (result == JSC::Yarr::offsetNoMatch)
break;
- array->push_back((s = Value::fromString(ctx, text.mid(offset, matchOffsets[0] - offset))));
+ array->push_back((s = ctx->engine->newString(text.mid(offset, matchOffsets[0] - offset))));
offset = qMax(offset + 1, matchOffsets[1]);
if (array->arrayLength() >= limit)
@@ -657,31 +659,31 @@ ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx)
for (int i = 1; i < re->value->captureCount(); ++i) {
uint start = matchOffsets[i * 2];
uint end = matchOffsets[i * 2 + 1];
- array->push_back((s = Value::fromString(ctx, text.mid(start, end - start))));
+ array->push_back((s = ctx->engine->newString(text.mid(start, end - start))));
if (array->arrayLength() >= limit)
break;
}
}
if (array->arrayLength() < limit)
- array->push_back((s = Value::fromString(ctx, text.mid(offset))));
+ array->push_back((s = ctx->engine->newString(text.mid(offset))));
} else {
QString separator = separatorValue->toString(ctx)->toQString();
if (separator.isEmpty()) {
for (uint i = 0; i < qMin(limit, uint(text.length())); ++i)
- array->push_back((s = Value::fromString(ctx, text.mid(i, 1))));
+ array->push_back((s = ctx->engine->newString(text.mid(i, 1))));
return array.asReturnedValue();
}
int start = 0;
int end;
while ((end = text.indexOf(separator, start)) != -1) {
- array->push_back((s = Value::fromString(ctx, text.mid(start, end - start))));
+ array->push_back((s = ctx->engine->newString(text.mid(start, end - start))));
start = end + separator.size();
if (array->arrayLength() >= limit)
break;
}
if (array->arrayLength() < limit && start != -1)
- array->push_back((s = Value::fromString(ctx, text.mid(start))));
+ array->push_back((s = ctx->engine->newString(text.mid(start))));
}
return array.asReturnedValue();
}
@@ -706,7 +708,7 @@ ReturnedValue StringPrototype::method_substr(SimpleCallContext *context)
qint32 x = Primitive::toInt32(start);
qint32 y = Primitive::toInt32(length);
- return Value::fromString(context, value.mid(x, y)).asReturnedValue();
+ return context->engine->newString(value.mid(x, y))->asReturnedValue();
}
ReturnedValue StringPrototype::method_substring(SimpleCallContext *context)
@@ -745,13 +747,13 @@ ReturnedValue StringPrototype::method_substring(SimpleCallContext *context)
qint32 x = (int)start;
qint32 y = (int)(end - start);
- return Value::fromString(context, value.mid(x, y)).asReturnedValue();
+ return context->engine->newString(value.mid(x, y))->asReturnedValue();
}
ReturnedValue StringPrototype::method_toLowerCase(SimpleCallContext *ctx)
{
QString value = getThisString(ctx);
- return Value::fromString(ctx, value.toLower()).asReturnedValue();
+ return ctx->engine->newString(value.toLower())->asReturnedValue();
}
ReturnedValue StringPrototype::method_toLocaleLowerCase(SimpleCallContext *ctx)
@@ -762,7 +764,7 @@ ReturnedValue StringPrototype::method_toLocaleLowerCase(SimpleCallContext *ctx)
ReturnedValue StringPrototype::method_toUpperCase(SimpleCallContext *ctx)
{
QString value = getThisString(ctx);
- return Value::fromString(ctx, value.toUpper()).asReturnedValue();
+ return ctx->engine->newString(value.toUpper())->asReturnedValue();
}
ReturnedValue StringPrototype::method_toLocaleUpperCase(SimpleCallContext *ctx)
@@ -778,7 +780,7 @@ ReturnedValue StringPrototype::method_fromCharCode(SimpleCallContext *context)
*ch = QChar(context->callData->args[i].toUInt16());
++ch;
}
- return Value::fromString(context, str).asReturnedValue();
+ return context->engine->newString(str)->asReturnedValue();
}
ReturnedValue StringPrototype::method_trim(SimpleCallContext *ctx)
@@ -796,5 +798,5 @@ ReturnedValue StringPrototype::method_trim(SimpleCallContext *ctx)
break;
}
- return Value::fromString(ctx, QString(chars + start, end - start + 1)).asReturnedValue();
+ return ctx->engine->newString(QString(chars + start, end - start + 1))->asReturnedValue();
}
diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp
index 66e80cfa01..623f9ae3b6 100644
--- a/src/qml/jsruntime/qv4value.cpp
+++ b/src/qml/jsruntime/qv4value.cpp
@@ -202,16 +202,6 @@ bool Value::sameValue(Value other) const {
return false;
}
-Value Value::fromString(ExecutionContext *ctx, const QString &s)
-{
- return fromManaged(ctx->engine->newString(s)->getPointer());
-}
-
-Value Value::fromString(ExecutionEngine *engine, const QString &s)
-{
- return fromManaged(engine->newString(s)->getPointer());
-}
-
int Primitive::toInt32(double number)
{
diff --git a/src/qml/jsruntime/qv4value_def_p.h b/src/qml/jsruntime/qv4value_def_p.h
index b10a412555..bc73a85e04 100644
--- a/src/qml/jsruntime/qv4value_def_p.h
+++ b/src/qml/jsruntime/qv4value_def_p.h
@@ -277,11 +277,6 @@ struct Q_QML_EXPORT Value
static Value fromObject(Object *o);
static Value fromManaged(Managed *o);
-#ifndef QMLJS_LLVM_RUNTIME
- static Value fromString(ExecutionContext *ctx, const QString &fromString);
- static Value fromString(ExecutionEngine *engine, const QString &s);
-#endif
-
int toUInt16() const;
int toInt32() const;
unsigned int toUInt32() const;
@@ -324,6 +319,8 @@ struct Q_QML_EXPORT Value
ReturnedValue asReturnedValue() const { return val; }
static Value fromReturnedValue(ReturnedValue val) { Value v; v.val = val; return v; }
Value &operator=(ReturnedValue v) { val = v; return *this; }
+ template <typename T>
+ inline Value &operator=(Returned<T> *t);
// Section 9.12
bool sameValue(Value other) const;
diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp
index 97ab56256e..e79f1582d9 100644
--- a/src/qml/qml/qqmllocale.cpp
+++ b/src/qml/qml/qqmllocale.cpp
@@ -151,7 +151,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleString(QV4::SimpleCallConte
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(dt)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(dt))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -176,7 +176,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleString(QV4::SimpleCallConte
formattedDt = r->locale.toString(dt, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedDt).asReturnedValue();
+ return ctx->engine->newString(formattedDt)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallContext *ctx)
@@ -196,7 +196,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallC
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(time)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(time))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -221,7 +221,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallC
formattedTime = r->locale.toString(time, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedTime).asReturnedValue();
+ return ctx->engine->newString(formattedTime)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallContext *ctx)
@@ -241,7 +241,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallC
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(date)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(date))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -266,7 +266,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallC
formattedDate = r->locale.toString(date, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedDate).asReturnedValue();
+ return ctx->engine->newString(formattedDate)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_fromLocaleString(QV4::SimpleCallContext *ctx)
@@ -420,7 +420,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleString(QV4::SimpleCallCon
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(number)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(number))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -445,7 +445,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleString(QV4::SimpleCallCon
prec = ctx->callData->args[2].toInt32();
}
- return QV4::Value::fromString(ctx, r->locale.toString(number, (char)format, prec)).asReturnedValue();
+ return ctx->engine->newString(r->locale.toString(number, (char)format, prec))->asReturnedValue();
}
QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::SimpleCallContext *ctx)
@@ -458,7 +458,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::Simpl
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(number)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(number))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -475,7 +475,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::Simpl
symbol = ctx->callData->args[1].toQStringNoThrow();
}
- return QV4::Value::fromString(ctx, r->locale.toCurrencyString(number, symbol)).asReturnedValue();
+ return ctx->engine->newString(r->locale.toCurrencyString(number, symbol))->asReturnedValue();
}
QV4::ReturnedValue QQmlNumberExtension::method_fromLocaleString(QV4::SimpleCallContext *ctx)
@@ -563,7 +563,7 @@ QV4::ReturnedValue QQmlLocaleData::method_get_uiLanguages(QV4::SimpleCallContext
QV4::Scoped<QV4::ArrayObject> result(scope, ctx->engine->newArrayObject());
result->arrayReserve(langs.size());
for (int i = 0; i < langs.size(); ++i) {
- result->arrayData[i].value = QV4::Value::fromString(ctx, langs.at(i));
+ result->arrayData[i].value = ctx->engine->newString(langs.at(i));
result->arrayDataLen = i + 1;
}
@@ -584,7 +584,7 @@ QV4::ReturnedValue QQmlLocaleData::method_currencySymbol(QV4::SimpleCallContext
format = QLocale::CurrencySymbolFormat(intFormat);
}
- return QV4::Value::fromString(ctx, locale.currencySymbol(format)).asReturnedValue();
+ return ctx->engine->newString(locale.currencySymbol(format))->asReturnedValue();
}
#define LOCALE_FORMAT(FUNC) \
@@ -597,7 +597,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ##FUNC (QV4::SimpleCallContext *ctx)
quint32 intFormat = ctx->callData->args[0].toUInt32(); \
format = QLocale::FormatType(intFormat); \
} \
- return QV4::Value::fromString(ctx, locale. FUNC (format)).asReturnedValue(); \
+ return ctx->engine->newString(locale. FUNC (format))->asReturnedValue(); \
}
LOCALE_FORMAT(dateTimeFormat)
@@ -626,7 +626,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *
} else { \
name = locale. VARIABLE(idx, enumFormat); \
} \
- return QV4::Value::fromString(ctx, name).asReturnedValue(); \
+ return ctx->engine->newString(name)->asReturnedValue(); \
}
// 0 -> 7 as Qt::Sunday is 7, but Sunday is 0 in JS Date
@@ -652,7 +652,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *
} else { \
name = locale. VARIABLE(idx, enumFormat); \
} \
- return QV4::Value::fromString(ctx, name).asReturnedValue(); \
+ return ctx->engine->newString(name)->asReturnedValue(); \
}
LOCALE_FORMATTED_MONTHNAME(monthName)
@@ -663,7 +663,7 @@ LOCALE_FORMATTED_DAYNAME(standaloneDayName)
#define LOCALE_STRING_PROPERTY(VARIABLE) QV4::ReturnedValue QQmlLocaleData::method_get_ ## VARIABLE (QV4::SimpleCallContext* ctx) \
{ \
QLocale locale = getThisLocale(ctx); \
- return QV4::Value::fromString(ctx, locale. VARIABLE()).asReturnedValue();\
+ return ctx->engine->newString(locale. VARIABLE())->asReturnedValue();\
}
LOCALE_STRING_PROPERTY(name)
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp
index 3b4e89861d..65edcad2cf 100644
--- a/src/qml/qml/qqmlobjectcreator.cpp
+++ b/src/qml/qml/qqmlobjectcreator.cpp
@@ -548,6 +548,8 @@ void QmlObjectCreator::setPropertyValue(QQmlPropertyData *property, const QV4::C
int propertyWriteStatus = -1;
void *argv[] = { 0, 0, &propertyWriteStatus, &propertyWriteFlags };
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine);
+ QV4::Scope scope(v4);
// ### enums
switch (property->propType) {
@@ -583,7 +585,8 @@ void QmlObjectCreator::setPropertyValue(QQmlPropertyData *property, const QV4::C
} else {
QString stringValue = binding->valueAsString(&qmlUnit->header);
if (property->isVarProperty()) {
- _vmeMetaObject->setVMEProperty(property->coreIndex, QV4::Value::fromString(QV8Engine::getV4(engine), stringValue));
+ QV4::ScopedString s(scope, v4->newString(stringValue));
+ _vmeMetaObject->setVMEProperty(property->coreIndex, s.asValue());
} else {
QVariant value = QQmlStringConverters::variantFromString(stringValue);
argv[0] = &value;
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index 121b0fbb78..638ff942ab 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -834,12 +834,12 @@ ReturnedValue QtObject::method_resolvedUrl(QV4::SimpleCallContext *ctx)
if (p) {
QQmlContextData *ctxt = v8engine->callingContext();
if (ctxt)
- return Value::fromString(ctx, ctxt->resolvedUrl(url).toString()).asReturnedValue();
+ return ctx->engine->newString(ctxt->resolvedUrl(url).toString())->asReturnedValue();
else
- return Value::fromString(ctx, url.toString()).asReturnedValue();
+ return ctx->engine->newString(url.toString())->asReturnedValue();
}
- return Value::fromString(ctx, e->baseUrl().resolved(url).toString()).asReturnedValue();
+ return ctx->engine->newString(e->baseUrl().resolved(url).toString())->asReturnedValue();
}
/*!
@@ -866,7 +866,7 @@ ReturnedValue QtObject::method_md5(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5);
- return Value::fromString(ctx, QLatin1String(result.toHex())).asReturnedValue();
+ return ctx->engine->newString(QLatin1String(result.toHex()))->asReturnedValue();
}
/*!
@@ -880,7 +880,7 @@ ReturnedValue QtObject::method_btoa(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
- return Value::fromString(ctx, QLatin1String(data.toBase64())).asReturnedValue();
+ return ctx->engine->newString(QLatin1String(data.toBase64()))->asReturnedValue();
}
/*!
@@ -894,7 +894,7 @@ ReturnedValue QtObject::method_atob(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toLatin1();
- return Value::fromString(ctx, QString::fromUtf8(QByteArray::fromBase64(data))).asReturnedValue();
+ return ctx->engine->newString(QString::fromUtf8(QByteArray::fromBase64(data)))->asReturnedValue();
}
/*!
@@ -1644,7 +1644,7 @@ ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx)
comment.toUtf8().constData(),
n);
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
/*!
@@ -1722,7 +1722,7 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx)
QString result = QCoreApplication::translate(context.toUtf8().constData(), text.toUtf8().constData(),
comment.toUtf8().constData(), n);
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
/*!
@@ -1797,7 +1797,7 @@ ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx)
if (ctx->callData->argc > 1)
n = ctx->callData->args[1].toInt32();
- return Value::fromString(ctx, qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue();
+ return ctx->engine->newString(qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n))->asReturnedValue();
}
/*!
@@ -1842,13 +1842,13 @@ ReturnedValue GlobalExtensions::method_string_arg(SimpleCallContext *ctx)
QV4::Value arg = ctx->callData->args[0];
if (arg.isInteger())
- return Value::fromString(ctx, value.arg(arg.integerValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.integerValue()))->asReturnedValue();
else if (arg.isDouble())
- return Value::fromString(ctx, value.arg(arg.doubleValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.doubleValue()))->asReturnedValue();
else if (arg.isBoolean())
- return Value::fromString(ctx, value.arg(arg.booleanValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.booleanValue()))->asReturnedValue();
- return Value::fromString(ctx, value.arg(arg.toQStringNoThrow())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.toQStringNoThrow()))->asReturnedValue();
}
diff --git a/src/qml/qml/v8/qv4domerrors_p.h b/src/qml/qml/v8/qv4domerrors_p.h
index 686678c093..44662e8cba 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 DOMEXCEPTION_TYPE_MISMATCH_ERR 17
#define V4THROW_DOM(error, string) { \
- QV4::ScopedValue v(scope, QV4::Value::fromString(ctx, QStringLiteral(string))); \
+ QV4::ScopedValue v(scope, ctx->engine->newString(QStringLiteral(string))); \
QV4::Scoped<Object> ex(scope, ctx->engine->newErrorObject(v)); \
ex->put(QV4::ScopedString(scope, ctx->engine->newIdentifier(QStringLiteral("code"))), QV4::ScopedValue(scope, QV4::Primitive::fromInt32(error))); \
ctx->throwError(ex); \
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
index 97cfb50212..20d81c2ac0 100644
--- a/src/qml/qml/v8/qv8engine.cpp
+++ b/src/qml/qml/v8/qv8engine.cpp
@@ -249,7 +249,7 @@ QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant)
case QMetaType::Double:
return QV4::Encode(*reinterpret_cast<const double*>(ptr));
case QMetaType::QString:
- return QV4::Value::fromString(m_v4Engine->current, *reinterpret_cast<const QString*>(ptr)).asReturnedValue();
+ return m_v4Engine->current->engine->newString(*reinterpret_cast<const QString*>(ptr))->asReturnedValue();
case QMetaType::Float:
return QV4::Encode(*reinterpret_cast<const float*>(ptr));
case QMetaType::Short:
@@ -661,7 +661,7 @@ QV4::ReturnedValue QV8Engine::metaTypeToJS(int type, const void *data)
case QMetaType::Double:
return QV4::Encode(*reinterpret_cast<const double*>(data));
case QMetaType::QString:
- return QV4::Value::fromString(m_v4Engine->current, *reinterpret_cast<const QString*>(data)).asReturnedValue();
+ return m_v4Engine->current->engine->newString(*reinterpret_cast<const QString*>(data))->asReturnedValue();
case QMetaType::Float:
return QV4::Encode(*reinterpret_cast<const float*>(data));
case QMetaType::Short:
diff --git a/src/quick/items/qquickdroparea.cpp b/src/quick/items/qquickdroparea.cpp
index 92275b1655..b0ed7a8367 100644
--- a/src/quick/items/qquickdroparea.cpp
+++ b/src/quick/items/qquickdroparea.cpp
@@ -564,7 +564,7 @@ void QQuickDropEvent::getDataAsString(QQmlV4Function *args)
QV4::ScopedValue v(scope, (*args)[0]);
QString format = v->toQString();
QString rv = QString::fromUtf8(event->mimeData()->data(format));
- args->setReturnValue(QV4::Value::fromString(v4, rv).asReturnedValue());
+ args->setReturnValue(v4->newString(rv)->asReturnedValue());
}
}