ArgumentsObject::ArgumentsObject(CallContext *context)
: Object(context->strictMode ? context->engine->strictArgumentsObjectClass : context->engine->argumentsObjectClass)
{
- data.context = context;
- data.fullyCreated = false;
+ d()->context = context;
+ d()->fullyCreated = false;
ExecutionEngine *v4 = context->engine;
Scope scope(v4);
arrayReserve(context->callData->argc);
arrayPut(0, context->callData->args, context->callData->argc);
- data.fullyCreated = true;
+ d()->fullyCreated = true;
} else {
setHasAccessorProperty();
Q_ASSERT(CalleePropertyIndex == internalClass()->find(context->engine->id_callee));
for (uint i = numAccessors; i < argCount; ++i)
setArrayAttributes(i, Attr_Data);
- data.fullyCreated = true;
+ d()->fullyCreated = true;
}
bool ArgumentsObject::defineOwnProperty(ExecutionContext *ctx, uint index, const Property &desc, PropertyAttributes attrs)
struct ArgumentsGetterFunction: FunctionObject
{
- V4_OBJECT
- struct Data {
+ struct Data : FunctionObject::Data {
uint index;
};
- Data data;
+ struct {
+ uint index;
+ } __data;
+ V4_OBJECT_NEW
- uint index() const { return data.index; }
+ uint index() const { return d()->index; }
ArgumentsGetterFunction(ExecutionContext *scope, uint index)
: FunctionObject(scope)
{
- data.index = index;
+ d()->index = index;
setVTable(staticVTable());
}
struct ArgumentsSetterFunction: FunctionObject
{
- V4_OBJECT
- struct Data {
+ struct Data : FunctionObject::Data {
uint index;
};
- Data data;
+ struct {
+ uint index;
+ } __data;
+ V4_OBJECT_NEW
- uint index() const { return data.index; }
+ uint index() const { return d()->index; }
ArgumentsSetterFunction(ExecutionContext *scope, uint index)
: FunctionObject(scope)
{
- data.index = index;
+ d()->index = index;
setVTable(staticVTable());
}
struct ArgumentsObject: Object {
- V4_OBJECT
- Q_MANAGED_TYPE(ArgumentsObject)
- struct Data {
+ struct Data : Object::Data {
CallContext *context;
bool fullyCreated;
Members mappedArguments;
};
- Data data;
+ struct {
+ CallContext *context;
+ bool fullyCreated;
+ Members mappedArguments;
+ } __data;
+ V4_OBJECT_NEW
+ Q_MANAGED_TYPE(ArgumentsObject)
- CallContext *context() const { return data.context; }
- bool fullyCreated() const { return data.fullyCreated; }
- Members mappedArguments() const { return data.mappedArguments; }
+ CallContext *context() const { return d()->context; }
+ bool fullyCreated() const { return d()->fullyCreated; }
+ Members &mappedArguments() { return d()->mappedArguments; }
ArgumentsObject(CallContext *context);