diff options
| author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
|---|---|---|
| committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
| commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
| tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/runtime/DateInstanceCache.h | |
| parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
| download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz | |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/runtime/DateInstanceCache.h')
| -rw-r--r-- | Source/JavaScriptCore/runtime/DateInstanceCache.h | 95 |
1 files changed, 48 insertions, 47 deletions
diff --git a/Source/JavaScriptCore/runtime/DateInstanceCache.h b/Source/JavaScriptCore/runtime/DateInstanceCache.h index 865ee8ff2..1c8c011ec 100644 --- a/Source/JavaScriptCore/runtime/DateInstanceCache.h +++ b/Source/JavaScriptCore/runtime/DateInstanceCache.h @@ -30,63 +30,64 @@ #include "JSDateMath.h" #include <array> #include <wtf/HashFunctions.h> +#include <wtf/PassRefPtr.h> #include <wtf/RefCounted.h> namespace JSC { -class DateInstanceData : public RefCounted<DateInstanceData> { -public: - static Ref<DateInstanceData> create() { return adoptRef(*new DateInstanceData); } - - double m_gregorianDateTimeCachedForMS; - GregorianDateTime m_cachedGregorianDateTime; - double m_gregorianDateTimeUTCCachedForMS; - GregorianDateTime m_cachedGregorianDateTimeUTC; - -private: - DateInstanceData() - : m_gregorianDateTimeCachedForMS(PNaN) - , m_gregorianDateTimeUTCCachedForMS(PNaN) - { - } -}; - -class DateInstanceCache { -public: - DateInstanceCache() - { - reset(); - } - - void reset() - { - for (size_t i = 0; i < cacheSize; ++i) - m_cache[i].key = PNaN; - } + class DateInstanceData : public RefCounted<DateInstanceData> { + public: + static PassRefPtr<DateInstanceData> create() { return adoptRef(new DateInstanceData); } + + double m_gregorianDateTimeCachedForMS; + GregorianDateTime m_cachedGregorianDateTime; + double m_gregorianDateTimeUTCCachedForMS; + GregorianDateTime m_cachedGregorianDateTimeUTC; + + private: + DateInstanceData() + : m_gregorianDateTimeCachedForMS(QNaN) + , m_gregorianDateTimeUTCCachedForMS(QNaN) + { + } + }; - DateInstanceData* add(double d) - { - CacheEntry& entry = lookup(d); - if (d == entry.key) + class DateInstanceCache { + public: + DateInstanceCache() + { + reset(); + } + + void reset() + { + for (size_t i = 0; i < cacheSize; ++i) + m_cache[i].key = QNaN; + } + + DateInstanceData* add(double d) + { + CacheEntry& entry = lookup(d); + if (d == entry.key) + return entry.value.get(); + + entry.key = d; + entry.value = DateInstanceData::create(); return entry.value.get(); + } - entry.key = d; - entry.value = DateInstanceData::create(); - return entry.value.get(); - } - -private: - static const size_t cacheSize = 16; + private: + static const size_t cacheSize = 16; - struct CacheEntry { - double key; - RefPtr<DateInstanceData> value; - }; + struct CacheEntry { + double key; + RefPtr<DateInstanceData> value; + }; - CacheEntry& lookup(double d) { return m_cache[WTF::FloatHash<double>::hash(d) & (cacheSize - 1)]; } + CacheEntry& lookup(double d) { return m_cache[WTF::FloatHash<double>::hash(d) & (cacheSize - 1)]; } - std::array<CacheEntry, cacheSize> m_cache; -}; + std::array<CacheEntry, cacheSize> m_cache; + }; } // namespace JSC |
