Store a double in NumberObject
Makes more sense than storing a Value in there. Change-Id: I2e6ca71477100c1e1639bb89cced4f4049b5e5c2 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
This commit is contained in:
parent
ef6b4938b9
commit
0c2ab6e20c
|
@ -540,7 +540,7 @@ Heap::Object *ExecutionEngine::newStringObject(const Value &value)
|
|||
return object->d();
|
||||
}
|
||||
|
||||
Heap::Object *ExecutionEngine::newNumberObject(const Value &value)
|
||||
Heap::Object *ExecutionEngine::newNumberObject(double value)
|
||||
{
|
||||
Scope scope(this);
|
||||
Scoped<NumberObject> object(scope, memoryManager->alloc<NumberObject>(this, value));
|
||||
|
|
|
@ -261,7 +261,7 @@ public:
|
|||
Heap::String *newIdentifier(const QString &text);
|
||||
|
||||
Heap::Object *newStringObject(const Value &value);
|
||||
Heap::Object *newNumberObject(const Value &value);
|
||||
Heap::Object *newNumberObject(double value);
|
||||
Heap::Object *newBooleanObject(bool b);
|
||||
|
||||
Heap::ArrayObject *newArrayObject(int count = 0);
|
||||
|
|
|
@ -729,11 +729,11 @@ QString Stringify::Str(const QString &key, const Value &v)
|
|||
o = value->asReturnedValue();
|
||||
if (o) {
|
||||
if (NumberObject *n = o->asNumberObject())
|
||||
value = n->value();
|
||||
value = Encode(n->value());
|
||||
else if (StringObject *so = o->asStringObject())
|
||||
value = so->d()->value;
|
||||
else if (BooleanObject *b =o->asBooleanObject())
|
||||
value = b->value();
|
||||
value = Encode(b->value());
|
||||
}
|
||||
|
||||
if (value->isNull())
|
||||
|
@ -934,7 +934,7 @@ ReturnedValue JsonObject::method_stringify(CallContext *ctx)
|
|||
|
||||
ScopedValue s(scope, ctx->argument(2));
|
||||
if (NumberObject *n = s->asNumberObject())
|
||||
s = n->value();
|
||||
s = Encode(n->value());
|
||||
else if (StringObject *so = s->asStringObject())
|
||||
s = so->d()->value;
|
||||
|
||||
|
|
|
@ -54,8 +54,7 @@ ReturnedValue NumberCtor::construct(Managed *m, CallData *callData)
|
|||
{
|
||||
Scope scope(m->cast<NumberCtor>()->engine());
|
||||
double dbl = callData->argc ? callData->args[0].toNumber() : 0.;
|
||||
ScopedValue d(scope, QV4::Primitive::fromDouble(dbl));
|
||||
return Encode(scope.engine->newNumberObject(d));
|
||||
return Encode(scope.engine->newNumberObject(dbl));
|
||||
}
|
||||
|
||||
ReturnedValue NumberCtor::call(Managed *, CallData *callData)
|
||||
|
@ -101,7 +100,7 @@ inline ReturnedValue thisNumberValue(ExecutionContext *ctx)
|
|||
NumberObject *n = ctx->thisObject().asNumberObject();
|
||||
if (!n)
|
||||
return ctx->engine()->throwTypeError();
|
||||
return n->value().asReturnedValue();
|
||||
return Encode(n->value());
|
||||
}
|
||||
|
||||
inline double thisNumber(ExecutionContext *ctx)
|
||||
|
@ -111,7 +110,7 @@ inline double thisNumber(ExecutionContext *ctx)
|
|||
NumberObject *n = ctx->thisObject().asNumberObject();
|
||||
if (!n)
|
||||
return ctx->engine()->throwTypeError();
|
||||
return n->value().asDouble();
|
||||
return n->value();
|
||||
}
|
||||
|
||||
ReturnedValue NumberPrototype::method_toString(CallContext *ctx)
|
||||
|
|
|
@ -348,17 +348,17 @@ struct BooleanObject : Object {
|
|||
|
||||
struct NumberObject : Object {
|
||||
NumberObject(InternalClass *ic, QV4::Object *prototype)
|
||||
: Object(ic, prototype)
|
||||
: Object(ic, prototype),
|
||||
value(0)
|
||||
{
|
||||
value = Encode((int)0);
|
||||
}
|
||||
|
||||
NumberObject(ExecutionEngine *engine, const Value &val)
|
||||
: Object(engine->emptyClass, engine->numberPrototype.asObject())
|
||||
NumberObject(ExecutionEngine *engine, double val)
|
||||
: Object(engine->emptyClass, engine->numberPrototype.asObject()),
|
||||
value(val)
|
||||
{
|
||||
value = val;
|
||||
}
|
||||
Value value;
|
||||
double value;
|
||||
};
|
||||
|
||||
struct ArrayObject : Object {
|
||||
|
@ -391,7 +391,7 @@ struct NumberObject: Object {
|
|||
V4_OBJECT2(NumberObject, Object)
|
||||
Q_MANAGED_TYPE(NumberObject)
|
||||
|
||||
Value value() const { return d()->value; }
|
||||
double value() const { return d()->value; }
|
||||
};
|
||||
|
||||
struct ArrayObject: Object {
|
||||
|
|
|
@ -441,7 +441,7 @@ Heap::Object *RuntimeHelpers::convertToObject(ExecutionEngine *engine, const Val
|
|||
return engine->newStringObject(value);
|
||||
case Value::Integer_Type:
|
||||
default: // double
|
||||
return engine->newNumberObject(value);
|
||||
return engine->newNumberObject(value.asDouble());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue