diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Source/JavaScriptCore/runtime/DateInstanceCache.h | |
parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
download | qtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz |
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/JavaScriptCore/runtime/DateInstanceCache.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/DateInstanceCache.h | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/Source/JavaScriptCore/runtime/DateInstanceCache.h b/Source/JavaScriptCore/runtime/DateInstanceCache.h index e186516e8..865ee8ff2 100644 --- a/Source/JavaScriptCore/runtime/DateInstanceCache.h +++ b/Source/JavaScriptCore/runtime/DateInstanceCache.h @@ -26,68 +26,68 @@ #ifndef DateInstanceCache_h #define DateInstanceCache_h +#include "JSCJSValue.h" #include "JSDateMath.h" -#include <wtf/FixedArray.h> +#include <array> #include <wtf/HashFunctions.h> -#include <wtf/PassRefPtr.h> #include <wtf/RefCounted.h> namespace JSC { - 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) - { - } - }; +class DateInstanceData : public RefCounted<DateInstanceData> { +public: + static Ref<DateInstanceData> create() { return adoptRef(*new DateInstanceData); } - 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(); - } + 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(); + } - private: - static const size_t cacheSize = 16; + void reset() + { + for (size_t i = 0; i < cacheSize; ++i) + m_cache[i].key = PNaN; + } - struct CacheEntry { - double key; - RefPtr<DateInstanceData> value; - }; + 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(); + } - CacheEntry& lookup(double d) { return m_cache[WTF::FloatHash<double>::hash(d) & (cacheSize - 1)]; } +private: + static const size_t cacheSize = 16; - FixedArray<CacheEntry, cacheSize> m_cache; + struct CacheEntry { + double key; + RefPtr<DateInstanceData> value; }; + CacheEntry& lookup(double d) { return m_cache[WTF::FloatHash<double>::hash(d) & (cacheSize - 1)]; } + + std::array<CacheEntry, cacheSize> m_cache; +}; + } // namespace JSC #endif // DateInstanceCache_h |