aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4argumentsobject_p.h8
-rw-r--r--src/qml/jsruntime/qv4arraybuffer.cpp2
-rw-r--r--src/qml/jsruntime/qv4arraybuffer_p.h2
-rw-r--r--src/qml/jsruntime/qv4arrayobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4arrayobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4booleanobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4booleanobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4context.cpp2
-rw-r--r--src/qml/jsruntime/qv4context_p.h2
-rw-r--r--src/qml/jsruntime/qv4dataview.cpp2
-rw-r--r--src/qml/jsruntime/qv4dataview_p.h2
-rw-r--r--src/qml/jsruntime/qv4dateobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4dateobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4engine.cpp6
-rw-r--r--src/qml/jsruntime/qv4errorobject.cpp4
-rw-r--r--src/qml/jsruntime/qv4errorobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp57
-rw-r--r--src/qml/jsruntime/qv4functionobject_p.h130
-rw-r--r--src/qml/jsruntime/qv4globalobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4globalobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4numberobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4numberobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4objectproto.cpp2
-rw-r--r--src/qml/jsruntime/qv4objectproto_p.h2
-rw-r--r--src/qml/jsruntime/qv4qobjectwrapper.cpp2
-rw-r--r--src/qml/jsruntime/qv4qobjectwrapper_p.h2
-rw-r--r--src/qml/jsruntime/qv4regexpobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4regexpobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp2
-rw-r--r--src/qml/jsruntime/qv4script.cpp4
-rw-r--r--src/qml/jsruntime/qv4script_p.h2
-rw-r--r--src/qml/jsruntime/qv4stringobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4stringobject_p.h2
-rw-r--r--src/qml/jsruntime/qv4typedarray.cpp2
-rw-r--r--src/qml/jsruntime/qv4typedarray_p.h2
-rw-r--r--src/qml/qml/qqmlxmlhttprequest.cpp4
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp4
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions_p.h4
-rw-r--r--src/qml/types/qqmldelegatemodel.cpp4
-rw-r--r--tools/qmljs/qmljs.cpp8
40 files changed, 153 insertions, 138 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject_p.h b/src/qml/jsruntime/qv4argumentsobject_p.h
index ff233da077..f215d986be 100644
--- a/src/qml/jsruntime/qv4argumentsobject_p.h
+++ b/src/qml/jsruntime/qv4argumentsobject_p.h
@@ -42,9 +42,9 @@ namespace QV4 {
struct ArgumentsGetterFunction: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope, uint index)
- : FunctionObject::Data(scope)
+ : Heap::FunctionObject(scope)
, index(index)
{
setVTable(staticVTable());
@@ -60,9 +60,9 @@ struct ArgumentsGetterFunction: FunctionObject
struct ArgumentsSetterFunction: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope, uint index)
- : FunctionObject::Data(scope)
+ : Heap::FunctionObject(scope)
, index(index)
{
setVTable(staticVTable());
diff --git a/src/qml/jsruntime/qv4arraybuffer.cpp b/src/qml/jsruntime/qv4arraybuffer.cpp
index 134228e943..55a80f2315 100644
--- a/src/qml/jsruntime/qv4arraybuffer.cpp
+++ b/src/qml/jsruntime/qv4arraybuffer.cpp
@@ -40,7 +40,7 @@ DEFINE_OBJECT_VTABLE(ArrayBufferCtor);
DEFINE_OBJECT_VTABLE(ArrayBuffer);
ArrayBufferCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("ArrayBuffer"))
+ : Heap::FunctionObject(scope, QStringLiteral("ArrayBuffer"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4arraybuffer_p.h b/src/qml/jsruntime/qv4arraybuffer_p.h
index 6941a5153f..e1bf1d7ef0 100644
--- a/src/qml/jsruntime/qv4arraybuffer_p.h
+++ b/src/qml/jsruntime/qv4arraybuffer_p.h
@@ -42,7 +42,7 @@ namespace QV4 {
struct ArrayBufferCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp
index 59d0c35be3..5da80c63ba 100644
--- a/src/qml/jsruntime/qv4arrayobject.cpp
+++ b/src/qml/jsruntime/qv4arrayobject.cpp
@@ -42,7 +42,7 @@ using namespace QV4;
DEFINE_OBJECT_VTABLE(ArrayCtor);
ArrayCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Array"))
+ : Heap::FunctionObject(scope, QStringLiteral("Array"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h
index 9cd967ddd9..4c211701ce 100644
--- a/src/qml/jsruntime/qv4arrayobject_p.h
+++ b/src/qml/jsruntime/qv4arrayobject_p.h
@@ -43,7 +43,7 @@ namespace QV4 {
struct ArrayCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
diff --git a/src/qml/jsruntime/qv4booleanobject.cpp b/src/qml/jsruntime/qv4booleanobject.cpp
index 17f638426a..345d32f3bd 100644
--- a/src/qml/jsruntime/qv4booleanobject.cpp
+++ b/src/qml/jsruntime/qv4booleanobject.cpp
@@ -39,7 +39,7 @@ DEFINE_OBJECT_VTABLE(BooleanCtor);
DEFINE_OBJECT_VTABLE(BooleanObject);
BooleanCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Boolean"))
+ : Heap::FunctionObject(scope, QStringLiteral("Boolean"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4booleanobject_p.h b/src/qml/jsruntime/qv4booleanobject_p.h
index 2e96b72b64..ddd212eb79 100644
--- a/src/qml/jsruntime/qv4booleanobject_p.h
+++ b/src/qml/jsruntime/qv4booleanobject_p.h
@@ -43,7 +43,7 @@ namespace QV4 {
struct BooleanCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp
index c9dd694cd3..caa98604c8 100644
--- a/src/qml/jsruntime/qv4context.cpp
+++ b/src/qml/jsruntime/qv4context.cpp
@@ -158,7 +158,7 @@ Heap::CatchContext::CatchContext(ExecutionEngine *engine, QV4::String *exception
this->exceptionValue = exceptionValue;
}
-Heap::CallContext::CallContext(ExecutionEngine *engine, QV4::Object *qml, FunctionObject *function)
+Heap::CallContext::CallContext(ExecutionEngine *engine, QV4::Object *qml, QV4::FunctionObject *function)
: Heap::ExecutionContext(engine, Heap::ExecutionContext::Type_QmlContext)
{
this->function = function;
diff --git a/src/qml/jsruntime/qv4context_p.h b/src/qml/jsruntime/qv4context_p.h
index 281f80bef6..6bb926db92 100644
--- a/src/qml/jsruntime/qv4context_p.h
+++ b/src/qml/jsruntime/qv4context_p.h
@@ -111,7 +111,7 @@ struct CallContext : ExecutionContext {
}
CallContext(ExecutionEngine *engine, Object *qml, QV4::FunctionObject *function);
- FunctionObject *function;
+ QV4::FunctionObject *function;
int realArgumentCount;
Value *locals;
Object *activation;
diff --git a/src/qml/jsruntime/qv4dataview.cpp b/src/qml/jsruntime/qv4dataview.cpp
index df689c6a39..8c0f109ff4 100644
--- a/src/qml/jsruntime/qv4dataview.cpp
+++ b/src/qml/jsruntime/qv4dataview.cpp
@@ -42,7 +42,7 @@ DEFINE_OBJECT_VTABLE(DataViewCtor);
DEFINE_OBJECT_VTABLE(DataView);
DataViewCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("DataView"))
+ : Heap::FunctionObject(scope, QStringLiteral("DataView"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4dataview_p.h b/src/qml/jsruntime/qv4dataview_p.h
index df0ed881b4..1e504aaf0f 100644
--- a/src/qml/jsruntime/qv4dataview_p.h
+++ b/src/qml/jsruntime/qv4dataview_p.h
@@ -44,7 +44,7 @@ struct ArrayBuffer;
struct DataViewCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp
index 9b3510fd92..9a43d6a321 100644
--- a/src/qml/jsruntime/qv4dateobject.cpp
+++ b/src/qml/jsruntime/qv4dateobject.cpp
@@ -649,7 +649,7 @@ QDateTime DateObject::toQDateTime() const
DEFINE_OBJECT_VTABLE(DateCtor);
DateCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Date"))
+ : Heap::FunctionObject(scope, QStringLiteral("Date"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4dateobject_p.h b/src/qml/jsruntime/qv4dateobject_p.h
index dfc17b391d..a3d1f23b1d 100644
--- a/src/qml/jsruntime/qv4dateobject_p.h
+++ b/src/qml/jsruntime/qv4dateobject_p.h
@@ -72,7 +72,7 @@ struct DateObject: Object {
struct DateCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
V4_OBJECT(FunctionObject)
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index 865574425c..e4fcb2a8fd 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -299,13 +299,13 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
InternalClass *functionProtoClass = InternalClass::create(this, FunctionObject::staticVTable(), objectPrototype);
uint index;
functionProtoClass = functionProtoClass->addMember(id_prototype, Attr_NotEnumerable, &index);
- Q_ASSERT(index == FunctionObject::Index_Prototype);
+ Q_ASSERT(index == Heap::FunctionObject::Index_Prototype);
ScopedObject functionPrototype(scope, memoryManager->alloc<FunctionPrototype>(functionProtoClass));
functionClass = InternalClass::create(this, FunctionObject::staticVTable(), functionPrototype);
functionClass = functionClass->addMember(id_prototype, Attr_NotEnumerable|Attr_NotConfigurable, &index);
- Q_ASSERT(index == FunctionObject::Index_Prototype);
+ Q_ASSERT(index == Heap::FunctionObject::Index_Prototype);
protoClass = objectClass->addMember(id_constructor, Attr_NotEnumerable, &index);
- Q_ASSERT(index == FunctionObject::Index_ProtoConstructor);
+ Q_ASSERT(index == Heap::FunctionObject::Index_ProtoConstructor);
Scoped<RegExpPrototype> regExpPrototype(scope, memoryManager->alloc<RegExpPrototype>(InternalClass::create(this, RegExpPrototype::staticVTable(), objectPrototype)));
regExpClass = InternalClass::create(this, RegExpObject::staticVTable(), regExpPrototype.getPointer());
diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp
index d05d3b1e36..9bd6597a6d 100644
--- a/src/qml/jsruntime/qv4errorobject.cpp
+++ b/src/qml/jsruntime/qv4errorobject.cpp
@@ -246,13 +246,13 @@ DEFINE_OBJECT_VTABLE(TypeErrorCtor);
DEFINE_OBJECT_VTABLE(URIErrorCtor);
ErrorCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Error"))
+ : Heap::FunctionObject(scope, QStringLiteral("Error"))
{
setVTable(staticVTable());
}
ErrorCtor::Data::Data(ExecutionContext *scope, const QString &name)
- : FunctionObject::Data(scope, name)
+ : Heap::FunctionObject(scope, name)
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4errorobject_p.h b/src/qml/jsruntime/qv4errorobject_p.h
index 7105050dea..3d438352aa 100644
--- a/src/qml/jsruntime/qv4errorobject_p.h
+++ b/src/qml/jsruntime/qv4errorobject_p.h
@@ -123,7 +123,7 @@ struct URIErrorObject: ErrorObject {
struct ErrorCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
Data(ExecutionContext *scope, const QString &name);
};
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp
index cfe4af9be3..ecfd64bbd9 100644
--- a/src/qml/jsruntime/qv4functionobject.cpp
+++ b/src/qml/jsruntime/qv4functionobject.cpp
@@ -62,7 +62,7 @@ using namespace QV4;
DEFINE_OBJECT_VTABLE(FunctionObject);
-FunctionObject::Data::Data(ExecutionContext *scope, String *name, bool createProto)
+Heap::FunctionObject::FunctionObject(QV4::ExecutionContext *scope, QV4::String *name, bool createProto)
: Heap::Object(scope->d()->engine->functionClass)
, scope(scope)
{
@@ -72,7 +72,7 @@ FunctionObject::Data::Data(ExecutionContext *scope, String *name, bool createPro
}
-FunctionObject::Data::Data(ExecutionContext *scope, const QString &name, bool createProto)
+Heap::FunctionObject::FunctionObject(QV4::ExecutionContext *scope, const QString &name, bool createProto)
: Heap::Object(scope->d()->engine->functionClass)
, scope(scope)
{
@@ -82,7 +82,7 @@ FunctionObject::Data::Data(ExecutionContext *scope, const QString &name, bool cr
f->init(n.getPointer(), createProto);
}
-FunctionObject::Data::Data(ExecutionContext *scope, const ReturnedValue name)
+Heap::FunctionObject::FunctionObject(QV4::ExecutionContext *scope, const ReturnedValue name)
: Heap::Object(scope->d()->engine->functionClass)
, scope(scope)
{
@@ -92,7 +92,7 @@ FunctionObject::Data::Data(ExecutionContext *scope, const ReturnedValue name)
f->init(n.getPointer(), false);
}
-FunctionObject::Data::Data(InternalClass *ic)
+Heap::FunctionObject::FunctionObject(InternalClass *ic)
: Heap::Object(ic)
, scope(ic->engine->rootContext)
{
@@ -103,7 +103,7 @@ FunctionObject::Data::Data(InternalClass *ic)
}
-FunctionObject::Data::~Data()
+Heap::FunctionObject::~FunctionObject()
{
if (function)
function->compilationUnit->release();
@@ -117,14 +117,14 @@ void FunctionObject::init(String *n, bool createProto)
d()->needsActivation = true;
d()->strictMode = false;
- ensureMemberIndex(s.engine, Index_Prototype);
+ ensureMemberIndex(s.engine, Heap::FunctionObject::Index_Prototype);
if (createProto) {
Scoped<Object> proto(s, scope()->d()->engine->newObject(scope()->d()->engine->protoClass));
- proto->ensureMemberIndex(s.engine, Index_ProtoConstructor);
- proto->memberData()->data()[Index_ProtoConstructor] = this->asReturnedValue();
- memberData()->data()[Index_Prototype] = proto.asReturnedValue();
+ proto->ensureMemberIndex(s.engine, Heap::FunctionObject::Index_ProtoConstructor);
+ proto->memberData()->data()[Heap::FunctionObject::Index_ProtoConstructor] = this->asReturnedValue();
+ memberData()->data()[Heap::FunctionObject::Index_Prototype] = proto.asReturnedValue();
} else {
- memberData()->data()[Index_Prototype] = Encode::undefined();
+ memberData()->data()[Heap::FunctionObject::Index_Prototype] = Encode::undefined();
}
ScopedValue v(s, n);
@@ -157,7 +157,7 @@ ReturnedValue FunctionObject::call(Managed *, CallData *)
void FunctionObject::markObjects(Heap::Base *that, ExecutionEngine *e)
{
- FunctionObject::Data *o = static_cast<FunctionObject::Data *>(that);
+ Heap::FunctionObject *o = static_cast<Heap::FunctionObject *>(that);
if (o->scope)
o->scope->mark(e);
@@ -176,10 +176,10 @@ Returned<FunctionObject> *FunctionObject::createScriptFunction(ExecutionContext
DEFINE_OBJECT_VTABLE(FunctionCtor);
-FunctionCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Function"))
+Heap::FunctionCtor::FunctionCtor(QV4::ExecutionContext *scope)
+ : Heap::FunctionObject(scope, QStringLiteral("Function"))
{
- setVTable(staticVTable());
+ setVTable(QV4::FunctionCtor::staticVTable());
}
// 15.3.2
@@ -239,8 +239,8 @@ ReturnedValue FunctionCtor::call(Managed *that, CallData *callData)
DEFINE_OBJECT_VTABLE(FunctionPrototype);
-FunctionPrototype::Data::Data(InternalClass *ic)
- : FunctionObject::Data(ic)
+Heap::FunctionPrototype::FunctionPrototype(InternalClass *ic)
+ : Heap::FunctionObject(ic)
{
}
@@ -348,10 +348,10 @@ ReturnedValue FunctionPrototype::method_bind(CallContext *ctx)
DEFINE_OBJECT_VTABLE(ScriptFunction);
-ScriptFunction::Data::Data(ExecutionContext *scope, Function *function)
- : SimpleScriptFunction::Data(scope, function, true)
+Heap::ScriptFunction::ScriptFunction(QV4::ExecutionContext *scope, Function *function)
+ : Heap::SimpleScriptFunction(scope, function, true)
{
- setVTable(staticVTable());
+ setVTable(QV4::ScriptFunction::staticVTable());
}
ReturnedValue ScriptFunction::construct(Managed *that, CallData *callData)
@@ -409,10 +409,10 @@ ReturnedValue ScriptFunction::call(Managed *that, CallData *callData)
DEFINE_OBJECT_VTABLE(SimpleScriptFunction);
-SimpleScriptFunction::Data::Data(ExecutionContext *scope, Function *function, bool createProto)
- : FunctionObject::Data(scope, function->name(), createProto)
+Heap::SimpleScriptFunction::SimpleScriptFunction(QV4::ExecutionContext *scope, Function *function, bool createProto)
+ : Heap::FunctionObject(scope, function->name(), createProto)
{
- setVTable(staticVTable());
+ setVTable(QV4::SimpleScriptFunction::staticVTable());
this->function = function;
function->compilationUnit->addref();
@@ -531,11 +531,11 @@ InternalClass *SimpleScriptFunction::internalClassForConstructor()
DEFINE_OBJECT_VTABLE(BuiltinFunction);
-BuiltinFunction::Data::Data(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *))
- : FunctionObject::Data(scope, name)
+Heap::BuiltinFunction::BuiltinFunction(QV4::ExecutionContext *scope, QV4::String *name, ReturnedValue (*code)(QV4::CallContext *))
+ : Heap::FunctionObject(scope, name)
, code(code)
{
- setVTable(staticVTable());
+ setVTable(QV4::BuiltinFunction::staticVTable());
}
ReturnedValue BuiltinFunction::construct(Managed *f, CallData *)
@@ -585,13 +585,14 @@ DEFINE_OBJECT_VTABLE(IndexedBuiltinFunction);
DEFINE_OBJECT_VTABLE(BoundFunction);
-BoundFunction::Data::Data(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, MemberData *boundArgs)
- : FunctionObject::Data(scope, QStringLiteral("__bound function__"))
+Heap::BoundFunction::BoundFunction(QV4::ExecutionContext *scope, QV4::FunctionObject *target,
+ const ValueRef boundThis, QV4::MemberData *boundArgs)
+ : Heap::FunctionObject(scope, QStringLiteral("__bound function__"))
, target(target)
, boundArgs(boundArgs ? boundArgs->d() : 0)
{
this->boundThis = boundThis;
- setVTable(staticVTable());
+ setVTable(QV4::BoundFunction::staticVTable());
subtype = FunctionObject::BoundFunction;
Scope s(scope);
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h
index f19a3269cb..50c266313e 100644
--- a/src/qml/jsruntime/qv4functionobject_p.h
+++ b/src/qml/jsruntime/qv4functionobject_p.h
@@ -42,22 +42,9 @@ QT_BEGIN_NAMESPACE
namespace QV4 {
-struct Q_QML_EXPORT FunctionObject: Object {
- struct Q_QML_PRIVATE_EXPORT Data : Heap::Object {
- Data(ExecutionContext *scope, String *name, bool createProto = false);
- Data(ExecutionContext *scope, const QString &name = QString(), bool createProto = false);
- Data(ExecutionContext *scope, const ReturnedValue name);
- Data(InternalClass *ic);
- ~Data();
-
- ExecutionContext *scope;
- Function *function;
- };
- V4_OBJECT(Object)
- Q_MANAGED_TYPE(FunctionObject)
- enum {
- IsFunctionObject = true
- };
+namespace Heap {
+
+struct Q_QML_PRIVATE_EXPORT FunctionObject : Object {
// Used with Managed::subType
enum FunctionType {
RegularFunction = 0,
@@ -70,6 +57,58 @@ struct Q_QML_EXPORT FunctionObject: Object {
Index_ProtoConstructor = 0
};
+ FunctionObject(QV4::ExecutionContext *scope, QV4::String *name, bool createProto = false);
+ FunctionObject(QV4::ExecutionContext *scope, const QString &name = QString(), bool createProto = false);
+ FunctionObject(QV4::ExecutionContext *scope, const ReturnedValue name);
+ FunctionObject(InternalClass *ic);
+ ~FunctionObject();
+
+ QV4::ExecutionContext *scope;
+ Function *function;
+};
+
+struct FunctionCtor : FunctionObject {
+ FunctionCtor(QV4::ExecutionContext *scope);
+};
+
+struct FunctionPrototype : FunctionObject {
+ FunctionPrototype(InternalClass *ic);
+};
+
+struct Q_QML_EXPORT BuiltinFunction : FunctionObject {
+ BuiltinFunction(QV4::ExecutionContext *scope, QV4::String *name, ReturnedValue (*code)(QV4::CallContext *));
+ ReturnedValue (*code)(QV4::CallContext *);
+};
+
+struct IndexedBuiltinFunction : FunctionObject {
+ inline IndexedBuiltinFunction(QV4::ExecutionContext *scope, uint index, ReturnedValue (*code)(QV4::CallContext *ctx, uint index));
+ ReturnedValue (*code)(QV4::CallContext *, uint index);
+ uint index;
+};
+
+struct SimpleScriptFunction : FunctionObject {
+ SimpleScriptFunction(QV4::ExecutionContext *scope, Function *function, bool createProto);
+};
+
+struct ScriptFunction : SimpleScriptFunction {
+ ScriptFunction(QV4::ExecutionContext *scope, Function *function);
+};
+
+struct BoundFunction : FunctionObject {
+ BoundFunction(QV4::ExecutionContext *scope, QV4::FunctionObject *target, const ValueRef boundThis, QV4::MemberData *boundArgs);
+ QV4::FunctionObject *target;
+ Value boundThis;
+ MemberData *boundArgs;
+};
+
+}
+
+struct Q_QML_EXPORT FunctionObject: Object {
+ enum {
+ IsFunctionObject = true
+ };
+ V4_OBJECT2(FunctionObject, Object)
+ Q_MANAGED_TYPE(FunctionObject)
ExecutionContext *scope() { return d()->scope; }
Function *function() { return d()->function; }
@@ -96,7 +135,7 @@ struct Q_QML_EXPORT FunctionObject: Object {
static Returned<FunctionObject> *createScriptFunction(ExecutionContext *scope, Function *function, bool createProto = true);
- ReturnedValue protoProperty() { return memberData()->data()[Index_Prototype].asReturnedValue(); }
+ ReturnedValue protoProperty() { return memberData()->data()[Heap::FunctionObject::Index_Prototype].asReturnedValue(); }
bool needsActivation() const { return d()->needsActivation; }
bool strictMode() const { return d()->strictMode; }
@@ -112,11 +151,7 @@ inline FunctionObject *value_cast(const Value &v) {
struct FunctionCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
- Data(ExecutionContext *scope);
- };
-
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(FunctionCtor, FunctionObject)
static ReturnedValue construct(Managed *that, CallData *callData);
static ReturnedValue call(Managed *that, CallData *callData);
@@ -124,10 +159,7 @@ struct FunctionCtor: FunctionObject
struct FunctionPrototype: FunctionObject
{
- struct Data : FunctionObject::Data {
- Data(InternalClass *ic);
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(FunctionPrototype, FunctionObject)
void init(ExecutionEngine *engine, Object *ctor);
@@ -138,11 +170,7 @@ struct FunctionPrototype: FunctionObject
};
struct Q_QML_EXPORT BuiltinFunction: FunctionObject {
- struct Q_QML_EXPORT Data : FunctionObject::Data {
- Data(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *));
- ReturnedValue (*code)(CallContext *);
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(BuiltinFunction, FunctionObject)
static Returned<BuiltinFunction> *create(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *))
{
@@ -155,18 +183,7 @@ struct Q_QML_EXPORT BuiltinFunction: FunctionObject {
struct IndexedBuiltinFunction: FunctionObject
{
- struct Data : FunctionObject::Data {
- Data(ExecutionContext *scope, uint index, ReturnedValue (*code)(CallContext *ctx, uint index))
- : FunctionObject::Data(scope),
- code(code)
- , index(index)
- {
- setVTable(staticVTable());
- }
- ReturnedValue (*code)(CallContext *, uint index);
- uint index;
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(IndexedBuiltinFunction, FunctionObject)
static ReturnedValue construct(Managed *m, CallData *)
{
@@ -176,12 +193,18 @@ struct IndexedBuiltinFunction: FunctionObject
static ReturnedValue call(Managed *that, CallData *callData);
};
+Heap::IndexedBuiltinFunction::IndexedBuiltinFunction(QV4::ExecutionContext *scope, uint index,
+ ReturnedValue (*code)(QV4::CallContext *ctx, uint index))
+ : Heap::FunctionObject(scope),
+ code(code)
+ , index(index)
+{
+ setVTable(QV4::IndexedBuiltinFunction::staticVTable());
+}
+
struct SimpleScriptFunction: FunctionObject {
- struct Data : FunctionObject::Data {
- Data(ExecutionContext *scope, Function *function, bool createProto);
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(SimpleScriptFunction, FunctionObject)
static ReturnedValue construct(Managed *, CallData *callData);
static ReturnedValue call(Managed *that, CallData *callData);
@@ -190,10 +213,7 @@ struct SimpleScriptFunction: FunctionObject {
};
struct ScriptFunction: SimpleScriptFunction {
- struct Data : SimpleScriptFunction::Data {
- Data(ExecutionContext *scope, Function *function);
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(ScriptFunction, FunctionObject)
static ReturnedValue construct(Managed *, CallData *callData);
static ReturnedValue call(Managed *that, CallData *callData);
@@ -201,13 +221,7 @@ struct ScriptFunction: SimpleScriptFunction {
struct BoundFunction: FunctionObject {
- struct Data : FunctionObject::Data {
- Data(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, MemberData *boundArgs);
- FunctionObject *target;
- Value boundThis;
- Heap::MemberData *boundArgs;
- };
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(BoundFunction, FunctionObject)
static Returned<BoundFunction> *create(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, QV4::MemberData *boundArgs)
{
diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp
index bc97e17a83..8424fd6935 100644
--- a/src/qml/jsruntime/qv4globalobject.cpp
+++ b/src/qml/jsruntime/qv4globalobject.cpp
@@ -339,7 +339,7 @@ static QString decode(const QString &input, DecodeMode decodeMode, bool *ok)
DEFINE_OBJECT_VTABLE(EvalFunction);
EvalFunction::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, scope->d()->engine->id_eval)
+ : Heap::FunctionObject(scope, scope->d()->engine->id_eval)
{
setVTable(staticVTable());
Scope s(scope);
diff --git a/src/qml/jsruntime/qv4globalobject_p.h b/src/qml/jsruntime/qv4globalobject_p.h
index 352519ceaf..b14364b127 100644
--- a/src/qml/jsruntime/qv4globalobject_p.h
+++ b/src/qml/jsruntime/qv4globalobject_p.h
@@ -42,7 +42,7 @@ namespace QV4 {
struct Q_QML_EXPORT EvalFunction : FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp
index 44826c94c8..f4d0c47a1c 100644
--- a/src/qml/jsruntime/qv4numberobject.cpp
+++ b/src/qml/jsruntime/qv4numberobject.cpp
@@ -46,7 +46,7 @@ DEFINE_OBJECT_VTABLE(NumberCtor);
DEFINE_OBJECT_VTABLE(NumberObject);
NumberCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Number"))
+ : Heap::FunctionObject(scope, QStringLiteral("Number"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4numberobject_p.h b/src/qml/jsruntime/qv4numberobject_p.h
index 9edaf09749..ad3fe328ef 100644
--- a/src/qml/jsruntime/qv4numberobject_p.h
+++ b/src/qml/jsruntime/qv4numberobject_p.h
@@ -43,7 +43,7 @@ namespace QV4 {
struct NumberCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
V4_OBJECT(FunctionObject)
diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp
index 5a4fe253e2..f8e6329d85 100644
--- a/src/qml/jsruntime/qv4objectproto.cpp
+++ b/src/qml/jsruntime/qv4objectproto.cpp
@@ -50,7 +50,7 @@ using namespace QV4;
DEFINE_OBJECT_VTABLE(ObjectCtor);
ObjectCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("Object"))
+ : Heap::FunctionObject(scope, QStringLiteral("Object"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4objectproto_p.h b/src/qml/jsruntime/qv4objectproto_p.h
index 0a5bacbadb..f257d376db 100644
--- a/src/qml/jsruntime/qv4objectproto_p.h
+++ b/src/qml/jsruntime/qv4objectproto_p.h
@@ -43,7 +43,7 @@ namespace QV4 {
struct ObjectCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
V4_OBJECT(FunctionObject)
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp
index 480d1231e8..e6f014d05d 100644
--- a/src/qml/jsruntime/qv4qobjectwrapper.cpp
+++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp
@@ -1755,7 +1755,7 @@ ReturnedValue QObjectMethod::create(ExecutionContext *scope, QObject *object, in
}
QObjectMethod::Data::Data(ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal)
- : FunctionObject::Data(scope)
+ : Heap::FunctionObject(scope)
, object(object)
, index(index)
, qmlGlobal(qmlGlobal)
diff --git a/src/qml/jsruntime/qv4qobjectwrapper_p.h b/src/qml/jsruntime/qv4qobjectwrapper_p.h
index f65afabfbf..0de3450388 100644
--- a/src/qml/jsruntime/qv4qobjectwrapper_p.h
+++ b/src/qml/jsruntime/qv4qobjectwrapper_p.h
@@ -117,7 +117,7 @@ private:
struct Q_QML_EXPORT QObjectMethod : public QV4::FunctionObject
{
- struct Data : QV4::FunctionObject::Data {
+ struct Data : QV4::Heap::FunctionObject {
Data(QV4::ExecutionContext *scope, QObject *object, int index, const ValueRef qmlGlobal);
QPointer<QObject> object;
int index;
diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp
index ca28a902fd..5c729656ef 100644
--- a/src/qml/jsruntime/qv4regexpobject.cpp
+++ b/src/qml/jsruntime/qv4regexpobject.cpp
@@ -230,7 +230,7 @@ uint RegExpObject::flags() const
DEFINE_OBJECT_VTABLE(RegExpCtor);
RegExpCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("RegExp"))
+ : Heap::FunctionObject(scope, QStringLiteral("RegExp"))
{
setVTable(staticVTable());
clearLastMatch();
diff --git a/src/qml/jsruntime/qv4regexpobject_p.h b/src/qml/jsruntime/qv4regexpobject_p.h
index 481bd58bcd..42e6494199 100644
--- a/src/qml/jsruntime/qv4regexpobject_p.h
+++ b/src/qml/jsruntime/qv4regexpobject_p.h
@@ -96,7 +96,7 @@ protected:
struct RegExpCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
Value lastMatch;
StringValue lastInput;
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index c73d93bc9b..f76e9651a5 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -302,7 +302,7 @@ QV4::ReturnedValue Runtime::instanceof(ExecutionContext *ctx, const ValueRef lef
if (!f)
return ctx->engine()->throwTypeError();
- if (f->subtype() == FunctionObject::BoundFunction)
+ if (f->subtype() == Heap::FunctionObject::BoundFunction)
f = static_cast<BoundFunction *>(f)->target();
Object *v = left->asObject();
diff --git a/src/qml/jsruntime/qv4script.cpp b/src/qml/jsruntime/qv4script.cpp
index da6503c1ab..69304e5060 100644
--- a/src/qml/jsruntime/qv4script.cpp
+++ b/src/qml/jsruntime/qv4script.cpp
@@ -54,7 +54,7 @@
using namespace QV4;
QmlBindingWrapper::Data::Data(ExecutionContext *scope, Function *f, QV4::Object *qml)
- : FunctionObject::Data(scope, scope->d()->engine->id_eval, /*createProto = */ false)
+ : Heap::FunctionObject(scope, scope->d()->engine->id_eval, /*createProto = */ false)
, qml(qml)
{
Q_ASSERT(scope->inUse());
@@ -75,7 +75,7 @@ QmlBindingWrapper::Data::Data(ExecutionContext *scope, Function *f, QV4::Object
}
QmlBindingWrapper::Data::Data(ExecutionContext *scope, QV4::Object *qml)
- : FunctionObject::Data(scope, scope->d()->engine->id_eval, /*createProto = */ false)
+ : Heap::FunctionObject(scope, scope->d()->engine->id_eval, /*createProto = */ false)
, qml(qml)
{
Q_ASSERT(scope->inUse());
diff --git a/src/qml/jsruntime/qv4script_p.h b/src/qml/jsruntime/qv4script_p.h
index 26a08f63e8..337354b38b 100644
--- a/src/qml/jsruntime/qv4script_p.h
+++ b/src/qml/jsruntime/qv4script_p.h
@@ -72,7 +72,7 @@ struct ContextStateSaver {
};
struct Q_QML_EXPORT QmlBindingWrapper : FunctionObject {
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope, Function *f, QV4::Object *qml);
// Constructor for QML functions and signal handlers, resulting binding wrapper is not callable!
Data(ExecutionContext *scope, QV4::Object *qml);
diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp
index e48e3b6d4c..0c2261dca0 100644
--- a/src/qml/jsruntime/qv4stringobject.cpp
+++ b/src/qml/jsruntime/qv4stringobject.cpp
@@ -160,7 +160,7 @@ void StringObject::markObjects(Heap::Base *that, ExecutionEngine *e)
DEFINE_OBJECT_VTABLE(StringCtor);
StringCtor::Data::Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("String"))
+ : Heap::FunctionObject(scope, QStringLiteral("String"))
{
setVTable(staticVTable());
}
diff --git a/src/qml/jsruntime/qv4stringobject_p.h b/src/qml/jsruntime/qv4stringobject_p.h
index 332c4c86cc..5e5d28bf4c 100644
--- a/src/qml/jsruntime/qv4stringobject_p.h
+++ b/src/qml/jsruntime/qv4stringobject_p.h
@@ -64,7 +64,7 @@ protected:
struct StringCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope);
};
V4_OBJECT(FunctionObject)
diff --git a/src/qml/jsruntime/qv4typedarray.cpp b/src/qml/jsruntime/qv4typedarray.cpp
index 7710bd6b26..d4b51c7214 100644
--- a/src/qml/jsruntime/qv4typedarray.cpp
+++ b/src/qml/jsruntime/qv4typedarray.cpp
@@ -194,7 +194,7 @@ const TypedArrayOperations operations[TypedArray::NTypes] = {
TypedArrayCtor::Data::Data(ExecutionContext *scope, TypedArray::Type t)
- : FunctionObject::Data(scope, QLatin1String(operations[t].name))
+ : Heap::FunctionObject(scope, QLatin1String(operations[t].name))
, type(t)
{
setVTable(staticVTable());
diff --git a/src/qml/jsruntime/qv4typedarray_p.h b/src/qml/jsruntime/qv4typedarray_p.h
index 8294659fe1..20a7827bf2 100644
--- a/src/qml/jsruntime/qv4typedarray_p.h
+++ b/src/qml/jsruntime/qv4typedarray_p.h
@@ -89,7 +89,7 @@ struct TypedArray : Object
struct TypedArrayCtor: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope, TypedArray::Type t);
TypedArray::Type type;
diff --git a/src/qml/qml/qqmlxmlhttprequest.cpp b/src/qml/qml/qqmlxmlhttprequest.cpp
index 587a58c313..b6727dc41a 100644
--- a/src/qml/qml/qqmlxmlhttprequest.cpp
+++ b/src/qml/qml/qqmlxmlhttprequest.cpp
@@ -1618,9 +1618,9 @@ DEFINE_OBJECT_VTABLE(QQmlXMLHttpRequestWrapper);
struct QQmlXMLHttpRequestCtor : public FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionEngine *engine)
- : FunctionObject::Data(engine->rootContext, QStringLiteral("XMLHttpRequest"))
+ : Heap::FunctionObject(engine->rootContext, QStringLiteral("XMLHttpRequest"))
{
setVTable(staticVTable());
Scope scope(engine);
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index 61fe2a4876..fa076073d8 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -1166,8 +1166,8 @@ ReturnedValue QtObject::method_locale(CallContext *ctx)
return QQmlLocale::locale(v8engine, code);
}
-QQmlBindingFunction::Data::Data(FunctionObject *originalFunction)
- : QV4::FunctionObject::Data(originalFunction->scope(), originalFunction->name())
+QQmlBindingFunction::Data::Data(QV4::FunctionObject *originalFunction)
+ : QV4::Heap::FunctionObject(originalFunction->scope(), originalFunction->name())
, originalFunction(originalFunction)
{
setVTable(staticVTable());
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
index a21ae0afd3..696cf04397 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h
@@ -143,8 +143,8 @@ struct GlobalExtensions {
struct QQmlBindingFunction : public QV4::FunctionObject
{
- struct Data : FunctionObject::Data {
- Data(FunctionObject *originalFunction);
+ struct Data : Heap::FunctionObject {
+ Data(QV4::FunctionObject *originalFunction);
QV4::FunctionObject *originalFunction;
// Set when the binding is created later
QQmlSourceLocation bindingLocation;
diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp
index 22d89f31c0..095112094e 100644
--- a/src/qml/types/qqmldelegatemodel.cpp
+++ b/src/qml/types/qqmldelegatemodel.cpp
@@ -54,9 +54,9 @@ class QQmlDelegateModelItem;
struct DelegateModelGroupFunction: QV4::FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : QV4::Heap::FunctionObject {
Data(QV4::ExecutionContext *scope, uint flag, QV4::ReturnedValue (*code)(QQmlDelegateModelItem *item, uint flag, const QV4::ValueRef arg))
- : FunctionObject::Data(scope, QStringLiteral("DelegateModelGroupFunction"))
+ : QV4::Heap::FunctionObject(scope, QStringLiteral("DelegateModelGroupFunction"))
, flag(flag)
, code(code)
{
diff --git a/tools/qmljs/qmljs.cpp b/tools/qmljs/qmljs.cpp
index c381d702e1..2e4db65f94 100644
--- a/tools/qmljs/qmljs.cpp
+++ b/tools/qmljs/qmljs.cpp
@@ -64,9 +64,9 @@ using namespace QV4;
struct Print: FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("print")) {
+ : Heap::FunctionObject(scope, QStringLiteral("print")) {
setVTable(staticVTable());
}
};
@@ -89,9 +89,9 @@ DEFINE_OBJECT_VTABLE(Print);
struct GC: public FunctionObject
{
- struct Data : FunctionObject::Data {
+ struct Data : Heap::FunctionObject {
Data(ExecutionContext *scope)
- : FunctionObject::Data(scope, QStringLiteral("gc"))
+ : Heap::FunctionObject(scope, QStringLiteral("gc"))
{
setVTable(staticVTable());
}