Cleanup: Get rid of String and Object pointers in Value

Change-Id: I4f007d0437c9a5cc79fe35d960d40557366d46fe
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
Simon Hausmann 2014-07-23 12:37:17 +02:00
parent 62fa701eeb
commit 8daace55a2
3 changed files with 12 additions and 14 deletions

View File

@ -68,15 +68,15 @@ ObjectIterator::ObjectIterator(Value *scratch1, Value *scratch2, uint flags)
, memberIndex(0)
, flags(flags)
{
object->o = (Object*)0;
current->o = (Object*)0;
object->m = (Object*)0;
current->m = (Object*)0;
// Caller needs to call init!
}
void ObjectIterator::init(Object *o)
{
object->o = o;
current->o = o;
object->m = o;
current->m = o;
#if QT_POINTER_SIZE == 4
object->tag = QV4::Value::Managed_Type;
@ -126,9 +126,9 @@ void ObjectIterator::next(String *&name, uint *index, Property *pd, PropertyAttr
}
if (flags & WithProtoChain)
current->o = current->objectValue()->prototype();
current->m = current->objectValue()->prototype();
else
current->o = (Object *)0;
current->m = (Object *)0;
arrayIndex = 0;
memberIndex = 0;

View File

@ -881,7 +881,9 @@ ReturnedValue Runtime::callActivationProperty(ExecutionContext *context, String
Scope scope(context);
ScopedObject base(scope);
ScopedValue func(scope, context->getPropertyAndBase(name, base.ptr->o));
Object *baseObj = base.ptr->objectValue();
ScopedValue func(scope, context->getPropertyAndBase(name, baseObj));
base.ptr->m = baseObj;
if (scope.engine->hasException)
return Encode::undefined();

View File

@ -87,8 +87,6 @@ struct Q_QML_PRIVATE_EXPORT Value
quint64 val;
#if QT_POINTER_SIZE == 8
Managed *m;
Object *o;
String *s;
#else
double dbl;
#endif
@ -101,8 +99,6 @@ struct Q_QML_PRIVATE_EXPORT Value
int int_32;
#if QT_POINTER_SIZE == 4
Managed *m;
Object *o;
String *s;
#endif
};
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
@ -270,10 +266,10 @@ struct Q_QML_PRIVATE_EXPORT Value
}
String *stringValue() const {
return s;
return reinterpret_cast<String*>(m);
}
Object *objectValue() const {
return o;
return reinterpret_cast<Object*>(m);
}
Managed *managed() const {
return m;
@ -283,7 +279,7 @@ struct Q_QML_PRIVATE_EXPORT Value
return val;
}
static inline Value fromManaged(Managed *o);
static inline Value fromManaged(Managed *m);
int toUInt16() const;
inline int toInt32() const;