From 980e7fae0a010d519907a58ab891cc6ca94eb56a Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 4 Nov 2014 15:25:09 +0100 Subject: Move Data of Variant and ArgumentsObject into Heap namespace Change-Id: Id2092a15c9fb5341d9b5cf4a9ac7a978308e4174 Reviewed-by: Simon Hausmann --- src/qml/jsruntime/qv4argumentsobject.cpp | 6 +-- src/qml/jsruntime/qv4argumentsobject_p.h | 79 ++++++++++++++++++-------------- src/qml/jsruntime/qv4arrayobject.cpp | 4 +- src/qml/jsruntime/qv4arrayobject_p.h | 14 ++++-- src/qml/jsruntime/qv4booleanobject.cpp | 4 +- src/qml/jsruntime/qv4booleanobject_p.h | 14 ++++-- src/qml/jsruntime/qv4dateobject.cpp | 8 ++-- src/qml/jsruntime/qv4dateobject_p.h | 48 +++++++++++-------- src/qml/jsruntime/qv4variantobject.cpp | 4 +- src/qml/jsruntime/qv4variantobject_p.h | 29 +++++++----- 10 files changed, 121 insertions(+), 89 deletions(-) diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index 4734c9e7cb..5899fedb57 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -38,16 +38,16 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(ArgumentsObject); -ArgumentsObject::Data::Data(CallContext *context) +Heap::ArgumentsObject::ArgumentsObject(QV4::CallContext *context) : Heap::Object(context->d()->strictMode ? context->d()->engine->strictArgumentsObjectClass : context->d()->engine->argumentsObjectClass) , context(context) , fullyCreated(false) { - Q_ASSERT(internalClass->vtable == staticVTable()); + Q_ASSERT(internalClass->vtable == QV4::ArgumentsObject::staticVTable()); ExecutionEngine *v4 = context->d()->engine; Scope scope(v4); - Scoped args(scope, this); + Scoped args(scope, this); args->setArrayType(Heap::ArrayData::Complex); diff --git a/src/qml/jsruntime/qv4argumentsobject_p.h b/src/qml/jsruntime/qv4argumentsobject_p.h index f215d986be..38ba741bc5 100644 --- a/src/qml/jsruntime/qv4argumentsobject_p.h +++ b/src/qml/jsruntime/qv4argumentsobject_p.h @@ -40,51 +40,67 @@ QT_BEGIN_NAMESPACE namespace QV4 { +namespace Heap { + +struct ArgumentsGetterFunction : FunctionObject { + inline ArgumentsGetterFunction(QV4::ExecutionContext *scope, uint index); + uint index; +}; + +struct ArgumentsSetterFunction : FunctionObject { + inline ArgumentsSetterFunction(QV4::ExecutionContext *scope, uint index); + uint index; +}; + +struct ArgumentsObject : Object { + enum { + LengthPropertyIndex = 0, + CalleePropertyIndex = 1, + CallerPropertyIndex = 3 + }; + ArgumentsObject(QV4::CallContext *context); + QV4::CallContext *context; + bool fullyCreated; + MemberData *mappedArguments; +}; + +} + struct ArgumentsGetterFunction: FunctionObject { - struct Data : Heap::FunctionObject { - Data(ExecutionContext *scope, uint index) - : Heap::FunctionObject(scope) - , index(index) - { - setVTable(staticVTable()); - } - uint index; - }; - V4_OBJECT(FunctionObject) + V4_OBJECT2(ArgumentsGetterFunction, FunctionObject) uint index() const { return d()->index; } - static ReturnedValue call(Managed *that, CallData *d); }; +inline +Heap::ArgumentsGetterFunction::ArgumentsGetterFunction(QV4::ExecutionContext *scope, uint index) + : Heap::FunctionObject(scope) + , index(index) +{ + setVTable(QV4::ArgumentsGetterFunction::staticVTable()); +} + struct ArgumentsSetterFunction: FunctionObject { - struct Data : Heap::FunctionObject { - Data(ExecutionContext *scope, uint index) - : Heap::FunctionObject(scope) - , index(index) - { - setVTable(staticVTable()); - } - uint index; - }; - V4_OBJECT(FunctionObject) + V4_OBJECT2(ArgumentsSetterFunction, FunctionObject) uint index() const { return d()->index; } - static ReturnedValue call(Managed *that, CallData *callData); }; +inline +Heap::ArgumentsSetterFunction::ArgumentsSetterFunction(QV4::ExecutionContext *scope, uint index) + : Heap::FunctionObject(scope) + , index(index) +{ + setVTable(QV4::ArgumentsSetterFunction::staticVTable()); +} + struct ArgumentsObject: Object { - struct Data : Heap::Object { - Data(CallContext *context); - CallContext *context; - bool fullyCreated; - Heap::MemberData *mappedArguments; - }; - V4_OBJECT(Object) + V4_OBJECT2(ArgumentsObject, Object) Q_MANAGED_TYPE(ArgumentsObject) CallContext *context() const { return d()->context; } @@ -96,11 +112,6 @@ struct ArgumentsObject: Object { !static_cast(m)->context()->d()->strictMode; } - enum { - LengthPropertyIndex = 0, - CalleePropertyIndex = 1, - CallerPropertyIndex = 3 - }; bool defineOwnProperty(ExecutionContext *ctx, uint index, const Property &desc, PropertyAttributes attrs); static ReturnedValue getIndexed(Managed *m, uint index, bool *hasProperty); static void putIndexed(Managed *m, uint index, const ValueRef value); diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp index 5da80c63ba..0935da3255 100644 --- a/src/qml/jsruntime/qv4arrayobject.cpp +++ b/src/qml/jsruntime/qv4arrayobject.cpp @@ -41,10 +41,10 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(ArrayCtor); -ArrayCtor::Data::Data(ExecutionContext *scope) +Heap::ArrayCtor::ArrayCtor(QV4::ExecutionContext *scope) : Heap::FunctionObject(scope, QStringLiteral("Array")) { - setVTable(staticVTable()); + setVTable(QV4::ArrayCtor::staticVTable()); } ReturnedValue ArrayCtor::construct(Managed *m, CallData *callData) diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h index 4c211701ce..cbb3c24bc2 100644 --- a/src/qml/jsruntime/qv4arrayobject_p.h +++ b/src/qml/jsruntime/qv4arrayobject_p.h @@ -41,13 +41,17 @@ QT_BEGIN_NAMESPACE namespace QV4 { +namespace Heap { + +struct ArrayCtor : FunctionObject { + ArrayCtor(QV4::ExecutionContext *scope); +}; + +} + struct ArrayCtor: FunctionObject { - struct Data : Heap::FunctionObject { - Data(ExecutionContext *scope); - }; - - V4_OBJECT(FunctionObject) + V4_OBJECT2(ArrayCtor, FunctionObject) static ReturnedValue construct(Managed *m, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); diff --git a/src/qml/jsruntime/qv4booleanobject.cpp b/src/qml/jsruntime/qv4booleanobject.cpp index 345d32f3bd..6de7059034 100644 --- a/src/qml/jsruntime/qv4booleanobject.cpp +++ b/src/qml/jsruntime/qv4booleanobject.cpp @@ -38,10 +38,10 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(BooleanCtor); DEFINE_OBJECT_VTABLE(BooleanObject); -BooleanCtor::Data::Data(ExecutionContext *scope) +Heap::BooleanCtor::BooleanCtor(QV4::ExecutionContext *scope) : Heap::FunctionObject(scope, QStringLiteral("Boolean")) { - setVTable(staticVTable()); + setVTable(QV4::BooleanCtor::staticVTable()); } ReturnedValue BooleanCtor::construct(Managed *m, CallData *callData) diff --git a/src/qml/jsruntime/qv4booleanobject_p.h b/src/qml/jsruntime/qv4booleanobject_p.h index ddd212eb79..c956c01853 100644 --- a/src/qml/jsruntime/qv4booleanobject_p.h +++ b/src/qml/jsruntime/qv4booleanobject_p.h @@ -41,13 +41,17 @@ QT_BEGIN_NAMESPACE namespace QV4 { +namespace Heap { + +struct BooleanCtor : FunctionObject { + BooleanCtor(QV4::ExecutionContext *scope); +}; + +} + struct BooleanCtor: FunctionObject { - struct Data : Heap::FunctionObject { - Data(ExecutionContext *scope); - }; - - V4_OBJECT(FunctionObject) + V4_OBJECT2(BooleanCtor, FunctionObject) static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index 9a43d6a321..749574fc29 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -634,10 +634,10 @@ static double getLocalTZA() DEFINE_OBJECT_VTABLE(DateObject); -DateObject::Data::Data(ExecutionEngine *engine, const QDateTime &date) +Heap::DateObject::DateObject(QV4::ExecutionEngine *engine, const QDateTime &date) : Heap::Object(engine->dateClass) { - setVTable(staticVTable()); + setVTable(QV4::DateObject::staticVTable()); value.setDouble(date.isValid() ? date.toMSecsSinceEpoch() : qSNaN()); } @@ -648,10 +648,10 @@ QDateTime DateObject::toQDateTime() const DEFINE_OBJECT_VTABLE(DateCtor); -DateCtor::Data::Data(ExecutionContext *scope) +Heap::DateCtor::DateCtor(QV4::ExecutionContext *scope) : Heap::FunctionObject(scope, QStringLiteral("Date")) { - setVTable(staticVTable()); + setVTable(QV4::DateCtor::staticVTable()); } ReturnedValue DateCtor::construct(Managed *m, CallData *callData) diff --git a/src/qml/jsruntime/qv4dateobject_p.h b/src/qml/jsruntime/qv4dateobject_p.h index a3d1f23b1d..4eba963fac 100644 --- a/src/qml/jsruntime/qv4dateobject_p.h +++ b/src/qml/jsruntime/qv4dateobject_p.h @@ -43,23 +43,27 @@ class QDateTime; namespace QV4 { +namespace Heap { + +struct DateObject : Object { + DateObject(QV4::ExecutionEngine *engine, const ValueRef date) + : Object(engine->dateClass) + { + value = date; + } + DateObject(QV4::ExecutionEngine *engine, const QDateTime &date); + inline DateObject(InternalClass *ic); + Value value; +}; + +struct DateCtor : FunctionObject { + DateCtor(QV4::ExecutionContext *scope); +}; + +} + struct DateObject: Object { - struct Data : Heap::Object { - Data(ExecutionEngine *engine, const ValueRef date) - : Heap::Object(engine->dateClass) - { - value = date; - } - Data(ExecutionEngine *engine, const QDateTime &date); - Data(InternalClass *ic) - : Heap::Object(ic) - { - Q_ASSERT(internalClass->vtable == staticVTable()); - value = Primitive::fromDouble(qSNaN()); - } - Value value; - }; - V4_OBJECT(Object) + V4_OBJECT2(DateObject, Object) Q_MANAGED_TYPE(DateObject) @@ -70,12 +74,16 @@ struct DateObject: Object { QDateTime toQDateTime() const; }; +Heap::DateObject::DateObject(InternalClass *ic) + : Heap::Object(ic) +{ + Q_ASSERT(internalClass->vtable == QV4::DateObject::staticVTable()); + value = Primitive::fromDouble(qSNaN()); +} + struct DateCtor: FunctionObject { - struct Data : Heap::FunctionObject { - Data(ExecutionContext *scope); - }; - V4_OBJECT(FunctionObject) + V4_OBJECT2(DateCtor, FunctionObject) static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *); diff --git a/src/qml/jsruntime/qv4variantobject.cpp b/src/qml/jsruntime/qv4variantobject.cpp index da3dd9f4e5..1a76839e59 100644 --- a/src/qml/jsruntime/qv4variantobject.cpp +++ b/src/qml/jsruntime/qv4variantobject.cpp @@ -43,12 +43,12 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(VariantObject); -VariantObject::Data::Data(InternalClass *ic) +Heap::VariantObject::VariantObject(InternalClass *ic) : Heap::Object(ic) { } -VariantObject::Data::Data(ExecutionEngine *engine, const QVariant &value) +Heap::VariantObject::VariantObject(QV4::ExecutionEngine *engine, const QVariant &value) : Heap::Object(engine->variantClass) { data = value; diff --git a/src/qml/jsruntime/qv4variantobject_p.h b/src/qml/jsruntime/qv4variantobject_p.h index d2dce35eba..5d68de1be3 100644 --- a/src/qml/jsruntime/qv4variantobject_p.h +++ b/src/qml/jsruntime/qv4variantobject_p.h @@ -56,20 +56,25 @@ QT_BEGIN_NAMESPACE namespace QV4 { +namespace Heap { + +struct VariantObject : Object, public ExecutionEngine::ScarceResourceData +{ + VariantObject(InternalClass *ic); + VariantObject(QV4::ExecutionEngine *engine, const QVariant &value); + ~VariantObject() { + if (isScarce()) + node.remove(); + } + bool isScarce() const; + int vmePropertyReferenceCount; +}; + +} + struct VariantObject : Object { - struct Data : Heap::Object, public ExecutionEngine::ScarceResourceData - { - Data(InternalClass *ic); - Data(ExecutionEngine *engine, const QVariant &value); - ~Data() { - if (isScarce()) - node.remove(); - } - bool isScarce() const; - int vmePropertyReferenceCount; - }; - V4_OBJECT(Object) + V4_OBJECT2(VariantObject, Object) static QVariant toVariant(const ValueRef v); -- cgit v1.2.3