diff options
Diffstat (limited to 'src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstanceCache.h')
-rw-r--r-- | src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstanceCache.h | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstanceCache.h b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstanceCache.h deleted file mode 100644 index d208580..0000000 --- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstanceCache.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2009 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef DateInstanceCache_h -#define DateInstanceCache_h - -#include <wtf/DateMath.h> -#include <wtf/HashFunctions.h> -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> - -namespace JSC { - - extern const double NaN; - - 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(NaN) - , m_gregorianDateTimeUTCCachedForMS(NaN) - { - } - }; - - class DateInstanceCache { - public: - DateInstanceCache() - { - reset(); - } - - void reset() - { - for (size_t i = 0; i < cacheSize; ++i) - m_cache[i].key = NaN; - } - - 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(); - } - - private: - static const size_t cacheSize = 16; - - struct CacheEntry { - double key; - RefPtr<DateInstanceData> value; - }; - - CacheEntry& lookup(double d) { return m_cache[WTF::FloatHash<double>::hash(d) & (cacheSize - 1)]; } - - CacheEntry m_cache[cacheSize]; - }; - -} // namespace JSC - -#endif // DateInstanceCache_h |