From 9de9a3eca43db3a5d3c297e422293cd6ce2c7e18 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Tue, 21 May 2013 17:06:36 +0200 Subject: [PATCH] Finalize sequence wrapping * Move into QV4 namespace * Get rid of sequence wrapper instance, all static methods now Change-Id: I9a9e7ce10890cfe4625b3571bdb4b0ffec34658a Reviewed-by: Lars Knoll --- src/qml/qml/v4/qv4engine.cpp | 4 + src/qml/qml/v4/qv4engine_p.h | 2 + .../qv4sequenceobject.cpp} | 94 ++++++---------------- .../qv4sequenceobject_p.h} | 54 ++++++++----- src/qml/qml/v4/qv4serialize.cpp | 6 +- src/qml/qml/v4/v4.pri | 9 ++- src/qml/qml/v8/qv8engine.cpp | 12 ++- src/qml/qml/v8/qv8engine_p.h | 6 +- src/qml/qml/v8/qv8qobjectwrapper.cpp | 2 +- src/qml/qml/v8/v8.pri | 5 -- 10 files changed, 81 insertions(+), 113 deletions(-) rename src/qml/qml/{v8/qv8sequencewrapper.cpp => v4/qv4sequenceobject.cpp} (89%) rename src/qml/qml/{v8/qv8sequencewrapper_p.h => v4/qv4sequenceobject_p.h} (62%) diff --git a/src/qml/qml/v4/qv4engine.cpp b/src/qml/qml/v4/qv4engine.cpp index ac1936e..d0604d9 100644 --- a/src/qml/qml/v4/qv4engine.cpp +++ b/src/qml/qml/v4/qv4engine.cpp @@ -62,6 +62,7 @@ #include #include "qv4debugging_p.h" #include "qv4executableallocator_p.h" +#include "qv4sequenceobject_p.h" #ifdef V4_ENABLE_JIT # include "qv4isel_masm_p.h" @@ -145,6 +146,7 @@ ExecutionEngine::ExecutionEngine(QQmlJS::EvalISelFactory *factory) uRIErrorPrototype = new (memoryManager) URIErrorPrototype(this); variantPrototype = new (memoryManager) VariantPrototype(this); + sequencePrototype = new (memoryManager) SequencePrototype(this); stringPrototype->prototype = objectPrototype; numberPrototype->prototype = objectPrototype; @@ -210,6 +212,7 @@ ExecutionEngine::ExecutionEngine(QQmlJS::EvalISelFactory *factory) uRIErrorPrototype->init(this, uRIErrorCtor); variantPrototype->initClass(this); + sequencePrototype->initClass(this); // // set up the global object @@ -628,6 +631,7 @@ void ExecutionEngine::markObjects() uRIErrorPrototype->mark(); variantPrototype->mark(); + sequencePrototype->mark(); } Value ExecutionEngine::run(Function *function, ExecutionContext *ctx) diff --git a/src/qml/qml/v4/qv4engine_p.h b/src/qml/qml/v4/qv4engine_p.h index 1e4688b..be74de6 100644 --- a/src/qml/qml/v4/qv4engine_p.h +++ b/src/qml/qml/v4/qv4engine_p.h @@ -99,6 +99,7 @@ struct SyntaxErrorPrototype; struct TypeErrorPrototype; struct URIErrorPrototype; struct VariantPrototype; +struct SequencePrototype; struct EvalFunction; struct Identifiers; struct InternalClass; @@ -163,6 +164,7 @@ struct Q_QML_EXPORT ExecutionEngine URIErrorPrototype *uRIErrorPrototype; VariantPrototype *variantPrototype; + SequencePrototype *sequencePrototype; QQmlJS::MemoryPool classPool; InternalClass *emptyClass; diff --git a/src/qml/qml/v8/qv8sequencewrapper.cpp b/src/qml/qml/v4/qv4sequenceobject.cpp similarity index 89% rename from src/qml/qml/v8/qv8sequencewrapper.cpp rename to src/qml/qml/v4/qv4sequenceobject.cpp index 4e44f19..dc28169 100644 --- a/src/qml/qml/v8/qv8sequencewrapper.cpp +++ b/src/qml/qml/v4/qv4sequenceobject.cpp @@ -41,8 +41,7 @@ #include -#include "qv8sequencewrapper_p.h" -#include "qv8engine_p.h" +#include "qv4sequenceobject_p.h" #include #include @@ -50,6 +49,8 @@ QT_BEGIN_NAMESPACE +using namespace QV4; + // helper function to generate valid warnings if errors occur during sequence operations. static void generateWarning(QV4::ExecutionContext *ctx, const QString& description) { @@ -72,34 +73,6 @@ static void generateWarning(QV4::ExecutionContext *ctx, const QString& descripti F(QString, QString, QStringList, QString()) \ F(QUrl, Url, QList, QUrl()) -class QV4_JS_CLASS(QQmlSequenceBase) : public QV4::Object -{ -public: - QQmlSequenceBase(QV4::ExecutionEngine *engine) - : QV4::Object(engine) - {} - - void initClass(QV4::ExecutionEngine *engine); - - QV4::Value method_get_length(QV4::SimpleCallContext* ctx) QV4_ANNOTATE(attributes QV4::Attr_ReadOnly); - - QV4::Value method_set_length(QV4::SimpleCallContext* ctx); -}; - -class QV4_JS_CLASS(QQmlSequencePrototype) : public QV4::Object -{ - QV4_ANNOTATE(staticInitClass true) -public: - static void initClass(QV4::ExecutionEngine *engine, const QV4::Value &value); - - static QV4::Value method_valueOf(QV4::SimpleCallContext *ctx) - { - return QV4::Value::fromString(ctx->thisObject.toString(ctx)); - } - - static QV4::Value method_sort(QV4::SimpleCallContext *ctx) QV4_ARGC(1); -}; - static QV4::Value convertElementToValue(QV4::ExecutionContext *ctx, const QString &element) { return QV4::Value::fromString(ctx, element); @@ -195,7 +168,7 @@ public: { type = ManagedType; vtbl = &static_vtbl; - prototype = engine->arrayPrototype; + prototype = engine->sequencePrototype; initClass(engine); } @@ -207,7 +180,7 @@ public: { type = ManagedType; vtbl = &static_vtbl; - prototype = engine->arrayPrototype; + prototype = engine->sequencePrototype; loadReference(); initClass(engine); } @@ -494,7 +467,16 @@ typedef QQmlSequence, QV4::Managed::Type_QmlRealList> QQmlRealList; template<> DEFINE_MANAGED_VTABLE(QQmlRealList); -QV4::Value QQmlSequencePrototype::method_sort(QV4::SimpleCallContext *ctx) +#define REGISTER_QML_SEQUENCE_METATYPE(unused, unused2, SequenceType, unused3) qRegisterMetaType(); +SequencePrototype::SequencePrototype(ExecutionEngine *engine) + : QV4::Object(engine) +{ + prototype = engine->arrayPrototype; + FOREACH_QML_SEQUENCE_TYPE(REGISTER_QML_SEQUENCE_METATYPE) +} +#undef REGISTER_QML_SEQUENCE_METATYPE + +QV4::Value SequencePrototype::method_sort(QV4::SimpleCallContext *ctx) { QV4::Object *o = ctx->thisObject.asObject(); if (!o || !o->isListType()) @@ -541,38 +523,12 @@ QV4::Value QQmlSequenceBase::method_set_length(QV4::SimpleCallContext* ctx) return QV4::Value::undefinedValue(); } -QV8SequenceWrapper::QV8SequenceWrapper() - : m_engine(0) -{ -} - -QV8SequenceWrapper::~QV8SequenceWrapper() -{ -} - -#define REGISTER_QML_SEQUENCE_METATYPE(unused, unused2, SequenceType, unused3) qRegisterMetaType(); -void QV8SequenceWrapper::init(QV8Engine *engine) -{ - FOREACH_QML_SEQUENCE_TYPE(REGISTER_QML_SEQUENCE_METATYPE) - - m_engine = QV8Engine::getV4(engine); - - m_prototype = QV4::Value::fromObject(m_engine->newObject()); - m_prototype.value().asObject()->prototype = m_engine->arrayPrototype; - QQmlSequencePrototype::initClass(m_engine, m_prototype.value()); -} -#undef REGISTER_QML_SEQUENCE_METATYPE - -void QV8SequenceWrapper::destroy() -{ -} - #define IS_SEQUENCE(unused1, unused2, SequenceType, unused3) \ if (sequenceTypeId == qMetaTypeId()) { \ return true; \ } else -bool QV8SequenceWrapper::isSequenceType(int sequenceTypeId) const +bool SequencePrototype::isSequenceType(int sequenceTypeId) { FOREACH_QML_SEQUENCE_TYPE(IS_SEQUENCE) { /* else */ return false; } } @@ -580,12 +536,11 @@ bool QV8SequenceWrapper::isSequenceType(int sequenceTypeId) const #define NEW_REFERENCE_SEQUENCE(ElementType, ElementTypeName, SequenceType, unused) \ if (sequenceType == qMetaTypeId()) { \ - QV4::Object *obj = new (m_engine->memoryManager) QQml##ElementTypeName##List(m_engine, object, propertyIndex); \ - obj->prototype = m_prototype.value().asObject(); \ + QV4::Object *obj = new (engine->memoryManager) QQml##ElementTypeName##List(engine, object, propertyIndex); \ return QV4::Value::fromObject(obj); \ } else -QV4::Value QV8SequenceWrapper::newSequence(int sequenceType, QObject *object, int propertyIndex, bool *succeeded) +QV4::Value SequencePrototype::newSequence(QV4::ExecutionEngine *engine, int sequenceType, QObject *object, int propertyIndex, bool *succeeded) { // This function is called when the property is a QObject Q_PROPERTY of // the given sequence type. Internally we store a typed-sequence @@ -598,12 +553,11 @@ QV4::Value QV8SequenceWrapper::newSequence(int sequenceType, QObject *object, in #define NEW_COPY_SEQUENCE(ElementType, ElementTypeName, SequenceType, unused) \ if (sequenceType == qMetaTypeId()) { \ - QV4::Object *obj = new (m_engine->memoryManager) QQml##ElementTypeName##List(m_engine, v.value()); \ - obj->prototype = m_prototype.value().asObject(); \ + QV4::Object *obj = new (engine->memoryManager) QQml##ElementTypeName##List(engine, v.value()); \ return QV4::Value::fromObject(obj); \ } else -QV4::Value QV8SequenceWrapper::fromVariant(const QVariant& v, bool *succeeded) +QV4::Value SequencePrototype::fromVariant(QV4::ExecutionEngine *engine, const QVariant& v, bool *succeeded) { // This function is called when assigning a sequence value to a normal JS var // in a JS block. Internally, we store a sequence of the specified type. @@ -620,7 +574,7 @@ QV4::Value QV8SequenceWrapper::fromVariant(const QVariant& v, bool *succeeded) return list->toVariant(); \ else -QVariant QV8SequenceWrapper::toVariant(QV4::Object *object) +QVariant SequencePrototype::toVariant(QV4::Object *object) { Q_ASSERT(object->isListType()); FOREACH_QML_SEQUENCE_TYPE(SEQUENCE_TO_VARIANT) { /* else */ return QVariant(); } @@ -631,7 +585,7 @@ QVariant QV8SequenceWrapper::toVariant(QV4::Object *object) return QQml##ElementTypeName##List::toVariant(a); \ } else -QVariant QV8SequenceWrapper::toVariant(const QV4::Value &array, int typeHint, bool *succeeded) +QVariant SequencePrototype::toVariant(const QV4::Value &array, int typeHint, bool *succeeded) { *succeeded = true; @@ -648,7 +602,7 @@ QVariant QV8SequenceWrapper::toVariant(const QV4::Value &array, int typeHint, bo #define MAP_META_TYPE(ElementType, ElementTypeName, SequenceType, unused) \ case QV4::Managed::Type_Qml##ElementTypeName##List: return qMetaTypeId(); -int QV8SequenceWrapper::metaTypeForSequence(QV4::Object *object) +int SequencePrototype::metaTypeForSequence(QV4::Object *object) { switch (object->internalType()) { FOREACH_QML_SEQUENCE_TYPE(MAP_META_TYPE) @@ -659,6 +613,6 @@ int QV8SequenceWrapper::metaTypeForSequence(QV4::Object *object) #undef MAP_META_TYPE -#include "qv8sequencewrapper_jsclass.cpp" +#include "qv4sequenceobject_p_jsclass.cpp" QT_END_NAMESPACE diff --git a/src/qml/qml/v8/qv8sequencewrapper_p.h b/src/qml/qml/v4/qv4sequenceobject_p.h similarity index 62% rename from src/qml/qml/v8/qv8sequencewrapper_p.h rename to src/qml/qml/v4/qv4sequenceobject_p.h index 809a64b..7731f07 100644 --- a/src/qml/qml/v8/qv8sequencewrapper_p.h +++ b/src/qml/qml/v4/qv4sequenceobject_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QV8SEQUENCEWRAPPER_P_H -#define QV8SEQUENCEWRAPPER_P_H +#ifndef QV4SEQUENCEWRAPPER_P_H +#define QV4SEQUENCEWRAPPER_P_H // // W A R N I N G @@ -56,37 +56,51 @@ #include #include -#include +#include "qv4value_p.h" +#include "qv4object_p.h" QT_BEGIN_NAMESPACE -class QV8Engine; -class QV8ObjectResource; +namespace QV4 { -class QV8SequenceWrapper +class QV4_JS_CLASS(QQmlSequenceBase) : public QV4::Object { public: - QV8SequenceWrapper(); - ~QV8SequenceWrapper(); + QQmlSequenceBase(QV4::ExecutionEngine *engine) + : QV4::Object(engine) + {} - void init(QV8Engine *); - void destroy(); + void initClass(QV4::ExecutionEngine *engine); - bool isSequenceType(int sequenceTypeId) const; + QV4::Value method_get_length(QV4::SimpleCallContext* ctx) QV4_ANNOTATE(attributes QV4::Attr_ReadOnly); - QV4::Value newSequence(int sequenceTypeId, QObject *object, int propertyIndex, bool *succeeded); - QV4::Value fromVariant(const QVariant& v, bool *succeeded); - QVariant toVariant(QV4::Object *object); - QVariant toVariant(const QV4::Value &array, int typeHint, bool *succeeded); - int metaTypeForSequence(QV4::Object *object); + QV4::Value method_set_length(QV4::SimpleCallContext* ctx); +}; + +class QV4_JS_CLASS(SequencePrototype) : public QV4::Object +{ +public: + SequencePrototype(QV4::ExecutionEngine *engine); + + void initClass(QV4::ExecutionEngine *engine); + + static QV4::Value method_valueOf(QV4::SimpleCallContext *ctx) + { + return QV4::Value::fromString(ctx->thisObject.toString(ctx)); + } -private: - QV4::ExecutionEngine *m_engine; + static QV4::Value method_sort(QV4::SimpleCallContext *ctx) QV4_ARGC(1); - QV4::PersistentValue m_prototype; + static bool isSequenceType(int sequenceTypeId); + static QV4::Value newSequence(QV4::ExecutionEngine *engine, int sequenceTypeId, QObject *object, int propertyIndex, bool *succeeded); + static QV4::Value fromVariant(QV4::ExecutionEngine *engine, const QVariant& v, bool *succeeded); + static int metaTypeForSequence(QV4::Object *object); + static QVariant toVariant(QV4::Object *object); + static QVariant toVariant(const QV4::Value &array, int typeHint, bool *succeeded); }; +} QT_END_NAMESPACE -#endif // QV8SEQUENCEWRAPPER_P_H +#endif // QV4SEQUENCEWRAPPER_P_H diff --git a/src/qml/qml/v4/qv4serialize.cpp b/src/qml/qml/v4/qv4serialize.cpp index 10f2f23..17995cd 100644 --- a/src/qml/qml/v4/qv4serialize.cpp +++ b/src/qml/qml/v4/qv4serialize.cpp @@ -246,7 +246,7 @@ void Serialize::serialize(QByteArray &data, const QV4::Value &v, QV8Engine *engi } reserve(data, sizeof(quint32) + length * sizeof(quint32)); push(data, valueheader(WorkerSequence, length)); - serialize(data, QV4::Value::fromInt32(engine->sequenceWrapper()->metaTypeForSequence(o)), engine); // sequence type + serialize(data, QV4::Value::fromInt32(QV4::SequencePrototype::metaTypeForSequence(o)), engine); // sequence type for (uint32_t ii = 0; ii < seqLength; ++ii) serialize(data, o->getIndexed(ii), engine); // sequence elements @@ -380,8 +380,8 @@ QV4::Value Serialize::deserialize(const char *&data, QV8Engine *engine) array->arrayData[ii].value = deserialize(data, engine); array->arrayDataLen = seqLength; array->setArrayLengthUnchecked(seqLength); - QVariant seqVariant = engine->sequenceWrapper()->toVariant(QV4::Value::fromObject(array), sequenceType, &succeeded); - return engine->sequenceWrapper()->fromVariant(seqVariant, &succeeded); + QVariant seqVariant = QV4::SequencePrototype::toVariant(QV4::Value::fromObject(array), sequenceType, &succeeded); + return QV4::SequencePrototype::fromVariant(v4, seqVariant, &succeeded); } } Q_ASSERT(!"Unreachable"); diff --git a/src/qml/qml/v4/v4.pri b/src/qml/qml/v4/v4.pri index 81e962d..b7dc9e6 100644 --- a/src/qml/qml/v4/v4.pri +++ b/src/qml/qml/v4/v4.pri @@ -49,7 +49,8 @@ SOURCES += \ $$PWD/qv4unwindhelper.cpp \ $$PWD/qv4serialize.cpp \ $$PWD/qv4v8.cpp \ - $$PWD/qv4executableallocator.cpp + $$PWD/qv4executableallocator.cpp \ + $$PWD/qv4sequenceobject.cpp HEADERS += \ $$PWD/qv4global_p.h \ @@ -98,13 +99,15 @@ HEADERS += \ $$PWD/qv4v8_p.h \ $$PWD/qcalculatehash_p.h \ $$PWD/qv4util_p.h \ - $$PWD/qv4executableallocator_p.h + $$PWD/qv4executableallocator_p.h \ + $$PWD/qv4sequenceobject_p.h JS_CLASS_SOURCES += $$PWD/qv4dateobject_p.h \ $$PWD/qv4stringobject_p.h \ $$PWD/qv4booleanobject_p.h \ $$PWD/qv4regexpobject_p.h \ - $$PWD/qv4variantobject_p.h + $$PWD/qv4variantobject_p.h \ + $$PWD/qv4sequenceobject_p.h js_class_bindings.output = ${QMAKE_FILE_BASE}_jsclass.cpp js_class_bindings.input = JS_CLASS_SOURCES diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index 9fe65ff..5862faf 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -43,7 +43,7 @@ #include "qv8contextwrapper_p.h" #include "qv8valuetypewrapper_p.h" -#include "qv8sequencewrapper_p.h" +#include "qv4sequenceobject_p.h" #include "qv8include_p.h" #include "qjsengine_p.h" @@ -157,7 +157,6 @@ QV8Engine::QV8Engine(QJSEngine* qq) m_typeWrapper.init(this); m_listWrapper.init(this); m_valueTypeWrapper.init(this); - m_sequenceWrapper.init(this); m_jsonWrapper.init(m_v4Engine); } @@ -174,7 +173,6 @@ QV8Engine::~QV8Engine() m_listModelData = 0; m_jsonWrapper.destroy(); - m_sequenceWrapper.destroy(); m_valueTypeWrapper.destroy(); m_listWrapper.destroy(); m_typeWrapper.destroy(); @@ -232,7 +230,7 @@ QVariant QV8Engine::toVariant(const QV4::Value &value, int typeHint) && !value.asArrayObject() && !value.asFunctionObject()) { return QVariant::fromValue(jsonObjectFromJS(value)); } else if (object->isListType()) - return m_sequenceWrapper.toVariant(object); + return QV4::SequencePrototype::toVariant(object); } if (QV4::ArrayObject *a = value.asArrayObject()) { @@ -254,7 +252,7 @@ QVariant QV8Engine::toVariant(const QV4::Value &value, int typeHint) } bool succeeded = false; - QVariant retn = m_sequenceWrapper.toVariant(value, typeHint, &succeeded); + QVariant retn = QV4::SequencePrototype::toVariant(value, typeHint, &succeeded); if (succeeded) return retn; } @@ -348,7 +346,7 @@ QV4::Value QV8Engine::fromVariant(const QVariant &variant) case QMetaType::QStringList: { bool succeeded = false; - v8::Handle retn = m_sequenceWrapper.fromVariant(variant, &succeeded); + v8::Handle retn = QV4::SequencePrototype::fromVariant(m_v4Engine, variant, &succeeded); if (succeeded) return retn->v4Value(); return arrayFromStringList(this, *reinterpret_cast(ptr)); @@ -400,7 +398,7 @@ QV4::Value QV8Engine::fromVariant(const QVariant &variant) return newQObject(obj); bool succeeded = false; - v8::Handle retn = m_sequenceWrapper.fromVariant(variant, &succeeded); + v8::Handle retn = QV4::SequencePrototype::fromVariant(m_v4Engine, variant, &succeeded); if (succeeded) return retn->v4Value(); diff --git a/src/qml/qml/v8/qv8engine_p.h b/src/qml/qml/v8/qv8engine_p.h index 419eb91..7589315 100644 --- a/src/qml/qml/v8/qv8engine_p.h +++ b/src/qml/qml/v8/qv8engine_p.h @@ -76,7 +76,7 @@ #include "qv8typewrapper_p.h" #include "qv8listwrapper_p.h" #include "qv8valuetypewrapper_p.h" -#include "qv8sequencewrapper_p.h" +#include #include "qv4jsonwrapper_p.h" #include #include @@ -278,7 +278,6 @@ public: QV8TypeWrapper *typeWrapper() { return &m_typeWrapper; } QV8ListWrapper *listWrapper() { return &m_listWrapper; } QV8ValueTypeWrapper *valueTypeWrapper() { return &m_valueTypeWrapper; } - QV8SequenceWrapper *sequenceWrapper() { return &m_sequenceWrapper; } void *xmlHttpRequestData() { return m_xmlHttpRequestData; } @@ -426,7 +425,6 @@ protected: QV8TypeWrapper m_typeWrapper; QV8ListWrapper m_listWrapper; QV8ValueTypeWrapper m_valueTypeWrapper; - QV8SequenceWrapper m_sequenceWrapper; QV4JsonWrapper m_jsonWrapper; QV4::PersistentValue m_freezeObject; @@ -516,7 +514,7 @@ QVariant QV8Engine::toValueType(const QV4::Value &obj) QV4::Value QV8Engine::newSequence(int sequenceType, QObject *object, int property, bool *succeeded) { - return m_sequenceWrapper.newSequence(sequenceType, object, property, succeeded); + return QV4::SequencePrototype::newSequence(m_v4Engine, sequenceType, object, property, succeeded); } QV4::Value QV8Engine::bindingFlagKey() const diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 5f61b95..5e0a79a 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -2199,7 +2199,7 @@ void CallArgument::fromValue(int callType, QV8Engine *engine, v8::Handleconvert(callType); - } else if (engine->sequenceWrapper()->isSequenceType(callType) && v.userType() == qMetaTypeId()) { + } else if (QV4::SequencePrototype::isSequenceType(callType) && v.userType() == qMetaTypeId()) { // convert the JS array to a sequence of the correct type. QVariant seqV = engine->toVariant(value->v4Value(), callType); *qvariantPtr = seqV; diff --git a/src/qml/qml/v8/v8.pri b/src/qml/qml/v8/v8.pri index abe7a98..ab8f8ea 100644 --- a/src/qml/qml/v8/v8.pri +++ b/src/qml/qml/v8/v8.pri @@ -5,7 +5,6 @@ HEADERS += \ $$PWD/qv8debug_p.h \ $$PWD/qv8profiler_p.h \ $$PWD/qv8engine_p.h \ - $$PWD/qv8sequencewrapper_p.h \ $$PWD/qv8contextwrapper_p.h \ $$PWD/qv8qobjectwrapper_p.h \ $$PWD/qv8typewrapper_p.h \ @@ -21,7 +20,6 @@ HEADERS += \ SOURCES += \ $$PWD/qv8engine.cpp \ - $$PWD/qv8sequencewrapper.cpp \ $$PWD/qv8contextwrapper.cpp \ $$PWD/qv8qobjectwrapper.cpp \ $$PWD/qv8typewrapper.cpp \ @@ -34,6 +32,3 @@ SOURCES += \ $$PWD/qv4sqlerrors.cpp \ $$PWD/qqmlbuiltinfunctions.cpp -JS_CLASS_SOURCES += \ - $$PWD/qv8sequencewrapper.cpp - -- 2.7.4