mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 23:28:11 +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;
|
||||
else
|
||||
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)
|
||||
|
|
|
@ -26,16 +26,23 @@
|
|||
|
||||
#include <LibJS/Heap/Heap.h>
|
||||
#include <LibJS/Interpreter.h>
|
||||
#include <LibJS/Runtime/GlobalObject.h>
|
||||
#include <LibJS/Runtime/NumberObject.h>
|
||||
#include <LibJS/Runtime/NumberPrototype.h>
|
||||
#include <LibJS/Runtime/Value.h>
|
||||
|
||||
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)
|
||||
{
|
||||
set_prototype(interpreter().number_prototype());
|
||||
set_prototype(&prototype);
|
||||
}
|
||||
|
||||
NumberObject::~NumberObject()
|
||||
|
|
|
@ -32,7 +32,9 @@ namespace JS {
|
|||
|
||||
class NumberObject : public Object {
|
||||
public:
|
||||
explicit NumberObject(double);
|
||||
static NumberObject* create(GlobalObject&, double);
|
||||
|
||||
NumberObject(double, Object& prototype);
|
||||
virtual ~NumberObject() override;
|
||||
|
||||
virtual Value value_of() const override { return Value(m_value); }
|
||||
|
|
|
@ -30,9 +30,8 @@
|
|||
namespace JS {
|
||||
|
||||
NumberPrototype::NumberPrototype()
|
||||
: NumberObject(0)
|
||||
: NumberObject(0, *interpreter().object_prototype())
|
||||
{
|
||||
set_prototype(interpreter().object_prototype());
|
||||
}
|
||||
|
||||
NumberPrototype::~NumberPrototype()
|
||||
|
|
|
@ -116,7 +116,7 @@ Object* Value::to_object(Heap& heap) const
|
|||
return heap.allocate<StringObject>(m_value.as_string);
|
||||
|
||||
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())
|
||||
return heap.allocate<BooleanObject>(m_value.as_bool);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue