aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4errorobject.cpp110
-rw-r--r--src/qml/jsruntime/qv4errorobject_p.h157
-rw-r--r--src/qml/jsruntime/qv4managed.cpp16
3 files changed, 153 insertions, 130 deletions
diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp
index 9bd6597a6d..749cf32d35 100644
--- a/src/qml/jsruntime/qv4errorobject.cpp
+++ b/src/qml/jsruntime/qv4errorobject.cpp
@@ -63,25 +63,25 @@
using namespace QV4;
-ErrorObject::Data::Data(InternalClass *ic)
+Heap::ErrorObject::ErrorObject(InternalClass *ic)
: Heap::Object(ic)
{
Scope scope(ic->engine);
- Scoped<ErrorObject> e(scope, this);
+ Scoped<QV4::ErrorObject> e(scope, this);
ScopedString s(scope, scope.engine->newString(QStringLiteral("Error")));
e->defineDefaultProperty(QStringLiteral("name"), s);
}
-ErrorObject::Data::Data(InternalClass *ic, const ValueRef message, ErrorType t)
+Heap::ErrorObject::ErrorObject(InternalClass *ic, const ValueRef message, ErrorType t)
: Heap::Object(ic)
{
subtype = t;
Scope scope(ic->engine);
- Scoped<ErrorObject> e(scope, this);
+ Scoped<QV4::ErrorObject> e(scope, this);
- e->defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0);
+ e->defineAccessorProperty(QStringLiteral("stack"), QV4::ErrorObject::method_get_stack, 0);
if (!message->isUndefined())
e->defineDefaultProperty(QStringLiteral("message"), message);
@@ -95,16 +95,16 @@ ErrorObject::Data::Data(InternalClass *ic, const ValueRef message, ErrorType t)
}
}
-ErrorObject::Data::Data(InternalClass *ic, const QString &message, ErrorObject::ErrorType t)
+Heap::ErrorObject::ErrorObject(InternalClass *ic, const QString &message, ErrorObject::ErrorType t)
: Heap::Object(ic)
{
subtype = t;
Scope scope(ic->engine);
- Scoped<ErrorObject> e(scope, this);
+ Scoped<QV4::ErrorObject> e(scope, this);
ScopedString s(scope);
- e->defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0);
+ e->defineAccessorProperty(QStringLiteral("stack"), QV4::ErrorObject::method_get_stack, 0);
ScopedValue v(scope, scope.engine->newString(message));
e->defineDefaultProperty(QStringLiteral("message"), v);
@@ -117,16 +117,16 @@ ErrorObject::Data::Data(InternalClass *ic, const QString &message, ErrorObject::
}
}
-ErrorObject::Data::Data(InternalClass *ic, const QString &message, const QString &fileName, int line, int column, ErrorObject::ErrorType t)
+Heap::ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QString &fileName, int line, int column, ErrorObject::ErrorType t)
: Heap::Object(ic)
{
subtype = t;
Scope scope(ic->engine);
- Scoped<ErrorObject> e(scope, this);
+ Scoped<QV4::ErrorObject> e(scope, this);
ScopedString s(scope);
- e->defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0);
+ e->defineAccessorProperty(QStringLiteral("stack"), QV4::ErrorObject::method_get_stack, 0);
e->defineDefaultProperty(QStringLiteral("name"), (s = scope.engine->newString(e->className())));
e->d()->stackTrace = scope.engine->stackTrace();
@@ -182,58 +182,58 @@ DEFINE_OBJECT_VTABLE(ErrorObject);
DEFINE_OBJECT_VTABLE(SyntaxErrorObject);
-SyntaxErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef msg)
- : ErrorObject::Data(engine->syntaxErrorClass, msg, SyntaxError)
+Heap::SyntaxErrorObject::SyntaxErrorObject(ExecutionEngine *engine, const ValueRef msg)
+ : Heap::ErrorObject(engine->syntaxErrorClass, msg, SyntaxError)
{
}
-SyntaxErrorObject::Data::Data(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber)
- : ErrorObject::Data(engine->syntaxErrorClass, msg, fileName, lineNumber, columnNumber, SyntaxError)
+Heap::SyntaxErrorObject::SyntaxErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber)
+ : Heap::ErrorObject(engine->syntaxErrorClass, msg, fileName, lineNumber, columnNumber, SyntaxError)
{
}
-EvalErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef message)
- : ErrorObject::Data(engine->evalErrorClass, message, EvalError)
+Heap::EvalErrorObject::EvalErrorObject(ExecutionEngine *engine, const ValueRef message)
+ : Heap::ErrorObject(engine->evalErrorClass, message, EvalError)
{
}
-RangeErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef message)
- : ErrorObject::Data(engine->rangeErrorClass, message, RangeError)
+Heap::RangeErrorObject::RangeErrorObject(ExecutionEngine *engine, const ValueRef message)
+ : Heap::ErrorObject(engine->rangeErrorClass, message, RangeError)
{
}
-RangeErrorObject::Data::Data(ExecutionEngine *engine, const QString &message)
- : ErrorObject::Data(engine->rangeErrorClass, message, RangeError)
+Heap::RangeErrorObject::RangeErrorObject(ExecutionEngine *engine, const QString &message)
+ : Heap::ErrorObject(engine->rangeErrorClass, message, RangeError)
{
}
-ReferenceErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef message)
- : ErrorObject::Data(engine->referenceErrorClass, message, ReferenceError)
+Heap::ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const ValueRef message)
+ : Heap::ErrorObject(engine->referenceErrorClass, message, ReferenceError)
{
}
-ReferenceErrorObject::Data::Data(ExecutionEngine *engine, const QString &message)
- : ErrorObject::Data(engine->referenceErrorClass, message, ReferenceError)
+Heap::ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const QString &message)
+ : Heap::ErrorObject(engine->referenceErrorClass, message, ReferenceError)
{
}
-ReferenceErrorObject::Data::Data(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber)
- : ErrorObject::Data(engine->referenceErrorClass, msg, fileName, lineNumber, columnNumber, ReferenceError)
+Heap::ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber)
+ : Heap::ErrorObject(engine->referenceErrorClass, msg, fileName, lineNumber, columnNumber, ReferenceError)
{
}
-TypeErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef message)
- : ErrorObject::Data(engine->typeErrorClass, message, TypeError)
+Heap::TypeErrorObject::TypeErrorObject(ExecutionEngine *engine, const ValueRef message)
+ : Heap::ErrorObject(engine->typeErrorClass, message, TypeError)
{
}
-TypeErrorObject::Data::Data(ExecutionEngine *engine, const QString &message)
- : ErrorObject::Data(engine->typeErrorClass, message, TypeError)
+Heap::TypeErrorObject::TypeErrorObject(ExecutionEngine *engine, const QString &message)
+ : Heap::ErrorObject(engine->typeErrorClass, message, TypeError)
{
}
-URIErrorObject::Data::Data(ExecutionEngine *engine, const ValueRef message)
- : ErrorObject::Data(engine->uriErrorClass, message, URIError)
+Heap::URIErrorObject::URIErrorObject(ExecutionEngine *engine, const ValueRef message)
+ : Heap::ErrorObject(engine->uriErrorClass, message, URIError)
{
}
@@ -245,16 +245,16 @@ DEFINE_OBJECT_VTABLE(SyntaxErrorCtor);
DEFINE_OBJECT_VTABLE(TypeErrorCtor);
DEFINE_OBJECT_VTABLE(URIErrorCtor);
-ErrorCtor::Data::Data(ExecutionContext *scope)
+Heap::ErrorCtor::ErrorCtor(QV4::ExecutionContext *scope)
: Heap::FunctionObject(scope, QStringLiteral("Error"))
{
- setVTable(staticVTable());
+ setVTable(QV4::ErrorCtor::staticVTable());
}
-ErrorCtor::Data::Data(ExecutionContext *scope, const QString &name)
+Heap::ErrorCtor::ErrorCtor(QV4::ExecutionContext *scope, const QString &name)
: Heap::FunctionObject(scope, name)
{
- setVTable(staticVTable());
+ setVTable(QV4::ErrorCtor::staticVTable());
}
ReturnedValue ErrorCtor::construct(Managed *m, CallData *callData)
@@ -269,10 +269,10 @@ ReturnedValue ErrorCtor::call(Managed *that, CallData *callData)
return static_cast<Object *>(that)->construct(callData);
}
-EvalErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("EvalError"))
+Heap::EvalErrorCtor::EvalErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("EvalError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::EvalErrorCtor::staticVTable());
}
ReturnedValue EvalErrorCtor::construct(Managed *m, CallData *callData)
@@ -282,10 +282,10 @@ ReturnedValue EvalErrorCtor::construct(Managed *m, CallData *callData)
return (m->engine()->memoryManager->alloc<EvalErrorObject>(m->engine(), v))->asReturnedValue();
}
-RangeErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("RangeError"))
+Heap::RangeErrorCtor::RangeErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("RangeError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::RangeErrorCtor::staticVTable());
}
ReturnedValue RangeErrorCtor::construct(Managed *m, CallData *callData)
@@ -295,10 +295,10 @@ ReturnedValue RangeErrorCtor::construct(Managed *m, CallData *callData)
return (m->engine()->memoryManager->alloc<RangeErrorObject>(scope.engine, v))->asReturnedValue();
}
-ReferenceErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("ReferenceError"))
+Heap::ReferenceErrorCtor::ReferenceErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("ReferenceError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::ReferenceErrorCtor::staticVTable());
}
ReturnedValue ReferenceErrorCtor::construct(Managed *m, CallData *callData)
@@ -308,10 +308,10 @@ ReturnedValue ReferenceErrorCtor::construct(Managed *m, CallData *callData)
return (m->engine()->memoryManager->alloc<ReferenceErrorObject>(scope.engine, v))->asReturnedValue();
}
-SyntaxErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("SyntaxError"))
+Heap::SyntaxErrorCtor::SyntaxErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("SyntaxError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::SyntaxErrorCtor::staticVTable());
}
ReturnedValue SyntaxErrorCtor::construct(Managed *m, CallData *callData)
@@ -321,10 +321,10 @@ ReturnedValue SyntaxErrorCtor::construct(Managed *m, CallData *callData)
return (m->engine()->memoryManager->alloc<SyntaxErrorObject>(scope.engine, v))->asReturnedValue();
}
-TypeErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("TypeError"))
+Heap::TypeErrorCtor::TypeErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("TypeError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::TypeErrorCtor::staticVTable());
}
ReturnedValue TypeErrorCtor::construct(Managed *m, CallData *callData)
@@ -334,10 +334,10 @@ ReturnedValue TypeErrorCtor::construct(Managed *m, CallData *callData)
return (m->engine()->memoryManager->alloc<TypeErrorObject>(scope.engine, v))->asReturnedValue();
}
-URIErrorCtor::Data::Data(ExecutionContext *scope)
- : ErrorCtor::Data(scope, QStringLiteral("URIError"))
+Heap::URIErrorCtor::URIErrorCtor(QV4::ExecutionContext *scope)
+ : Heap::ErrorCtor(scope, QStringLiteral("URIError"))
{
- setVTable(staticVTable());
+ setVTable(QV4::URIErrorCtor::staticVTable());
}
ReturnedValue URIErrorCtor::construct(Managed *m, CallData *callData)
diff --git a/src/qml/jsruntime/qv4errorobject_p.h b/src/qml/jsruntime/qv4errorobject_p.h
index 3d438352aa..71dcecedf8 100644
--- a/src/qml/jsruntime/qv4errorobject_p.h
+++ b/src/qml/jsruntime/qv4errorobject_p.h
@@ -42,11 +42,9 @@ namespace QV4 {
struct SyntaxErrorObject;
-struct ErrorObject: Object {
- enum {
- IsErrorObject = true
- };
+namespace Heap {
+struct ErrorObject : Object {
enum ErrorType {
Error,
EvalError,
@@ -56,15 +54,81 @@ struct ErrorObject: Object {
TypeError,
URIError
};
- struct Data : Heap::Object {
- Data(InternalClass *ic);
- Data(InternalClass *ic, const ValueRef message, ErrorType t = Error);
- Data(InternalClass *ic, const QString &message, ErrorType t = Error);
- Data(InternalClass *ic, const QString &message, const QString &fileName, int line, int column, ErrorType t = Error);
- StackTrace stackTrace;
- String *stack;
+
+ ErrorObject(InternalClass *ic);
+ ErrorObject(InternalClass *ic, const ValueRef message, ErrorType t = Error);
+ ErrorObject(InternalClass *ic, const QString &message, ErrorType t = Error);
+ ErrorObject(InternalClass *ic, const QString &message, const QString &fileName, int line, int column, ErrorType t = Error);
+ StackTrace stackTrace;
+ QV4::String *stack;
+};
+
+struct EvalErrorObject : ErrorObject {
+ EvalErrorObject(ExecutionEngine *engine, const ValueRef message);
+};
+
+struct RangeErrorObject : ErrorObject {
+ RangeErrorObject(ExecutionEngine *engine, const ValueRef message);
+ RangeErrorObject(ExecutionEngine *engine, const QString &msg);
+};
+
+struct ReferenceErrorObject : ErrorObject {
+ ReferenceErrorObject(ExecutionEngine *engine, const ValueRef message);
+ ReferenceErrorObject(ExecutionEngine *engine, const QString &msg);
+ ReferenceErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber);
+};
+
+struct SyntaxErrorObject : ErrorObject {
+ SyntaxErrorObject(ExecutionEngine *engine, const ValueRef message);
+ SyntaxErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber);
+};
+
+struct TypeErrorObject : ErrorObject {
+ TypeErrorObject(ExecutionEngine *engine, const ValueRef message);
+ TypeErrorObject(ExecutionEngine *engine, const QString &msg);
+};
+
+struct URIErrorObject : ErrorObject {
+ URIErrorObject(ExecutionEngine *engine, const ValueRef message);
+};
+
+struct ErrorCtor : Heap::FunctionObject {
+ ErrorCtor(QV4::ExecutionContext *scope);
+ ErrorCtor(QV4::ExecutionContext *scope, const QString &name);
+};
+
+struct EvalErrorCtor : ErrorCtor {
+ EvalErrorCtor(QV4::ExecutionContext *scope);
+};
+
+struct RangeErrorCtor : ErrorCtor {
+ RangeErrorCtor(QV4::ExecutionContext *scope);
+};
+
+struct ReferenceErrorCtor : ErrorCtor {
+ ReferenceErrorCtor(QV4::ExecutionContext *scope);
+};
+
+struct SyntaxErrorCtor : ErrorCtor {
+ SyntaxErrorCtor(QV4::ExecutionContext *scope);
+};
+
+struct TypeErrorCtor : ErrorCtor {
+ TypeErrorCtor(QV4::ExecutionContext *scope);
+};
+
+struct URIErrorCtor : ErrorCtor {
+ URIErrorCtor(QV4::ExecutionContext *scope);
+};
+
+}
+
+struct ErrorObject: Object {
+ enum {
+ IsErrorObject = true
};
- V4_OBJECT(Object)
+
+ V4_OBJECT2(ErrorObject, Object)
Q_MANAGED_TYPE(ErrorObject)
SyntaxErrorObject *asSyntaxError();
@@ -80,55 +144,32 @@ inline ErrorObject *value_cast(const Value &v) {
}
struct EvalErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- };
+ typedef Heap::EvalErrorObject Data;
};
struct RangeErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- Data(ExecutionEngine *engine, const QString &msg);
- };
+ typedef Heap::RangeErrorObject Data;
};
struct ReferenceErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- Data(ExecutionEngine *engine, const QString &msg);
- Data(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber);
- };
+ typedef Heap::ReferenceErrorObject Data;
};
struct SyntaxErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- Data(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber);
- };
- V4_OBJECT(ErrorObject)
+ V4_OBJECT2(SyntaxErrorObject, ErrorObject)
};
struct TypeErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- Data(ExecutionEngine *engine, const QString &msg);
- };
+ typedef Heap::TypeErrorObject Data;
};
struct URIErrorObject: ErrorObject {
- struct Data : ErrorObject::Data {
- Data(ExecutionEngine *engine, const ValueRef message);
- };
+ typedef Heap::URIErrorObject Data;
};
struct ErrorCtor: FunctionObject
{
- struct Data : Heap::FunctionObject {
- Data(ExecutionContext *scope);
- Data(ExecutionContext *scope, const QString &name);
- };
-
- V4_OBJECT(FunctionObject)
+ V4_OBJECT2(ErrorCtor, FunctionObject)
static ReturnedValue construct(Managed *, CallData *callData);
static ReturnedValue call(Managed *that, CallData *callData);
@@ -136,60 +177,42 @@ struct ErrorCtor: FunctionObject
struct EvalErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(EvalErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
struct RangeErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(RangeErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
struct ReferenceErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(ReferenceErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
struct SyntaxErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(SyntaxErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
struct TypeErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(TypeErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
struct URIErrorCtor: ErrorCtor
{
- struct Data : ErrorCtor::Data {
- Data(ExecutionContext *scope);
- };
- V4_OBJECT(ErrorCtor)
+ V4_OBJECT2(URIErrorCtor, ErrorCtor)
static ReturnedValue construct(Managed *m, CallData *callData);
};
@@ -236,7 +259,7 @@ struct URIErrorPrototype : ErrorObject
inline SyntaxErrorObject *ErrorObject::asSyntaxError()
{
- return subtype() == SyntaxError ? static_cast<SyntaxErrorObject *>(this) : 0;
+ return subtype() == QV4::Heap::ErrorObject::SyntaxError ? static_cast<SyntaxErrorObject *>(this) : 0;
}
}
diff --git a/src/qml/jsruntime/qv4managed.cpp b/src/qml/jsruntime/qv4managed.cpp
index acaebdfc75..9dc583bbf7 100644
--- a/src/qml/jsruntime/qv4managed.cpp
+++ b/src/qml/jsruntime/qv4managed.cpp
@@ -100,26 +100,26 @@ QString Managed::className() const
s = "RegExp";
break;
case Type_ErrorObject:
- switch (ErrorObject::ErrorType(subtype())) {
- case ErrorObject::Error:
+ switch (Heap::ErrorObject::ErrorType(subtype())) {
+ case Heap::ErrorObject::Error:
s = "Error";
break;
- case ErrorObject::EvalError:
+ case Heap::ErrorObject::EvalError:
s = "EvalError";
break;
- case ErrorObject::RangeError:
+ case Heap::ErrorObject::RangeError:
s = "RangeError";
break;
- case ErrorObject::ReferenceError:
+ case Heap::ErrorObject::ReferenceError:
s = "ReferenceError";
break;
- case ErrorObject::SyntaxError:
+ case Heap::ErrorObject::SyntaxError:
s = "SyntaxError";
break;
- case ErrorObject::TypeError:
+ case Heap::ErrorObject::TypeError:
s = "TypeError";
break;
- case ErrorObject::URIError:
+ case Heap::ErrorObject::URIError:
s = "URIError";
break;
}