summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/VarOffset.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/runtime/VarOffset.h
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/runtime/VarOffset.h')
-rw-r--r--Source/JavaScriptCore/runtime/VarOffset.h247
1 files changed, 0 insertions, 247 deletions
diff --git a/Source/JavaScriptCore/runtime/VarOffset.h b/Source/JavaScriptCore/runtime/VarOffset.h
deleted file mode 100644
index b844f57e4..000000000
--- a/Source/JavaScriptCore/runtime/VarOffset.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2015 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 VarOffset_h
-#define VarOffset_h
-
-#include "DirectArgumentsOffset.h"
-#include "ScopeOffset.h"
-#include "VirtualRegister.h"
-#include <wtf/HashMap.h>
-
-namespace JSC {
-
-enum class VarKind : uint8_t {
- Invalid,
- Scope,
- Stack,
- DirectArgument
-};
-
-class VarOffset {
-public:
- VarOffset()
- : m_kind(VarKind::Invalid)
- , m_offset(UINT_MAX)
- {
- }
-
- VarOffset(WTF::HashTableDeletedValueType)
- : m_kind(VarKind::Invalid)
- , m_offset(0)
- {
- }
-
- explicit VarOffset(VirtualRegister stackOffset)
- {
- if (!stackOffset.isValid()) {
- m_kind = VarKind::Invalid;
- m_offset = UINT_MAX;
- } else {
- m_kind = VarKind::Stack;
- m_offset = stackOffset.offset();
- }
- }
-
- explicit VarOffset(ScopeOffset scopeOffset)
- {
- if (!scopeOffset) {
- m_kind = VarKind::Invalid;
- m_offset = UINT_MAX;
- } else {
- m_kind = VarKind::Scope;
- m_offset = scopeOffset.offset();
- }
- }
-
- explicit VarOffset(DirectArgumentsOffset capturedArgumentsOffset)
- {
- if (!capturedArgumentsOffset) {
- m_kind = VarKind::Invalid;
- m_offset = UINT_MAX;
- } else {
- m_kind = VarKind::DirectArgument;
- m_offset = capturedArgumentsOffset.offset();
- }
- }
-
- static VarOffset assemble(VarKind kind, unsigned offset)
- {
- VarOffset result;
- result.m_kind = kind;
- result.m_offset = offset;
- result.checkSanity();
- return result;
- }
-
- bool isValid() const
- {
- return m_kind != VarKind::Invalid;
- }
-
- bool operator!() const
- {
- return !isValid();
- }
-
- VarKind kind() const { return m_kind; }
-
- bool isStack() const
- {
- return m_kind == VarKind::Stack;
- }
-
- bool isScope() const
- {
- return m_kind == VarKind::Scope;
- }
-
- bool isDirectArgument() const
- {
- return m_kind == VarKind::DirectArgument;
- }
-
- VirtualRegister stackOffsetUnchecked() const
- {
- if (!isStack())
- return VirtualRegister();
- return VirtualRegister(m_offset);
- }
-
- ScopeOffset scopeOffsetUnchecked() const
- {
- if (!isScope())
- return ScopeOffset();
- return ScopeOffset(m_offset);
- }
-
- DirectArgumentsOffset capturedArgumentsOffsetUnchecked() const
- {
- if (!isDirectArgument())
- return DirectArgumentsOffset();
- return DirectArgumentsOffset(m_offset);
- }
-
- VirtualRegister stackOffset() const
- {
- ASSERT(isStack());
- return VirtualRegister(m_offset);
- }
-
- ScopeOffset scopeOffset() const
- {
- ASSERT(isScope());
- return ScopeOffset(m_offset);
- }
-
- DirectArgumentsOffset capturedArgumentsOffset() const
- {
- ASSERT(isDirectArgument());
- return DirectArgumentsOffset(m_offset);
- }
-
- unsigned rawOffset() const
- {
- ASSERT(isValid());
- return m_offset;
- }
-
- void checkSanity() const
- {
- if (ASSERT_DISABLED)
- return;
-
- switch (m_kind) {
- case VarKind::Invalid:
- ASSERT(m_offset == UINT_MAX);
- return;
- case VarKind::Scope:
- ASSERT(scopeOffset());
- return;
- case VarKind::Stack:
- ASSERT(stackOffset().isValid());
- return;
- case VarKind::DirectArgument:
- ASSERT(capturedArgumentsOffset());
- return;
- }
-
- ASSERT_NOT_REACHED();
- }
-
- bool operator==(const VarOffset& other) const
- {
- return m_kind == other.m_kind
- && m_offset == other.m_offset;
- }
-
- bool operator!=(const VarOffset& other) const
- {
- return !(*this == other);
- }
-
- unsigned hash() const
- {
- return WTF::IntHash<unsigned>::hash((static_cast<unsigned>(m_kind) << 20) + m_offset);
- }
-
- bool isHashTableDeletedValue() const
- {
- return m_kind == VarKind::Invalid && !m_offset;
- }
-
- void dump(PrintStream&) const;
-
-private:
- VarKind m_kind;
- unsigned m_offset;
-};
-
-struct VarOffsetHash {
- static unsigned hash(const VarOffset& key) { return key.hash(); }
- static bool equal(const VarOffset& a, const VarOffset& b) { return a == b; }
- static const bool safeToCompareToEmptyOrDeleted = true;
-};
-
-} // namespace JSC
-
-namespace WTF {
-
-void printInternal(PrintStream&, JSC::VarKind);
-
-template<typename T> struct DefaultHash;
-template<> struct DefaultHash<JSC::VarOffset> {
- typedef JSC::VarOffsetHash Hash;
-};
-
-template<typename T> struct HashTraits;
-template<> struct HashTraits<JSC::VarOffset> : SimpleClassHashTraits<JSC::VarOffset> {
- static const bool emptyValueIsZero = false;
-};
-
-} // namespace WTF
-
-#endif // VarOffset_h
-