aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-23 15:52:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-26 09:05:16 +0200
commit12fd2ccd3fa2dc0133b5a3fb89f9fdf5cf721232 (patch)
tree880acb9c7c0d8289185b6aebe4339f439c707a0e /src/qml/jsapi
parent2e4f66caa8a5f9e887dbdb4e3f2ae5c9be9a7005 (diff)
Fix Persistent/WeakValue API
Don't use unprotected Values in the API anymore. Change-Id: I8851628227fca374de24701bc8ee0908b5ae3923 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r--src/qml/jsapi/qjsengine.cpp15
-rw-r--r--src/qml/jsapi/qjsvalue.cpp12
-rw-r--r--src/qml/jsapi/qjsvalue_p.h17
3 files changed, 25 insertions, 19 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp
index f99463256e..59a6a14e81 100644
--- a/src/qml/jsapi/qjsengine.cpp
+++ b/src/qml/jsapi/qjsengine.cpp
@@ -286,7 +286,9 @@ QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName, in
*/
QJSValue QJSEngine::newObject()
{
- return new QJSValuePrivate(d->m_v4Engine->newObject()->getPointer());
+ QV4::Scope scope(d->m_v4Engine);
+ QV4::ScopedValue v(scope, d->m_v4Engine->newObject());
+ return new QJSValuePrivate(d->m_v4Engine, v);
}
/*!
@@ -301,7 +303,7 @@ QJSValue QJSEngine::newArray(uint length)
if (length < 0x1000)
array->arrayReserve(length);
array->setArrayLengthUnchecked(length);
- return new QJSValuePrivate(d->m_v4Engine, array.asValue());
+ return new QJSValuePrivate(d->m_v4Engine, array);
}
/*!
@@ -346,7 +348,10 @@ QJSValue QJSEngine::newQObject(QObject *object)
*/
QJSValue QJSEngine::globalObject() const
{
- return new QJSValuePrivate(d->m_v4Engine->globalObject);
+ Q_D(const QJSEngine);
+ QV4::Scope scope(d->m_v4Engine);
+ QV4::ScopedValue v(scope, d->m_v4Engine->globalObject);
+ return new QJSValuePrivate(d->m_v4Engine, v);
}
/*!
@@ -356,7 +361,9 @@ QJSValue QJSEngine::globalObject() const
QJSValue QJSEngine::create(int type, const void *ptr)
{
Q_D(QJSEngine);
- return new QJSValuePrivate(d->m_v4Engine, QV4::Value::fromReturnedValue(d->metaTypeToJS(type, ptr)));
+ QV4::Scope scope(d->m_v4Engine);
+ QV4::ScopedValue v(scope, d->metaTypeToJS(type, ptr));
+ return new QJSValuePrivate(d->m_v4Engine, v);
}
/*!
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp
index 56a01a584d..9c06f403b5 100644
--- a/src/qml/jsapi/qjsvalue.cpp
+++ b/src/qml/jsapi/qjsvalue.cpp
@@ -149,7 +149,7 @@ using namespace QV4;
Constructs a new QJSValue with a boolean \a value.
*/
QJSValue::QJSValue(bool value)
- : d(new QJSValuePrivate(0, Value::fromBoolean(value)))
+ : d(new QJSValuePrivate(Encode(value)))
{
}
@@ -162,7 +162,7 @@ QJSValue::QJSValue(QJSValuePrivate *dd)
Constructs a new QJSValue with a number \a value.
*/
QJSValue::QJSValue(int value)
- : d(new QJSValuePrivate(0, Value::fromInt32(value)))
+ : d(new QJSValuePrivate(Encode(value)))
{
}
@@ -170,7 +170,7 @@ QJSValue::QJSValue(int value)
Constructs a new QJSValue with a number \a value.
*/
QJSValue::QJSValue(uint value)
- : d(new QJSValuePrivate(0, Value::fromUInt32(value)))
+ : d(new QJSValuePrivate(Encode(value)))
{
}
@@ -178,7 +178,7 @@ QJSValue::QJSValue(uint value)
Constructs a new QJSValue with a number \a value.
*/
QJSValue::QJSValue(double value)
- : d(new QJSValuePrivate(0, Value::fromDouble(value)))
+ : d(new QJSValuePrivate(Encode(value)))
{
}
@@ -194,7 +194,7 @@ QJSValue::QJSValue(const QString& value)
Constructs a new QJSValue with a special \a value.
*/
QJSValue::QJSValue(SpecialValue value)
- : d(new QJSValuePrivate(0, value == UndefinedValue ? Value::undefinedValue() : Value::nullValue()))
+ : d(new QJSValuePrivate(value == UndefinedValue ? Encode::undefined() : Encode::null()))
{
}
@@ -673,7 +673,7 @@ QJSValue QJSValue::prototype() const
Scoped<Object> p(scope, o->prototype());
if (!p)
return QJSValue(NullValue);
- return new QJSValuePrivate(o->internalClass->engine, p.asValue());
+ return new QJSValuePrivate(o->internalClass->engine, p);
}
/*!
diff --git a/src/qml/jsapi/qjsvalue_p.h b/src/qml/jsapi/qjsvalue_p.h
index a0dfa010ab..ec3f61ef20 100644
--- a/src/qml/jsapi/qjsvalue_p.h
+++ b/src/qml/jsapi/qjsvalue_p.h
@@ -69,19 +69,18 @@ QT_BEGIN_NAMESPACE
class Q_QML_PRIVATE_EXPORT QJSValuePrivate : public QV4::PersistentValuePrivate
{
public:
- QJSValuePrivate(QV4::ExecutionEngine *engine, const QV4::Value &v)
- : PersistentValuePrivate(v, engine)
+ QJSValuePrivate(QV4::ExecutionEngine *engine, const QV4::ValueRef v)
+ : PersistentValuePrivate(v.asReturnedValue(), engine)
+ {
+ Q_ASSERT(!value.isEmpty());
+ }
+ QJSValuePrivate(QV4::ReturnedValue v)
+ : PersistentValuePrivate(v)
{
Q_ASSERT(!value.isEmpty());
}
- QJSValuePrivate(QV4::Object *o)
- : PersistentValuePrivate(QV4::Value::fromObject(o))
- { }
- QJSValuePrivate(QV4::String *s)
- : PersistentValuePrivate(QV4::Value::fromString(s))
- { }
QJSValuePrivate(const QString &s)
- : PersistentValuePrivate(QV4::Value::undefinedValue())
+ : PersistentValuePrivate(QV4::Encode::undefined())
, string(0, s)
{
value = QV4::Value::fromString(&string);