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.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/Source/JavaScriptCore/runtime/Heap.h b/Source/JavaScriptCore/runtime/Heap.h
index eb8af70..c2d3bac 100644
--- a/Source/JavaScriptCore/runtime/Heap.h
+++ b/Source/JavaScriptCore/runtime/Heap.h
@@ -23,6 +23,7 @@
#define Heap_h
#include "HandleHeap.h"
+#include "HandleStack.h"
#include "MarkStack.h"
#include "MarkedSpace.h"
#include <wtf/Forward.h>
@@ -33,6 +34,7 @@ namespace JSC {
class GCActivityCallback;
class GlobalCodeBlock;
+ class HeapRootMarker;
class JSCell;
class JSGlobalData;
class JSValue;
@@ -65,7 +67,7 @@ namespace JSC {
JSGlobalData* globalData() const { return m_globalData; }
MarkedSpace& markedSpace() { return m_markedSpace; }
- MachineStackMarker& machineStackMarker() { return m_machineStackMarker; }
+ MachineThreads& machineThreads() { return m_machineThreads; }
GCActivityCallback* activityCallback();
void setActivityCallback(PassOwnPtr<GCActivityCallback>);
@@ -92,14 +94,15 @@ namespace JSC {
void pushTempSortVector(Vector<ValueStringPair>*);
void popTempSortVector(Vector<ValueStringPair>*);
-
- HashSet<GlobalCodeBlock*>& codeBlocks() { return m_codeBlocks; }
-
+
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;
@@ -111,8 +114,8 @@ namespace JSC {
void reportExtraMemoryCostSlowCase(size_t);
void markRoots();
- void markProtectedObjects(MarkStack&);
- void markTempSortVectors(MarkStack&);
+ void markProtectedObjects(HeapRootMarker&);
+ void markTempSortVectors(HeapRootMarker&);
enum SweepToggle { DoNotSweep, DoSweep };
void reset(SweepToggle);
@@ -124,7 +127,6 @@ namespace JSC {
ProtectCountSet m_protectedValues;
Vector<Vector<ValueStringPair>* > m_tempSortingVectors;
- HashSet<GlobalCodeBlock*> m_codeBlocks;
HashSet<MarkedArgumentBuffer*>* m_markListSet;
@@ -132,10 +134,11 @@ namespace JSC {
JSGlobalData* m_globalData;
- MachineStackMarker m_machineStackMarker;
+ MachineThreads m_machineThreads;
MarkStack m_markStack;
HandleHeap m_handleHeap;
-
+ HandleStack m_handleStack;
+
size_t m_extraCost;
};