summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/DateInstanceCache.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/runtime/DateInstanceCache.h
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
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