Remove the executioncontext in a few more places where it's not needed
Change-Id: I4c92c7bc9d94d8265e306f45d863fdc080a5e2a6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
This commit is contained in:
parent
cf7bd35a93
commit
b943d80dd9
|
@ -178,10 +178,9 @@ void RegExpObject::markObjects(Heap::Base *that, ExecutionEngine *e)
|
|||
Object::markObjects(that, e);
|
||||
}
|
||||
|
||||
Property *RegExpObject::lastIndexProperty(ExecutionContext *ctx)
|
||||
Property *RegExpObject::lastIndexProperty()
|
||||
{
|
||||
Q_UNUSED(ctx);
|
||||
Q_ASSERT(0 == internalClass()->find(ctx->d()->engine->id_lastIndex));
|
||||
Q_ASSERT(0 == internalClass()->find(engine()->id_lastIndex));
|
||||
return propertyAt(0);
|
||||
}
|
||||
|
||||
|
@ -362,9 +361,9 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx)
|
|||
return Encode::undefined();
|
||||
QString s = arg->stringValue()->toQString();
|
||||
|
||||
int offset = r->global() ? r->lastIndexProperty(ctx)->value.toInt32() : 0;
|
||||
int offset = r->global() ? r->lastIndexProperty()->value.toInt32() : 0;
|
||||
if (offset < 0 || offset > s.length()) {
|
||||
r->lastIndexProperty(ctx)->value = Primitive::fromInt32(0);
|
||||
r->lastIndexProperty()->value = Primitive::fromInt32(0);
|
||||
return Encode::null();
|
||||
}
|
||||
|
||||
|
@ -375,7 +374,7 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx)
|
|||
regExpCtor->d()->clearLastMatch();
|
||||
|
||||
if (result == -1) {
|
||||
r->lastIndexProperty(ctx)->value = Primitive::fromInt32(0);
|
||||
r->lastIndexProperty()->value = Primitive::fromInt32(0);
|
||||
return Encode::null();
|
||||
}
|
||||
|
||||
|
@ -401,7 +400,7 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx)
|
|||
dd->lastMatchEnd = matchOffsets[1];
|
||||
|
||||
if (r->global())
|
||||
r->lastIndexProperty(ctx)->value = Primitive::fromInt32(matchOffsets[1]);
|
||||
r->lastIndexProperty()->value = Primitive::fromInt32(matchOffsets[1]);
|
||||
|
||||
return array.asReturnedValue();
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ struct RegExpObject: Object {
|
|||
|
||||
void init(ExecutionEngine *engine);
|
||||
|
||||
Property *lastIndexProperty(ExecutionContext *ctx);
|
||||
Property *lastIndexProperty();
|
||||
QRegExp toQRegExp() const;
|
||||
QString toString() const;
|
||||
QString source() const;
|
||||
|
|
|
@ -45,8 +45,6 @@ class QQmlContextData;
|
|||
|
||||
namespace QV4 {
|
||||
|
||||
struct ExecutionContext;
|
||||
|
||||
struct ContextStateSaver {
|
||||
ExecutionContext *savedContext;
|
||||
bool strictMode;
|
||||
|
|
|
@ -49,15 +49,15 @@ 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)
|
||||
static void generateWarning(QV4::ExecutionEngine *v4, const QString& description)
|
||||
{
|
||||
QQmlEngine *engine = ctx->d()->engine->v8Engine->engine();
|
||||
QQmlEngine *engine = v4->v8Engine->engine();
|
||||
if (!engine)
|
||||
return;
|
||||
QQmlError retn;
|
||||
retn.setDescription(description);
|
||||
|
||||
QV4::StackFrame frame = ctx->d()->engine->currentStackFrame();
|
||||
QV4::StackFrame frame = v4->currentStackFrame();
|
||||
|
||||
retn.setLine(frame.line);
|
||||
retn.setUrl(QUrl(frame.source));
|
||||
|
@ -190,7 +190,7 @@ public:
|
|||
{
|
||||
/* Qt containers have int (rather than uint) allowable indexes. */
|
||||
if (index > INT_MAX) {
|
||||
generateWarning(engine()->currentContext(), QLatin1String("Index out of range during indexed get"));
|
||||
generateWarning(engine(), QLatin1String("Index out of range during indexed get"));
|
||||
if (hasProperty)
|
||||
*hasProperty = false;
|
||||
return Encode::undefined();
|
||||
|
@ -221,7 +221,7 @@ public:
|
|||
|
||||
/* Qt containers have int (rather than uint) allowable indexes. */
|
||||
if (index > INT_MAX) {
|
||||
generateWarning(engine()->currentContext(), QLatin1String("Index out of range during indexed set"));
|
||||
generateWarning(engine(), QLatin1String("Index out of range during indexed set"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ public:
|
|||
{
|
||||
/* Qt containers have int (rather than uint) allowable indexes. */
|
||||
if (index > INT_MAX) {
|
||||
generateWarning(engine()->currentContext(), QLatin1String("Index out of range during indexed query"));
|
||||
generateWarning(engine(), QLatin1String("Index out of range during indexed query"));
|
||||
return QV4::Attr_Invalid;
|
||||
}
|
||||
if (d()->isReference) {
|
||||
|
@ -411,7 +411,7 @@ public:
|
|||
quint32 newLength = ctx->d()->callData->args[0].toUInt32();
|
||||
/* Qt containers have int (rather than uint) allowable indexes. */
|
||||
if (newLength > INT_MAX) {
|
||||
generateWarning(ctx, QLatin1String("Index out of range during length set"));
|
||||
generateWarning(scope.engine, QLatin1String("Index out of range during length set"));
|
||||
return QV4::Encode::undefined();
|
||||
}
|
||||
/* Read the sequence from the QObject property if we're a reference */
|
||||
|
|
|
@ -230,7 +230,7 @@ static QString getThisString(ExecutionContext *ctx)
|
|||
if (StringObject *thisString = t->asStringObject())
|
||||
return thisString->d()->value.stringValue()->toQString();
|
||||
if (t->isUndefined() || t->isNull()) {
|
||||
ctx->engine()->throwTypeError();
|
||||
scope.engine->throwTypeError();
|
||||
return QString();
|
||||
}
|
||||
return t->toQString();
|
||||
|
@ -517,7 +517,7 @@ ReturnedValue StringPrototype::method_replace(CallContext *ctx)
|
|||
offset = qMax(offset + 1, matchOffsets[oldSize + 1]);
|
||||
}
|
||||
if (regExp->global())
|
||||
regExp->lastIndexProperty(ctx)->value = Primitive::fromUInt32(0);
|
||||
regExp->lastIndexProperty()->value = Primitive::fromUInt32(0);
|
||||
numStringMatches = nMatchOffsets / (regExp->value()->captureCount() * 2);
|
||||
numCaptures = regExp->value()->captureCount();
|
||||
} else {
|
||||
|
|
|
@ -88,8 +88,7 @@ double Value::toNumberImpl() const
|
|||
if (isString())
|
||||
return RuntimeHelpers::stringToNumber(stringValue()->toQString());
|
||||
{
|
||||
ExecutionContext *ctx = objectValue()->internalClass()->engine->currentContext();
|
||||
Scope scope(ctx);
|
||||
Scope scope(managed()->engine());
|
||||
ScopedValue prim(scope, RuntimeHelpers::toPrimitive(ValueRef::fromRawValue(this), NUMBER_HINT));
|
||||
if (scope.engine->hasException)
|
||||
return 0;
|
||||
|
@ -124,8 +123,7 @@ QString Value::toQStringNoThrow() const
|
|||
if (isString())
|
||||
return stringValue()->toQString();
|
||||
{
|
||||
ExecutionContext *ctx = objectValue()->internalClass()->engine->currentContext();
|
||||
Scope scope(ctx);
|
||||
Scope scope(managed()->engine());
|
||||
ScopedValue ex(scope);
|
||||
bool caughtException = false;
|
||||
ScopedValue prim(scope, RuntimeHelpers::toPrimitive(ValueRef::fromRawValue(this), STRING_HINT));
|
||||
|
@ -177,8 +175,7 @@ QString Value::toQString() const
|
|||
if (isString())
|
||||
return stringValue()->toQString();
|
||||
{
|
||||
ExecutionContext *ctx = objectValue()->internalClass()->engine->currentContext();
|
||||
Scope scope(ctx);
|
||||
Scope scope(managed()->engine());
|
||||
ScopedValue prim(scope, RuntimeHelpers::toPrimitive(ValueRef::fromRawValue(this), STRING_HINT));
|
||||
return prim->toQString();
|
||||
}
|
||||
|
|
|
@ -76,9 +76,9 @@ void QQmlDelayedError::setErrorObject(QObject *object)
|
|||
m_error.setObject(object);
|
||||
}
|
||||
|
||||
void QQmlDelayedError::catchJavaScriptException(QV4::ExecutionContext *context)
|
||||
void QQmlDelayedError::catchJavaScriptException(QV4::ExecutionEngine *engine)
|
||||
{
|
||||
m_error = context->engine()->catchExceptionAsQmlError();
|
||||
m_error = engine->catchExceptionAsQmlError();
|
||||
}
|
||||
|
||||
|
||||
|
@ -147,10 +147,9 @@ QV4::ReturnedValue QQmlJavaScriptExpression::evaluate(QQmlContextData *context,
|
|||
QV4::ExecutionEngine *v4 = QV8Engine::getV4(ep->v8engine());
|
||||
QV4::Scope scope(v4);
|
||||
QV4::ScopedValue result(scope, QV4::Primitive::undefinedValue());
|
||||
QV4::ExecutionContext *ctx = v4->currentContext();
|
||||
callData->thisObject = v4->globalObject;
|
||||
if (scopeObject()) {
|
||||
QV4::ScopedValue value(scope, QV4::QObjectWrapper::wrap(ctx->d()->engine, scopeObject()));
|
||||
QV4::ScopedValue value(scope, QV4::QObjectWrapper::wrap(v4, scopeObject()));
|
||||
if (value->isObject())
|
||||
callData->thisObject = value;
|
||||
}
|
||||
|
@ -160,7 +159,7 @@ QV4::ReturnedValue QQmlJavaScriptExpression::evaluate(QQmlContextData *context,
|
|||
if (watcher.wasDeleted())
|
||||
scope.engine->catchException(); // ignore exception
|
||||
else
|
||||
delayedError()->catchJavaScriptException(ctx);
|
||||
delayedError()->catchJavaScriptException(scope.engine);
|
||||
if (isUndefined)
|
||||
*isUndefined = true;
|
||||
} else {
|
||||
|
|
|
@ -52,10 +52,6 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
namespace QV4 {
|
||||
struct ExecutionContext;
|
||||
}
|
||||
|
||||
class QQmlDelayedError
|
||||
{
|
||||
public:
|
||||
|
@ -81,7 +77,7 @@ public:
|
|||
void setErrorObject(QObject *object);
|
||||
|
||||
// Call only from catch(...) -- will re-throw if no JS exception
|
||||
void catchJavaScriptException(QV4::ExecutionContext *context);
|
||||
void catchJavaScriptException(QV4::ExecutionEngine *engine);
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -1547,18 +1547,17 @@ const QByteArray &QQmlXMLHttpRequest::rawResponseBody() const
|
|||
|
||||
void QQmlXMLHttpRequest::dispatchCallbackImpl(const ValueRef me)
|
||||
{
|
||||
ExecutionContext *ctx = v4->currentContext();
|
||||
QV4::Scope scope(v4);
|
||||
Scoped<Object> o(scope, me);
|
||||
if (!o) {
|
||||
ctx->engine()->throwError(QStringLiteral("QQmlXMLHttpRequest: internal error: empty ThisObject"));
|
||||
v4->throwError(QStringLiteral("QQmlXMLHttpRequest: internal error: empty ThisObject"));
|
||||
return;
|
||||
}
|
||||
|
||||
ScopedString s(scope, v4->newString(QStringLiteral("ThisObject")));
|
||||
Scoped<Object> thisObj(scope, o->get(s.getPointer()));
|
||||
if (!thisObj) {
|
||||
ctx->engine()->throwError(QStringLiteral("QQmlXMLHttpRequest: internal error: empty ThisObject"));
|
||||
v4->throwError(QStringLiteral("QQmlXMLHttpRequest: internal error: empty ThisObject"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -161,6 +161,7 @@ public:
|
|||
, m_time(0)
|
||||
, m_vsync(0)
|
||||
, m_mode(VSyncMode)
|
||||
, m_lag(0)
|
||||
, m_bad(0)
|
||||
, m_good(0)
|
||||
{
|
||||
|
|
|
@ -2303,8 +2303,7 @@ static inline bool evaluate_error(QV8Engine *engine, const QV4::ValueRef o, cons
|
|||
QV4::Script program(QV8Engine::getV4(engine)->rootContext, functionSource);
|
||||
program.inheritContext = true;
|
||||
|
||||
QV4::ExecutionContext *ctx = QV8Engine::getV4(engine)->currentContext();
|
||||
QV4::Scope scope(ctx);
|
||||
QV4::Scope scope(QV8Engine::getV4(engine));
|
||||
|
||||
QV4::Scoped<QV4::FunctionObject> function(scope, program.run());
|
||||
if (scope.engine->hasException) {
|
||||
|
@ -2331,8 +2330,7 @@ static inline bool evaluate_value(QV8Engine *engine, const QV4::ValueRef o,
|
|||
QV4::Script program(QV8Engine::getV4(engine)->rootContext, functionSource);
|
||||
program.inheritContext = true;
|
||||
|
||||
QV4::ExecutionContext *ctx = QV8Engine::getV4(engine)->currentContext();
|
||||
QV4::Scope scope(ctx);
|
||||
QV4::Scope scope(QV8Engine::getV4(engine));
|
||||
|
||||
QV4::Scoped<QV4::FunctionObject> function(scope, program.run());
|
||||
if (scope.engine->hasException) {
|
||||
|
@ -2360,10 +2358,9 @@ static inline QV4::ReturnedValue evaluate(QV8Engine *engine, const QV4::ValueRef
|
|||
QString functionSource = QLatin1String("(function(object) { return ") +
|
||||
QLatin1String(source) + QLatin1String(" })");
|
||||
|
||||
QV4::ExecutionContext *ctx = QV8Engine::getV4(engine)->currentContext();
|
||||
QV4::Scope scope(ctx);
|
||||
QV4::Scope scope(QV8Engine::getV4(engine));
|
||||
|
||||
QV4::Script program(QV8Engine::getV4(engine)->rootContext, functionSource);
|
||||
QV4::Script program(scope.engine->rootContext, functionSource);
|
||||
program.inheritContext = true;
|
||||
|
||||
QV4::Scoped<QV4::FunctionObject> function(scope, program.run());
|
||||
|
|
Loading…
Reference in New Issue