summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/DateInstanceCache.h
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Source/JavaScriptCore/runtime/DateInstanceCache.h
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
downloadqtwebkit-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.h98
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