mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 16:07:35 +00:00
LibJS: Pass prototype to NumberObject constructor
This commit is contained in:
parent
2d7b495244
commit
cf702a13b9
5 changed files with 15 additions and 7 deletions
|
@ -69,7 +69,7 @@ Value NumberConstructor::construct(Interpreter& interpreter)
|
||||||
number = 0;
|
number = 0;
|
||||||
else
|
else
|
||||||
number = interpreter.argument(0).to_number().as_double();
|
number = interpreter.argument(0).to_number().as_double();
|
||||||
return Value(interpreter.heap().allocate<NumberObject>(number));
|
return NumberObject::create(interpreter.global_object(), number);
|
||||||
}
|
}
|
||||||
|
|
||||||
Value NumberConstructor::is_safe_integer(Interpreter& interpreter)
|
Value NumberConstructor::is_safe_integer(Interpreter& interpreter)
|
||||||
|
|
|
@ -26,16 +26,23 @@
|
||||||
|
|
||||||
#include <LibJS/Heap/Heap.h>
|
#include <LibJS/Heap/Heap.h>
|
||||||
#include <LibJS/Interpreter.h>
|
#include <LibJS/Interpreter.h>
|
||||||
|
#include <LibJS/Runtime/GlobalObject.h>
|
||||||
#include <LibJS/Runtime/NumberObject.h>
|
#include <LibJS/Runtime/NumberObject.h>
|
||||||
#include <LibJS/Runtime/NumberPrototype.h>
|
#include <LibJS/Runtime/NumberPrototype.h>
|
||||||
#include <LibJS/Runtime/Value.h>
|
#include <LibJS/Runtime/Value.h>
|
||||||
|
|
||||||
namespace JS {
|
namespace JS {
|
||||||
|
|
||||||
NumberObject::NumberObject(double value)
|
NumberObject* NumberObject::create(GlobalObject& global_object, double value)
|
||||||
|
{
|
||||||
|
auto& interpreter = global_object.interpreter();
|
||||||
|
return interpreter.heap().allocate<NumberObject>(value, *interpreter.number_prototype());
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberObject::NumberObject(double value, Object& prototype)
|
||||||
: m_value(value)
|
: m_value(value)
|
||||||
{
|
{
|
||||||
set_prototype(interpreter().number_prototype());
|
set_prototype(&prototype);
|
||||||
}
|
}
|
||||||
|
|
||||||
NumberObject::~NumberObject()
|
NumberObject::~NumberObject()
|
||||||
|
|
|
@ -32,7 +32,9 @@ namespace JS {
|
||||||
|
|
||||||
class NumberObject : public Object {
|
class NumberObject : public Object {
|
||||||
public:
|
public:
|
||||||
explicit NumberObject(double);
|
static NumberObject* create(GlobalObject&, double);
|
||||||
|
|
||||||
|
NumberObject(double, Object& prototype);
|
||||||
virtual ~NumberObject() override;
|
virtual ~NumberObject() override;
|
||||||
|
|
||||||
virtual Value value_of() const override { return Value(m_value); }
|
virtual Value value_of() const override { return Value(m_value); }
|
||||||
|
|
|
@ -30,9 +30,8 @@
|
||||||
namespace JS {
|
namespace JS {
|
||||||
|
|
||||||
NumberPrototype::NumberPrototype()
|
NumberPrototype::NumberPrototype()
|
||||||
: NumberObject(0)
|
: NumberObject(0, *interpreter().object_prototype())
|
||||||
{
|
{
|
||||||
set_prototype(interpreter().object_prototype());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NumberPrototype::~NumberPrototype()
|
NumberPrototype::~NumberPrototype()
|
||||||
|
|
|
@ -116,7 +116,7 @@ Object* Value::to_object(Heap& heap) const
|
||||||
return heap.allocate<StringObject>(m_value.as_string);
|
return heap.allocate<StringObject>(m_value.as_string);
|
||||||
|
|
||||||
if (is_number())
|
if (is_number())
|
||||||
return heap.allocate<NumberObject>(m_value.as_double);
|
return NumberObject::create(heap.interpreter().global_object(), m_value.as_double);
|
||||||
|
|
||||||
if (is_boolean())
|
if (is_boolean())
|
||||||
return heap.allocate<BooleanObject>(m_value.as_bool);
|
return heap.allocate<BooleanObject>(m_value.as_bool);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue