src/3rdparty/webkit/JavaScriptCore/runtime/DateInstanceCache.h
changeset 30 5dc02b23752f
parent 3 41300fa6a67c
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
    38     class DateInstanceData : public RefCounted<DateInstanceData> {
    38     class DateInstanceData : public RefCounted<DateInstanceData> {
    39     public:
    39     public:
    40         static PassRefPtr<DateInstanceData> create() { return adoptRef(new DateInstanceData); }
    40         static PassRefPtr<DateInstanceData> create() { return adoptRef(new DateInstanceData); }
    41 
    41 
    42         double m_gregorianDateTimeCachedForMS;
    42         double m_gregorianDateTimeCachedForMS;
    43         WTF::GregorianDateTime m_cachedGregorianDateTime;
    43         GregorianDateTime m_cachedGregorianDateTime;
    44         double m_gregorianDateTimeUTCCachedForMS;
    44         double m_gregorianDateTimeUTCCachedForMS;
    45         WTF::GregorianDateTime m_cachedGregorianDateTimeUTC;
    45         GregorianDateTime m_cachedGregorianDateTimeUTC;
    46 
    46 
    47     private:
    47     private:
    48         DateInstanceData()
    48         DateInstanceData()
    49             : m_gregorianDateTimeCachedForMS(NaN)
    49             : m_gregorianDateTimeCachedForMS(NaN)
    50             , m_gregorianDateTimeUTCCachedForMS(NaN)
    50             , m_gregorianDateTimeUTCCachedForMS(NaN)
    53     };
    53     };
    54 
    54 
    55     class DateInstanceCache {
    55     class DateInstanceCache {
    56     public:
    56     public:
    57         DateInstanceCache()
    57         DateInstanceCache()
       
    58         {
       
    59             reset();
       
    60         }
       
    61         
       
    62         void reset()
    58         {
    63         {
    59             for (size_t i = 0; i < cacheSize; ++i)
    64             for (size_t i = 0; i < cacheSize; ++i)
    60                 m_cache[i].key = NaN;
    65                 m_cache[i].key = NaN;
    61         }
    66         }
    62         
    67         
    70             entry.value = DateInstanceData::create();
    75             entry.value = DateInstanceData::create();
    71             return entry.value.get();
    76             return entry.value.get();
    72         }
    77         }
    73 
    78 
    74     private:
    79     private:
    75         static const size_t cacheSize = 64;
    80         static const size_t cacheSize = 16;
    76 
    81 
    77         struct CacheEntry {
    82         struct CacheEntry {
    78             double key;
    83             double key;
    79             RefPtr<DateInstanceData> value;
    84             RefPtr<DateInstanceData> value;
    80         };
    85         };