Get rid of one PersistentValue usage
We don't need to store a PersistentValue in a place that is reachable through regular object marking. Change-Id: I2a8764970e6d37b707921c65e6066d33c558576c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
5f3792cd32
commit
e6db292366
|
@ -1765,8 +1765,8 @@ Heap::QObjectMethod::QObjectMethod(QV4::ExecutionContext *scope, QObject *object
|
||||||
: Heap::FunctionObject(scope)
|
: Heap::FunctionObject(scope)
|
||||||
, object(object)
|
, object(object)
|
||||||
, index(index)
|
, index(index)
|
||||||
, qmlGlobal(qmlGlobal)
|
|
||||||
{
|
{
|
||||||
|
this->qmlGlobal = qmlGlobal;
|
||||||
setVTable(QV4::QObjectMethod::staticVTable());
|
setVTable(QV4::QObjectMethod::staticVTable());
|
||||||
subtype = WrappedQtMethod;
|
subtype = WrappedQtMethod;
|
||||||
}
|
}
|
||||||
|
@ -1875,7 +1875,7 @@ ReturnedValue QObjectMethod::callInternal(CallData *callData)
|
||||||
if (method.isV4Function()) {
|
if (method.isV4Function()) {
|
||||||
QV4::ScopedValue rv(scope, QV4::Primitive::undefinedValue());
|
QV4::ScopedValue rv(scope, QV4::Primitive::undefinedValue());
|
||||||
|
|
||||||
QV4::ScopedValue qmlGlobal(scope, d()->qmlGlobal.value());
|
QV4::ScopedValue qmlGlobal(scope, d()->qmlGlobal);
|
||||||
QQmlV4Function func(callData, rv, qmlGlobal,
|
QQmlV4Function func(callData, rv, qmlGlobal,
|
||||||
QmlContextWrapper::getContext(qmlGlobal),
|
QmlContextWrapper::getContext(qmlGlobal),
|
||||||
v8Engine);
|
v8Engine);
|
||||||
|
@ -1894,6 +1894,11 @@ ReturnedValue QObjectMethod::callInternal(CallData *callData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QObjectMethod::markObjects(Heap::Base *that, ExecutionEngine *e)
|
||||||
|
{
|
||||||
|
static_cast<QObjectMethod::Data*>(that)->qmlGlobal.mark(e);
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_OBJECT_VTABLE(QObjectMethod);
|
DEFINE_OBJECT_VTABLE(QObjectMethod);
|
||||||
|
|
||||||
Heap::QmlSignalHandler::QmlSignalHandler(QV4::ExecutionEngine *engine, QObject *object, int signalIndex)
|
Heap::QmlSignalHandler::QmlSignalHandler(QV4::ExecutionEngine *engine, QObject *object, int signalIndex)
|
||||||
|
|
|
@ -78,7 +78,7 @@ struct QObjectMethod : FunctionObject {
|
||||||
QObjectMethod(QV4::ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal);
|
QObjectMethod(QV4::ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal);
|
||||||
QPointer<QObject> object;
|
QPointer<QObject> object;
|
||||||
int index;
|
int index;
|
||||||
QV4::PersistentValue qmlGlobal;
|
Value qmlGlobal;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QmlSignalHandler : Object {
|
struct QmlSignalHandler : Object {
|
||||||
|
@ -151,6 +151,7 @@ struct Q_QML_EXPORT QObjectMethod : public QV4::FunctionObject
|
||||||
|
|
||||||
ReturnedValue callInternal(CallData *callData);
|
ReturnedValue callInternal(CallData *callData);
|
||||||
|
|
||||||
|
static void markObjects(Heap::Base *that, QV4::ExecutionEngine *e);
|
||||||
static void destroy(Managed *that)
|
static void destroy(Managed *that)
|
||||||
{
|
{
|
||||||
static_cast<QObjectMethod *>(that)->d()->~Data();
|
static_cast<QObjectMethod *>(that)->d()->~Data();
|
||||||
|
|
Loading…
Reference in New Issue