diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-11-11 18:08:20 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-11-15 00:32:45 +0100 |
commit | ad342b052473a8ec8c693591a8a882313ccd7d62 (patch) | |
tree | 502172a96bd56cda918a5552017f95308ee15f9f | |
parent | d4d92ab002bab0fdb8ddbac4babad260ed75d090 (diff) |
Changed MemoryManager::alloc<T> to return Heap::T* instead of T*
Change-Id: Iede1ba624d1313fbe2f8e5e979e936f1f32efdc9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r-- | src/imports/localstorage/plugin.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4context.cpp | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 36 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4errorobject_p.h | 10 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4functionobject.cpp | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4mm_p.h | 24 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions_p.h | 2 | ||||
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquickview.cpp | 2 |
10 files changed, 53 insertions, 41 deletions
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp index eca8f40e30..93c1283ea6 100644 --- a/src/imports/localstorage/plugin.cpp +++ b/src/imports/localstorage/plugin.cpp @@ -117,7 +117,7 @@ class QQmlSqlDatabaseWrapper : public Object public: V4_OBJECT2(QQmlSqlDatabaseWrapper, Object) - static QV4::Returned<QQmlSqlDatabaseWrapper> *create(QV8Engine *engine) + static Heap::QQmlSqlDatabaseWrapper *create(QV8Engine *engine) { QV4::ExecutionEngine *e = QV8Engine::getV4(engine); return e->memoryManager->alloc<QQmlSqlDatabaseWrapper>(e); diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index 86a5535d04..603b76630c 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -83,12 +83,12 @@ Returned<CallContext> *ExecutionContext::newCallContext(FunctionObject *function Heap::WithContext *ExecutionContext::newWithContext(Object *with) { - return d()->engine->memoryManager->alloc<WithContext>(d()->engine, with)->getPointer()->d(); + return d()->engine->memoryManager->alloc<WithContext>(d()->engine, with); } Heap::CatchContext *ExecutionContext::newCatchContext(String *exceptionVarName, const ValueRef exceptionValue) { - return d()->engine->memoryManager->alloc<CatchContext>(d()->engine, exceptionVarName, exceptionValue)->getPointer()->d(); + return d()->engine->memoryManager->alloc<CatchContext>(d()->engine, exceptionVarName, exceptionValue); } Heap::CallContext *ExecutionContext::newQmlContext(FunctionObject *f, Object *qml) diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 0bb05896b0..1080831ee7 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -337,21 +337,21 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory) sequencePrototype = ScopedValue(scope, memoryManager->alloc<SequencePrototype>(arrayClass)); - objectCtor = memoryManager->alloc<ObjectCtor>(rootContext); - stringCtor = memoryManager->alloc<StringCtor>(rootContext); - numberCtor = memoryManager->alloc<NumberCtor>(rootContext); - booleanCtor = memoryManager->alloc<BooleanCtor>(rootContext); - arrayCtor = memoryManager->alloc<ArrayCtor>(rootContext); - functionCtor = memoryManager->alloc<FunctionCtor>(rootContext); - dateCtor = memoryManager->alloc<DateCtor>(rootContext); - regExpCtor = memoryManager->alloc<RegExpCtor>(rootContext); - errorCtor = memoryManager->alloc<ErrorCtor>(rootContext); - evalErrorCtor = memoryManager->alloc<EvalErrorCtor>(rootContext); - rangeErrorCtor = memoryManager->alloc<RangeErrorCtor>(rootContext); - referenceErrorCtor = memoryManager->alloc<ReferenceErrorCtor>(rootContext); - syntaxErrorCtor = memoryManager->alloc<SyntaxErrorCtor>(rootContext); - typeErrorCtor = memoryManager->alloc<TypeErrorCtor>(rootContext); - uRIErrorCtor = memoryManager->alloc<URIErrorCtor>(rootContext); + objectCtor = Value::fromHeapObject(memoryManager->alloc<ObjectCtor>(rootContext)); + stringCtor = Value::fromHeapObject(memoryManager->alloc<StringCtor>(rootContext)); + numberCtor = Value::fromHeapObject(memoryManager->alloc<NumberCtor>(rootContext)); + booleanCtor = Value::fromHeapObject(memoryManager->alloc<BooleanCtor>(rootContext)); + arrayCtor = Value::fromHeapObject(memoryManager->alloc<ArrayCtor>(rootContext)); + functionCtor = Value::fromHeapObject(memoryManager->alloc<FunctionCtor>(rootContext)); + dateCtor = Value::fromHeapObject(memoryManager->alloc<DateCtor>(rootContext)); + regExpCtor = Value::fromHeapObject(memoryManager->alloc<RegExpCtor>(rootContext)); + errorCtor = Value::fromHeapObject(memoryManager->alloc<ErrorCtor>(rootContext)); + evalErrorCtor = Value::fromHeapObject(memoryManager->alloc<EvalErrorCtor>(rootContext)); + rangeErrorCtor = Value::fromHeapObject(memoryManager->alloc<RangeErrorCtor>(rootContext)); + referenceErrorCtor = Value::fromHeapObject(memoryManager->alloc<ReferenceErrorCtor>(rootContext)); + syntaxErrorCtor = Value::fromHeapObject(memoryManager->alloc<SyntaxErrorCtor>(rootContext)); + typeErrorCtor = Value::fromHeapObject(memoryManager->alloc<TypeErrorCtor>(rootContext)); + uRIErrorCtor = Value::fromHeapObject(memoryManager->alloc<URIErrorCtor>(rootContext)); static_cast<ObjectPrototype *>(objectPrototype.getPointer())->init(this, objectCtor.asObject()); static_cast<StringPrototype *>(stringPrototype.getPointer())->init(this, stringCtor.asObject()); @@ -375,18 +375,18 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory) // typed arrays - arrayBufferCtor = memoryManager->alloc<ArrayBufferCtor>(rootContext); + arrayBufferCtor = Value::fromHeapObject(memoryManager->alloc<ArrayBufferCtor>(rootContext)); Scoped<ArrayBufferPrototype> arrayBufferPrototype(scope, memoryManager->alloc<ArrayBufferPrototype>(objectClass)); arrayBufferPrototype->init(this, arrayBufferCtor.asObject()); arrayBufferClass = InternalClass::create(this, ArrayBuffer::staticVTable(), arrayBufferPrototype); - dataViewCtor = memoryManager->alloc<DataViewCtor>(rootContext); + dataViewCtor = Value::fromHeapObject(memoryManager->alloc<DataViewCtor>(rootContext)); Scoped<DataViewPrototype> dataViewPrototype(scope, memoryManager->alloc<DataViewPrototype>(objectClass)); dataViewPrototype->init(this, dataViewCtor.asObject()); dataViewClass = InternalClass::create(this, DataView::staticVTable(), dataViewPrototype); for (int i = 0; i < Heap::TypedArray::NTypes; ++i) { - typedArrayCtors[i] = memoryManager->alloc<TypedArrayCtor>(rootContext, Heap::TypedArray::Type(i)); + typedArrayCtors[i] = Value::fromHeapObject(memoryManager->alloc<TypedArrayCtor>(rootContext, Heap::TypedArray::Type(i))); Scoped<TypedArrayPrototype> typedArrayPrototype(scope, memoryManager->alloc<TypedArrayPrototype>(this, Heap::TypedArray::Type(i))); typedArrayPrototype->init(this, static_cast<TypedArrayCtor *>(typedArrayCtors[i].asObject())); typedArrayClasses[i] = InternalClass::create(this, TypedArray::staticVTable(), typedArrayPrototype); diff --git a/src/qml/jsruntime/qv4errorobject_p.h b/src/qml/jsruntime/qv4errorobject_p.h index 7a18447f4b..2585c3e639 100644 --- a/src/qml/jsruntime/qv4errorobject_p.h +++ b/src/qml/jsruntime/qv4errorobject_p.h @@ -145,14 +145,20 @@ inline ErrorObject *value_cast(const Value &v) { struct EvalErrorObject: ErrorObject { typedef Heap::EvalErrorObject Data; + const Data *d() const { return static_cast<const Data *>(ErrorObject::d()); } + Data *d() { return static_cast<Data *>(ErrorObject::d()); } }; struct RangeErrorObject: ErrorObject { typedef Heap::RangeErrorObject Data; + const Data *d() const { return static_cast<const Data *>(ErrorObject::d()); } + Data *d() { return static_cast<Data *>(ErrorObject::d()); } }; struct ReferenceErrorObject: ErrorObject { typedef Heap::ReferenceErrorObject Data; + const Data *d() const { return static_cast<const Data *>(ErrorObject::d()); } + Data *d() { return static_cast<Data *>(ErrorObject::d()); } }; struct SyntaxErrorObject: ErrorObject { @@ -161,10 +167,14 @@ struct SyntaxErrorObject: ErrorObject { struct TypeErrorObject: ErrorObject { typedef Heap::TypeErrorObject Data; + const Data *d() const { return static_cast<const Data *>(ErrorObject::d()); } + Data *d() { return static_cast<Data *>(ErrorObject::d()); } }; struct URIErrorObject: ErrorObject { typedef Heap::URIErrorObject Data; + const Data *d() const { return static_cast<const Data *>(ErrorObject::d()); } + Data *d() { return static_cast<Data *>(ErrorObject::d()); } }; struct ErrorCtor: FunctionObject diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index b6e766e568..34fe17d0eb 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -189,8 +189,8 @@ Heap::FunctionObject *FunctionObject::createScriptFunction(ExecutionContext *sco function->compiledFunction->flags & CompiledData::Function::HasCatchOrWith || function->compiledFunction->nFormals > QV4::Global::ReservedArgumentCount || function->isNamedExpression()) - return scope->d()->engine->memoryManager->alloc<ScriptFunction>(scope, function)->getPointer()->d(); - return scope->d()->engine->memoryManager->alloc<SimpleScriptFunction>(scope, function, createProto)->getPointer()->d(); + return scope->d()->engine->memoryManager->alloc<ScriptFunction>(scope, function); + return scope->d()->engine->memoryManager->alloc<SimpleScriptFunction>(scope, function, createProto); } DEFINE_OBJECT_VTABLE(FunctionCtor); diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 3b6294f559..56d11b2450 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -179,7 +179,7 @@ struct Q_QML_EXPORT BuiltinFunction: FunctionObject { static Heap::BuiltinFunction *create(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *)) { - return scope->engine()->memoryManager->alloc<BuiltinFunction>(scope, name, code)->getPointer()->d(); + return scope->engine()->memoryManager->alloc<BuiltinFunction>(scope, name, code); } static ReturnedValue construct(Managed *, CallData *); @@ -230,7 +230,7 @@ struct BoundFunction: FunctionObject { static Heap::BoundFunction *create(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, QV4::MemberData *boundArgs) { - return scope->engine()->memoryManager->alloc<BoundFunction>(scope, target, boundThis, boundArgs)->getPointer()->d(); + return scope->engine()->memoryManager->alloc<BoundFunction>(scope, target, boundThis, boundArgs); } Heap::FunctionObject *target() { return d()->target; } diff --git a/src/qml/jsruntime/qv4mm_p.h b/src/qml/jsruntime/qv4mm_p.h index f2267e5852..ddee32116c 100644 --- a/src/qml/jsruntime/qv4mm_p.h +++ b/src/qml/jsruntime/qv4mm_p.h @@ -94,57 +94,57 @@ public: } template <typename ManagedType> - Returned<ManagedType> *alloc() + typename ManagedType::Data *alloc() { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(); - return t.asReturned(); + return t->d(); } template <typename ManagedType, typename Arg1> - Returned<ManagedType> *alloc(Arg1 arg1) + typename ManagedType::Data *alloc(Arg1 arg1) { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(arg1); - return t.asReturned(); + return t->d(); } template <typename ManagedType, typename Arg1, typename Arg2> - Returned<ManagedType> *alloc(Arg1 arg1, Arg2 arg2) + typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2) { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2); - return t.asReturned(); + return t->d(); } template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3> - Returned<ManagedType> *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3) + typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3) { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3); - return t.asReturned(); + return t->d(); } template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3, typename Arg4> - Returned<ManagedType> *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) + typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3, arg4); - return t.asReturned(); + return t->d(); } template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5> - Returned<ManagedType> *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) + typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) { Scope scope(engine()); Scoped<ManagedType> t(scope, static_cast<ManagedType*>(allocManaged(sizeof(typename ManagedType::Data)))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3, arg4, arg5); - return t.asReturned(); + return t->d(); } bool isGCBlocked() const; diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h index 4a50111e60..baedd19e47 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h +++ b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h @@ -121,6 +121,8 @@ struct QtObject : Object struct ConsoleObject : Object { typedef Heap::ConsoleObject Data; + const Data *d() const { return static_cast<const Data *>(Object::d()); } + Data *d() { return static_cast<Data *>(Object::d()); } static ReturnedValue method_error(CallContext *ctx); static ReturnedValue method_log(CallContext *ctx); diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index be99c56076..ac85f6b2d6 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -83,7 +83,7 @@ struct DelegateModelGroupFunction : QV4::FunctionObject static Heap::DelegateModelGroupFunction *create(QV4::ExecutionContext *scope, uint flag, QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg)) { - return scope->engine()->memoryManager->alloc<DelegateModelGroupFunction>(scope, flag, code)->getPointer()->d(); + return scope->engine()->memoryManager->alloc<DelegateModelGroupFunction>(scope, flag, code); } static QV4::ReturnedValue construct(QV4::Managed *m, QV4::CallData *) @@ -3237,7 +3237,7 @@ struct QQmlDelegateModelGroupChange : QV4::Object V4_OBJECT2(QQmlDelegateModelGroupChange, QV4::Object) static QV4::Heap::QQmlDelegateModelGroupChange *create(QV4::ExecutionEngine *e) { - return e->memoryManager->alloc<QQmlDelegateModelGroupChange>(e)->getPointer()->d(); + return e->memoryManager->alloc<QQmlDelegateModelGroupChange>(e); } static QV4::ReturnedValue method_get_index(QV4::CallContext *ctx) { @@ -3279,7 +3279,7 @@ struct QQmlDelegateModelGroupChangeArray : public QV4::Object public: static QV4::Heap::QQmlDelegateModelGroupChangeArray *create(QV4::ExecutionEngine *engine, const QVector<QQmlChangeSet::Change> &changes) { - return engine->memoryManager->alloc<QQmlDelegateModelGroupChangeArray>(engine, changes)->getPointer()->d(); + return engine->memoryManager->alloc<QQmlDelegateModelGroupChangeArray>(engine, changes); } quint32 count() const { return d()->changes.count(); } diff --git a/src/quick/items/qquickview.cpp b/src/quick/items/qquickview.cpp index 9915c83059..41b53ddffe 100644 --- a/src/quick/items/qquickview.cpp +++ b/src/quick/items/qquickview.cpp @@ -53,7 +53,7 @@ DEFINE_OBJECT_VTABLE(QV4::QQuickRootItemMarker); QV4::Heap::QQuickRootItemMarker *QV4::QQuickRootItemMarker::create(QQmlEngine *engine, QQuickWindow *window) { QV4::ExecutionEngine *e = QQmlEnginePrivate::getV4Engine(engine); - return e->memoryManager->alloc<QQuickRootItemMarker>(e, window)->getPointer()->d(); + return e->memoryManager->alloc<QQuickRootItemMarker>(e, window); } void QV4::QQuickRootItemMarker::markObjects(QV4::Heap::Base *that, QV4::ExecutionEngine *e) |