diff options
author | Lars Knoll <[email protected]> | 2013-12-13 12:15:25 +0100 |
---|---|---|
committer | The Qt Project <[email protected]> | 2014-01-03 17:09:21 +0100 |
commit | 8e8600d1c4dba9d974927f117f13498dd593cd74 (patch) | |
tree | 1710ec532857ce5cb46b1d0e49c65228db830c58 /src/qml/jsruntime | |
parent | 5ad5d4ef865eae376ecd86e8487ec2e56174ae4e (diff) |
Get rid of the nonStrictArgumentsObject flag in Managed
Change-Id: I4ac58e9d87506ae930c2e44e6089f4af3cd9ccb2
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject.cpp | 3 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject_p.h | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4managed_p.h | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4objectiterator.cpp | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4objectproto.cpp | 4 |
6 files changed, 10 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index df08b5a89e..3b58f68c34 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -72,7 +72,6 @@ ArgumentsObject::ArgumentsObject(CallContext *context) } else { Q_ASSERT(CalleePropertyIndex == internalClass->find(context->engine->id_callee)); memberData[CalleePropertyIndex].value = context->function->asReturnedValue(); - isNonStrictArgumentsObject = true; } Q_ASSERT(LengthPropertyIndex == internalClass->find(context->engine->id_length)); Property *lp = memberData + ArrayObject::LengthPropertyIndex; @@ -130,12 +129,10 @@ bool ArgumentsObject::defineOwnProperty(ExecutionContext *ctx, uint index, const pd->value = mappedArguments.at(index); } - isNonStrictArgumentsObject = false; bool strict = ctx->strictMode; ctx->strictMode = false; bool result = Object::__defineOwnProperty__(ctx, index, desc, attrs); ctx->strictMode = strict; - isNonStrictArgumentsObject = true; if (isMapped && attrs.isData()) { ScopedCallData callData(scope, 1); diff --git a/src/qml/jsruntime/qv4argumentsobject_p.h b/src/qml/jsruntime/qv4argumentsobject_p.h index b300dcf805..42b749cbb5 100644 --- a/src/qml/jsruntime/qv4argumentsobject_p.h +++ b/src/qml/jsruntime/qv4argumentsobject_p.h @@ -84,6 +84,10 @@ struct ArgumentsObject: Object { ArgumentsObject(CallContext *context); ~ArgumentsObject() {} + static bool isNonStrictArgumentsObject(Managed *m) { + return m->internalClass->vtable->type == Type_ArgumentsObject && + !static_cast<ArgumentsObject *>(m)->context->strictMode; + } enum { LengthPropertyIndex = 0, diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index 8febf3f462..124392197f 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -351,7 +351,7 @@ public: uchar markBit : 1; uchar inUse : 1; uchar extensible : 1; // used by Object - uchar isNonStrictArgumentsObject : 1; + uchar _unused : 1; uchar needsActivation : 1; // used by FunctionObject uchar strictMode : 1; // used by FunctionObject uchar bindingKeyFlag : 1; diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 559792d898..7b0ddc6048 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -969,7 +969,7 @@ bool Object::__defineOwnProperty__(ExecutionContext *ctx, uint index, const Prop if (isArrayObject() && index >= arrayLength() && !internalClass->propertyData[ArrayObject::LengthPropertyIndex].isWritable()) goto reject; - if (isNonStrictArgumentsObject) + if (ArgumentsObject::isNonStrictArgumentsObject(this)) return static_cast<ArgumentsObject *>(this)->defineOwnProperty(ctx, index, p, attrs); // Clause 1 diff --git a/src/qml/jsruntime/qv4objectiterator.cpp b/src/qml/jsruntime/qv4objectiterator.cpp index 04fa504991..f7a5cd7531 100644 --- a/src/qml/jsruntime/qv4objectiterator.cpp +++ b/src/qml/jsruntime/qv4objectiterator.cpp @@ -58,7 +58,7 @@ ObjectIterator::ObjectIterator(SafeObject *scratch1, SafeObject *scratch2, const current = o; tmpDynamicProperty.value = Primitive::undefinedValue(); - if (object && object->isNonStrictArgumentsObject) { + if (object && object->asArgumentsObject()) { Scope scope(object->engine()); Scoped<ArgumentsObject> (scope, object->asReturnedValue())->fullyCreate(); } @@ -76,7 +76,7 @@ ObjectIterator::ObjectIterator(Scope &scope, const ObjectRef o, uint flags) current = o; tmpDynamicProperty.value = Primitive::undefinedValue(); - if (object && object->isNonStrictArgumentsObject) { + if (object && object->asArgumentsObject()) { Scope scope(object->engine()); Scoped<ArgumentsObject> (scope, object->asReturnedValue())->fullyCreate(); } diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp index a8e78b44c2..2e631bdc02 100644 --- a/src/qml/jsruntime/qv4objectproto.cpp +++ b/src/qml/jsruntime/qv4objectproto.cpp @@ -157,7 +157,7 @@ ReturnedValue ObjectPrototype::method_getOwnPropertyDescriptor(CallContext *ctx) if (!O) return ctx->throwTypeError(); - if (O->isNonStrictArgumentsObject) + if (ArgumentsObject::isNonStrictArgumentsObject(O.getPointer())) Scoped<ArgumentsObject>(scope, O)->fullyCreate(); ScopedValue v(scope, ctx->argument(1)); @@ -287,7 +287,7 @@ ReturnedValue ObjectPrototype::method_freeze(CallContext *ctx) if (!o) return ctx->throwTypeError(); - if (o->isNonStrictArgumentsObject) + if (ArgumentsObject::isNonStrictArgumentsObject(o.getPointer())) Scoped<ArgumentsObject>(scope, o)->fullyCreate(); o->extensible = false; |