summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/runtime/Heap.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/runtime/Heap.h')
-rw-r--r--Source/JavaScriptCore/runtime/Heap.h178
1 files changed, 0 insertions, 178 deletions
diff --git a/Source/JavaScriptCore/runtime/Heap.h b/Source/JavaScriptCore/runtime/Heap.h
deleted file mode 100644
index c2d3bac..0000000
--- a/Source/JavaScriptCore/runtime/Heap.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
- * Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef Heap_h
-#define Heap_h
-
-#include "HandleHeap.h"
-#include "HandleStack.h"
-#include "MarkStack.h"
-#include "MarkedSpace.h"
-#include <wtf/Forward.h>
-#include <wtf/HashCountedSet.h>
-#include <wtf/HashSet.h>
-
-namespace JSC {
-
- class GCActivityCallback;
- class GlobalCodeBlock;
- class HeapRootMarker;
- class JSCell;
- class JSGlobalData;
- class JSValue;
- class LiveObjectIterator;
- class MarkStack;
- class MarkedArgumentBuffer;
- class RegisterFile;
- class UString;
- class WeakGCHandlePool;
-
- typedef std::pair<JSValue, UString> ValueStringPair;
- typedef HashCountedSet<JSCell*> ProtectCountSet;
- typedef HashCountedSet<const char*> TypeCountSet;
-
- enum OperationInProgress { NoOperation, Allocation, Collection };
-
- class Heap {
- WTF_MAKE_NONCOPYABLE(Heap);
- public:
- static Heap* heap(JSValue); // 0 for immediate values
- static Heap* heap(JSCell*);
-
- static bool isMarked(const JSCell*);
- static bool testAndSetMarked(const JSCell*);
- static void setMarked(JSCell*);
-
- Heap(JSGlobalData*);
- ~Heap();
- void destroy(); // JSGlobalData must call destroy() before ~Heap().
-
- JSGlobalData* globalData() const { return m_globalData; }
- MarkedSpace& markedSpace() { return m_markedSpace; }
- MachineThreads& machineThreads() { return m_machineThreads; }
-
- GCActivityCallback* activityCallback();
- void setActivityCallback(PassOwnPtr<GCActivityCallback>);
-
- bool isBusy(); // true if an allocation or collection is in progress
- void* allocate(size_t);
- void collectAllGarbage();
-
- void reportExtraMemoryCost(size_t cost);
-
- void protect(JSValue);
- bool unprotect(JSValue); // True when the protect count drops to 0.
-
- bool contains(void*);
-
- size_t size() const;
- size_t capacity() const;
- size_t objectCount() const;
- size_t globalObjectCount();
- size_t protectedObjectCount();
- size_t protectedGlobalObjectCount();
- PassOwnPtr<TypeCountSet> protectedObjectTypeCounts();
- PassOwnPtr<TypeCountSet> objectTypeCounts();
-
- void pushTempSortVector(Vector<ValueStringPair>*);
- void popTempSortVector(Vector<ValueStringPair>*);
-
- HashSet<MarkedArgumentBuffer*>& markListSet() { if (!m_markListSet) m_markListSet = new HashSet<MarkedArgumentBuffer*>; return *m_markListSet; }
-
- template <typename Functor> void forEach(Functor&);
-
- HandleSlot allocateGlobalHandle() { return m_handleHeap.allocate(); }
- HandleSlot allocateLocalHandle() { return m_handleStack.push(); }
-
- HandleStack* handleStack() { return &m_handleStack; }
-
- private:
- friend class JSGlobalData;
-
- static const size_t minExtraCost = 256;
- static const size_t maxExtraCost = 1024 * 1024;
-
- void* allocateSlowCase(size_t);
- void reportExtraMemoryCostSlowCase(size_t);
-
- void markRoots();
- void markProtectedObjects(HeapRootMarker&);
- void markTempSortVectors(HeapRootMarker&);
-
- enum SweepToggle { DoNotSweep, DoSweep };
- void reset(SweepToggle);
-
- RegisterFile& registerFile();
-
- OperationInProgress m_operationInProgress;
- MarkedSpace m_markedSpace;
-
- ProtectCountSet m_protectedValues;
- Vector<Vector<ValueStringPair>* > m_tempSortingVectors;
-
- HashSet<MarkedArgumentBuffer*>* m_markListSet;
-
- OwnPtr<GCActivityCallback> m_activityCallback;
-
- JSGlobalData* m_globalData;
-
- MachineThreads m_machineThreads;
- MarkStack m_markStack;
- HandleHeap m_handleHeap;
- HandleStack m_handleStack;
-
- size_t m_extraCost;
- };
-
- inline bool Heap::isMarked(const JSCell* cell)
- {
- return MarkedSpace::isMarked(cell);
- }
-
- inline bool Heap::testAndSetMarked(const JSCell* cell)
- {
- return MarkedSpace::testAndSetMarked(cell);
- }
-
- inline void Heap::setMarked(JSCell* cell)
- {
- MarkedSpace::setMarked(cell);
- }
-
- inline bool Heap::contains(void* p)
- {
- return m_markedSpace.contains(p);
- }
-
- inline void Heap::reportExtraMemoryCost(size_t cost)
- {
- if (cost > minExtraCost)
- reportExtraMemoryCostSlowCase(cost);
- }
-
- template <typename Functor> inline void Heap::forEach(Functor& functor)
- {
- m_markedSpace.forEach(functor);
- }
-
-} // namespace JSC
-
-#endif // Heap_h