X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/f9bf01c6616d5ddcf65b13b33cedf9e387ff7a63..4be4e30906bcb8ee30b4d189205cb70bad6707ce:/runtime/DateInstance.cpp?ds=sidebyside diff --git a/runtime/DateInstance.cpp b/runtime/DateInstance.cpp index b43b183..db7b846 100644 --- a/runtime/DateInstance.cpp +++ b/runtime/DateInstance.cpp @@ -22,44 +22,50 @@ #include "config.h" #include "DateInstance.h" +#include "JSDateMath.h" #include "JSGlobalObject.h" - +#include "Operations.h" #include -#include #include using namespace WTF; namespace JSC { -const ClassInfo DateInstance::info = {"Date", 0, 0, 0}; +const ClassInfo DateInstance::s_info = {"Date", &JSWrapperObject::s_info, 0, 0, CREATE_METHOD_TABLE(DateInstance)}; + +DateInstance::DateInstance(ExecState* exec, Structure* structure) + : JSWrapperObject(exec->vm(), structure) +{ +} -DateInstance::DateInstance(ExecState* exec, NonNullPassRefPtr structure) - : JSWrapperObject(structure) +void DateInstance::finishCreation(VM& vm) { - setInternalValue(jsNaN(exec)); + Base::finishCreation(vm); + ASSERT(inherits(&s_info)); + setInternalValue(vm, jsNaN()); } -DateInstance::DateInstance(ExecState* exec, NonNullPassRefPtr structure, double time) - : JSWrapperObject(structure) +void DateInstance::finishCreation(VM& vm, double time) { - setInternalValue(jsNumber(exec, timeClip(time))); + Base::finishCreation(vm); + ASSERT(inherits(&s_info)); + setInternalValue(vm, jsNumber(timeClip(time))); } -DateInstance::DateInstance(ExecState* exec, double time) - : JSWrapperObject(exec->lexicalGlobalObject()->dateStructure()) +void DateInstance::destroy(JSCell* cell) { - setInternalValue(jsNumber(exec, timeClip(time))); + static_cast(cell)->DateInstance::~DateInstance(); } const GregorianDateTime* DateInstance::calculateGregorianDateTime(ExecState* exec) const { double milli = internalNumber(); - if (isnan(milli)) + if (std::isnan(milli)) return 0; if (!m_data) - m_data = exec->globalData().dateInstanceCache.add(milli); + m_data = exec->vm().dateInstanceCache.add(milli); if (m_data->m_gregorianDateTimeCachedForMS != milli) { msToGregorianDateTime(exec, milli, false, m_data->m_cachedGregorianDateTime); @@ -71,11 +77,11 @@ const GregorianDateTime* DateInstance::calculateGregorianDateTime(ExecState* exe const GregorianDateTime* DateInstance::calculateGregorianDateTimeUTC(ExecState* exec) const { double milli = internalNumber(); - if (isnan(milli)) + if (std::isnan(milli)) return 0; if (!m_data) - m_data = exec->globalData().dateInstanceCache.add(milli); + m_data = exec->vm().dateInstanceCache.add(milli); if (m_data->m_gregorianDateTimeUTCCachedForMS != milli) { msToGregorianDateTime(exec, milli, true, m_data->m_cachedGregorianDateTimeUTC);