summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
commit41386e9cb918eed93b3f13648cbef387e371e451 (patch)
treea97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h
parente15dd966d523731101f70ccf768bba12435a0208 (diff)
downloadWebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h')
-rw-r--r--Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h230
1 files changed, 0 insertions, 230 deletions
diff --git a/Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h b/Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h
deleted file mode 100644
index 88e43cc9b..000000000
--- a/Source/JavaScriptCore/heap/GCSegmentedArrayInlines.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2014 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. AND ITS CONTRIBUTORS ``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 ITS 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 GCSegmentedArrayInlines_h
-#define GCSegmentedArrayInlines_h
-
-#include "GCSegmentedArray.h"
-
-namespace JSC {
-
-template <typename T>
-GCSegmentedArray<T>::GCSegmentedArray()
- : m_top(0)
- , m_numberOfSegments(0)
-{
- m_segments.push(GCArraySegment<T>::create());
- m_numberOfSegments++;
-}
-
-template <typename T>
-GCSegmentedArray<T>::~GCSegmentedArray()
-{
- ASSERT(m_numberOfSegments == 1);
- ASSERT(m_segments.size() == 1);
- GCArraySegment<T>::destroy(m_segments.removeHead());
- m_numberOfSegments--;
- ASSERT(!m_numberOfSegments);
- ASSERT(!m_segments.size());
-}
-
-template <typename T>
-void GCSegmentedArray<T>::clear()
-{
- if (!m_segments.head())
- return;
- GCArraySegment<T>* next;
- for (GCArraySegment<T>* current = m_segments.head(); current->next(); current = next) {
- next = current->next();
- m_segments.remove(current);
- GCArraySegment<T>::destroy(current);
- }
- m_top = 0;
- m_numberOfSegments = 1;
-#if !ASSERT_DISABLED
- m_segments.head()->m_top = 0;
-#endif
-}
-
-template <typename T>
-void GCSegmentedArray<T>::expand()
-{
- ASSERT(m_segments.head()->m_top == s_segmentCapacity);
-
- GCArraySegment<T>* nextSegment = GCArraySegment<T>::create();
- m_numberOfSegments++;
-
-#if !ASSERT_DISABLED
- nextSegment->m_top = 0;
-#endif
-
- m_segments.push(nextSegment);
- setTopForEmptySegment();
- validatePrevious();
-}
-
-template <typename T>
-bool GCSegmentedArray<T>::refill()
-{
- validatePrevious();
- if (top())
- return true;
- GCArraySegment<T>::destroy(m_segments.removeHead());
- ASSERT(m_numberOfSegments > 1);
- m_numberOfSegments--;
- setTopForFullSegment();
- validatePrevious();
- return true;
-}
-
-template <typename T>
-void GCSegmentedArray<T>::fillVector(Vector<T>& vector)
-{
- ASSERT(vector.size() == size());
-
- GCArraySegment<T>* currentSegment = m_segments.head();
- if (!currentSegment)
- return;
-
- unsigned count = 0;
- for (unsigned i = 0; i < m_top; ++i) {
- ASSERT(currentSegment->data()[i]);
- vector[count++] = currentSegment->data()[i];
- }
-
- currentSegment = currentSegment->next();
- while (currentSegment) {
- for (unsigned i = 0; i < s_segmentCapacity; ++i) {
- ASSERT(currentSegment->data()[i]);
- vector[count++] = currentSegment->data()[i];
- }
- currentSegment = currentSegment->next();
- }
-}
-
-template <typename T>
-inline GCArraySegment<T>* GCArraySegment<T>::create()
-{
- return new (NotNull, fastMalloc(blockSize)) GCArraySegment<T>();
-}
-
-template <typename T>
-inline void GCArraySegment<T>::destroy(GCArraySegment* segment)
-{
- segment->~GCArraySegment();
- fastFree(segment);
-}
-
-template <typename T>
-inline size_t GCSegmentedArray<T>::postIncTop()
-{
- size_t result = m_top++;
- ASSERT(result == m_segments.head()->m_top++);
- return result;
-}
-
-template <typename T>
-inline size_t GCSegmentedArray<T>::preDecTop()
-{
- size_t result = --m_top;
- ASSERT(result == --m_segments.head()->m_top);
- return result;
-}
-
-template <typename T>
-inline void GCSegmentedArray<T>::setTopForFullSegment()
-{
- ASSERT(m_segments.head()->m_top == s_segmentCapacity);
- m_top = s_segmentCapacity;
-}
-
-template <typename T>
-inline void GCSegmentedArray<T>::setTopForEmptySegment()
-{
- ASSERT(!m_segments.head()->m_top);
- m_top = 0;
-}
-
-template <typename T>
-inline size_t GCSegmentedArray<T>::top()
-{
- ASSERT(m_top == m_segments.head()->m_top);
- return m_top;
-}
-
-template <typename T>
-#if ASSERT_DISABLED
-inline void GCSegmentedArray<T>::validatePrevious() { }
-#else
-inline void GCSegmentedArray<T>::validatePrevious()
-{
- unsigned count = 0;
- for (GCArraySegment<T>* current = m_segments.head(); current; current = current->next())
- count++;
- ASSERT(m_segments.size() == m_numberOfSegments);
-}
-#endif
-
-template <typename T>
-inline void GCSegmentedArray<T>::append(T value)
-{
- if (m_top == s_segmentCapacity)
- expand();
- m_segments.head()->data()[postIncTop()] = value;
-}
-
-template <typename T>
-inline bool GCSegmentedArray<T>::canRemoveLast()
-{
- return !!m_top;
-}
-
-template <typename T>
-inline const T GCSegmentedArray<T>::removeLast()
-{
- return m_segments.head()->data()[preDecTop()];
-}
-
-template <typename T>
-inline bool GCSegmentedArray<T>::isEmpty()
-{
- if (m_top)
- return false;
- if (m_segments.head()->next()) {
- ASSERT(m_segments.head()->next()->m_top == s_segmentCapacity);
- return false;
- }
- return true;
-}
-
-template <typename T>
-inline size_t GCSegmentedArray<T>::size()
-{
- return m_top + s_segmentCapacity * (m_numberOfSegments - 1);
-}
-
-} // namespace JSC
-
-#endif // GCSegmentedArrayInlines_h