Changeset 50174 in webkit for trunk/JavaScriptCore/runtime/DateInstance.cpp
- Timestamp:
- Oct 27, 2009, 3:01:41 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/DateInstance.cpp
r49886 r50174 33 33 namespace JSC { 34 34 35 struct DateInstance::Cache {36 double m_gregorianDateTimeCachedForMS;37 GregorianDateTime m_cachedGregorianDateTime;38 double m_gregorianDateTimeUTCCachedForMS;39 GregorianDateTime m_cachedGregorianDateTimeUTC;40 };41 42 35 const ClassInfo DateInstance::info = {"Date", 0, 0, 0}; 43 36 44 37 DateInstance::DateInstance(NonNullPassRefPtr<Structure> structure) 45 38 : JSWrapperObject(structure) 46 , m_cache(0)47 39 { 48 40 } … … 50 42 DateInstance::DateInstance(ExecState* exec, double time) 51 43 : JSWrapperObject(exec->lexicalGlobalObject()->dateStructure()) 52 , m_cache(0)53 44 { 54 45 setInternalValue(jsNumber(exec, timeClip(time))); 55 46 } 56 47 57 DateInstance::~DateInstance() 48 bool DateInstance::getGregorianDateTime(ExecState* exec, bool outputIsUTC, GregorianDateTime& t) const 58 49 { 59 delete m_cache;60 }61 62 bool DateInstance::getGregorianDateTime(bool outputIsUTC, GregorianDateTime& t) const63 {64 if (!m_cache) {65 m_cache = new Cache;66 m_cache->m_gregorianDateTimeCachedForMS = NaN;67 m_cache->m_gregorianDateTimeUTCCachedForMS = NaN;68 }69 70 50 double milli = internalNumber(); 71 51 if (isnan(milli)) 72 52 return false; 73 53 54 if (!m_data) 55 m_data = exec->globalData().dateInstanceCache.add(milli); 56 74 57 if (outputIsUTC) { 75 if (m_ cache->m_gregorianDateTimeUTCCachedForMS != milli) {76 WTF::msToGregorianDateTime(internalNumber(), true, m_ cache->m_cachedGregorianDateTimeUTC);77 m_ cache->m_gregorianDateTimeUTCCachedForMS = milli;58 if (m_data->m_gregorianDateTimeUTCCachedForMS != milli) { 59 WTF::msToGregorianDateTime(internalNumber(), true, m_data->m_cachedGregorianDateTimeUTC); 60 m_data->m_gregorianDateTimeUTCCachedForMS = milli; 78 61 } 79 t.copyFrom(m_ cache->m_cachedGregorianDateTimeUTC);62 t.copyFrom(m_data->m_cachedGregorianDateTimeUTC); 80 63 } else { 81 if (m_ cache->m_gregorianDateTimeCachedForMS != milli) {82 WTF::msToGregorianDateTime(internalNumber(), false, m_ cache->m_cachedGregorianDateTime);83 m_ cache->m_gregorianDateTimeCachedForMS = milli;64 if (m_data->m_gregorianDateTimeCachedForMS != milli) { 65 WTF::msToGregorianDateTime(internalNumber(), false, m_data->m_cachedGregorianDateTime); 66 m_data->m_gregorianDateTimeCachedForMS = milli; 84 67 } 85 t.copyFrom(m_ cache->m_cachedGregorianDateTime);68 t.copyFrom(m_data->m_cachedGregorianDateTime); 86 69 } 87 70 88 71 return true; 89 72 }
Note:
See TracChangeset
for help on using the changeset viewer.