diff options
author | Liang Qi <liang.qi@qt.io> | 2017-05-29 10:30:39 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-06-06 15:59:38 +0200 |
commit | c254cec22a2352a3fcab60244a6ab74f95d45ace (patch) | |
tree | d8456def48b09bd3914eb87c57ab53376f92c14f /src/qml/jsruntime/qv4argumentsobject.cpp | |
parent | c158ca8be49a75026e83751dfd825c5bdd63189a (diff) | |
parent | 3f9367cb32533b691cb8c761213f21a524e3d1cb (diff) |
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
.qmake.conf
src/qml/jsruntime/qv4argumentsobject.cpp
src/qml/jsruntime/qv4arraydata.cpp
src/qml/jsruntime/qv4context.cpp
src/qml/jsruntime/qv4context_p.h
src/qml/jsruntime/qv4errorobject.cpp
src/qml/jsruntime/qv4functionobject.cpp
src/qml/jsruntime/qv4internalclass.cpp
src/qml/jsruntime/qv4lookup.cpp
src/qml/jsruntime/qv4managed.cpp
src/qml/jsruntime/qv4managed_p.h
src/qml/jsruntime/qv4object.cpp
src/qml/jsruntime/qv4object_p.h
src/qml/jsruntime/qv4qmlcontext.cpp
src/qml/jsruntime/qv4runtime.cpp
src/qml/jsruntime/qv4vme_moth.cpp
src/qml/memory/qv4heap_p.h
src/qml/memory/qv4mm.cpp
src/qml/memory/qv4mm_p.h
src/qml/memory/qv4mmdefs_p.h
src/quick/scenegraph/util/qsgdistancefieldutil.cpp
src/quick/scenegraph/util/qsgdistancefieldutil_p.h
tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
Change-Id: I7ed925d4f5d308f872a58ddf51fdce0c8494ec9c
Diffstat (limited to 'src/qml/jsruntime/qv4argumentsobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index 318db4f904..0905c2828a 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -48,7 +48,7 @@ DEFINE_OBJECT_VTABLE(ArgumentsObject); void Heap::ArgumentsObject::init(QV4::CallContext *context) { - ExecutionEngine *v4 = context->d()->engine; + ExecutionEngine *v4 = internalClass->engine; Object::init(); fullyCreated = false; @@ -59,8 +59,8 @@ void Heap::ArgumentsObject::init(QV4::CallContext *context) Scoped<QV4::ArgumentsObject> args(scope, this); if (context->d()->strictMode) { - Q_ASSERT(CalleePropertyIndex == args->internalClass()->find(context->d()->engine->id_callee())); - Q_ASSERT(CallerPropertyIndex == args->internalClass()->find(context->d()->engine->id_caller())); + Q_ASSERT(CalleePropertyIndex == args->internalClass()->find(v4->id_callee())); + Q_ASSERT(CallerPropertyIndex == args->internalClass()->find(v4->id_caller())); args->setProperty(CalleePropertyIndex + QV4::Object::GetterOffset, *v4->thrower()); args->setProperty(CalleePropertyIndex + QV4::Object::SetterOffset, *v4->thrower()); args->setProperty(CallerPropertyIndex + QV4::Object::GetterOffset, *v4->thrower()); @@ -70,10 +70,10 @@ void Heap::ArgumentsObject::init(QV4::CallContext *context) args->arrayPut(0, context->args(), context->argc()); args->d()->fullyCreated = true; } else { - Q_ASSERT(CalleePropertyIndex == args->internalClass()->find(context->d()->engine->id_callee())); + Q_ASSERT(CalleePropertyIndex == args->internalClass()->find(v4->id_callee())); args->setProperty(CalleePropertyIndex, context->d()->function); } - Q_ASSERT(LengthPropertyIndex == args->internalClass()->find(context->d()->engine->id_length())); + Q_ASSERT(LengthPropertyIndex == args->internalClass()->find(v4->id_length())); args->setProperty(LengthPropertyIndex, Primitive::fromInt32(context->d()->callData->argc)); } @@ -82,18 +82,19 @@ void ArgumentsObject::fullyCreate() if (fullyCreated()) return; + Scope scope(engine()); + uint argCount = context()->callData->argc; uint numAccessors = qMin(context()->formalParameterCount(), argCount); ArrayData::realloc(this, Heap::ArrayData::Sparse, argCount, true); - context()->engine->requireArgumentsAccessors(numAccessors); + scope.engine->requireArgumentsAccessors(numAccessors); - Scope scope(engine()); Scoped<MemberData> md(scope, d()->mappedArguments); if (numAccessors) { - d()->mappedArguments.set(scope.engine, md->allocate(engine(), numAccessors)); + d()->mappedArguments.set(scope.engine, md->allocate(scope.engine, numAccessors)); for (uint i = 0; i < numAccessors; ++i) { d()->mappedArguments->values.set(scope.engine, i, context()->callData->args[i]); - arraySet(i, context()->engine->argumentsAccessors + i, Attr_Accessor); + arraySet(i, scope.engine->argumentsAccessors + i, Attr_Accessor); } } arrayPut(numAccessors, context()->callData->args + numAccessors, argCount - numAccessors); @@ -114,7 +115,7 @@ bool ArgumentsObject::defineOwnProperty(ExecutionEngine *engine, uint index, con bool isMapped = false; if (arrayData() && index < numAccessors && arrayData()->attributes(index).isAccessor() && - arrayData()->get(index) == context()->engine->argumentsAccessors[index].getter()->asReturnedValue()) + arrayData()->get(index) == scope.engine->argumentsAccessors[index].getter()->asReturnedValue()) isMapped = true; if (isMapped) { |