LibJS: Pass prototype to Date constructor

This commit is contained in:
Andreas Kling 2020-04-17 19:07:59 +02:00
parent 2a15323029
commit 0df4d2823a
Notes: sideshowbarker 2024-07-19 07:31:36 +09:00
3 changed files with 13 additions and 4 deletions

View file

@ -25,16 +25,23 @@
*/
#include <LibCore/DateTime.h>
#include <LibJS/Heap/Heap.h>
#include <LibJS/Interpreter.h>
#include <LibJS/Runtime/Date.h>
#include <LibJS/Runtime/GlobalObject.h>
namespace JS {
Date::Date(Core::DateTime datetime, u16 milliseconds)
Date* Date::create(GlobalObject& global_object, Core::DateTime datetime, u16 milliseconds)
{
return global_object.heap().allocate<Date>(datetime, milliseconds, *global_object.interpreter().date_prototype());
}
Date::Date(Core::DateTime datetime, u16 milliseconds, Object& prototype)
: m_datetime(datetime)
, m_milliseconds(milliseconds)
{
set_prototype(interpreter().date_prototype());
set_prototype(&prototype);
}
Date::~Date()

View file

@ -31,7 +31,9 @@ namespace JS {
class Date final : public Object {
public:
Date(Core::DateTime datetime, u16 milliseconds);
static Date* create(GlobalObject&, Core::DateTime, u16 milliseconds);
Date(Core::DateTime datetime, u16 milliseconds, Object& prototype);
virtual ~Date() override;
Core::DateTime& datetime() { return m_datetime; }

View file

@ -61,7 +61,7 @@ Value DateConstructor::construct(Interpreter& interpreter)
gettimeofday(&tv, nullptr);
auto datetime = Core::DateTime::now();
auto milliseconds = static_cast<u16>(tv.tv_usec / 1000);
return interpreter.heap().allocate<Date>(datetime, milliseconds);
return Date::create(interpreter.global_object(), datetime, milliseconds);
}
Value DateConstructor::now(Interpreter&)