Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index c37ced39399830e48d4fd59f1ae420f1ec3c0fb4..dfcb9981d76f225734e0db83f65719e25dd59269 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -1558,6 +1558,7 @@ class PagedSpaces BASE_EMBEDDED { |
class SpaceIterator : public Malloced { |
public: |
SpaceIterator(); |
+ explicit SpaceIterator(HeapObjectCallback size_func); |
virtual ~SpaceIterator(); |
bool has_next(); |
@@ -1568,17 +1569,31 @@ class SpaceIterator : public Malloced { |
int current_space_; // from enum AllocationSpace. |
ObjectIterator* iterator_; // object iterator for the current space. |
+ HeapObjectCallback size_func_; |
}; |
-// A HeapIterator provides iteration over the whole heap It aggregates a the |
-// specific iterators for the different spaces as these can only iterate over |
-// one space only. |
+// A HeapIterator provides iteration over the whole heap It aggregates |
antonm
2010/11/13 17:37:51
nit: a dot after 'heap'.
mnaganov (inactive)
2010/11/13 19:05:30
Done.
|
+// a the specific iterators for the different spaces as these can only |
antonm
2010/11/13 17:37:51
nit: 'a' and 'the' at the beginning of the line
mnaganov (inactive)
2010/11/13 19:05:30
Done.
|
+// iterate over one space only. |
+// |
+// HeapIterator can skip free list nodes (that is, de-allocated heap |
+// objects that still remain in the heap). As implementation of free |
+// nodes filtering uses GC marks, it can't be used during MS/MC GC |
+// phases. Also, it is forbidden to interrupt iteration in this mode, |
+// as this will leave heap objects marked (and thus, unusable). |
+class FreeListNodesFilter; |
class HeapIterator BASE_EMBEDDED { |
public: |
- explicit HeapIterator(); |
- virtual ~HeapIterator(); |
+ enum FreeListNodesFiltering { |
+ kNoFiltering, |
+ kPreciseFiltering |
+ }; |
+ |
+ HeapIterator(); |
+ explicit HeapIterator(FreeListNodesFiltering filtering); |
antonm
2010/11/13 17:37:51
maybe turn filtering it a param with default value
mnaganov (inactive)
2010/11/13 19:05:30
The style guide is against it:
http://google-style
|
+ ~HeapIterator(); |
HeapObject* next(); |
void reset(); |
@@ -1586,10 +1601,12 @@ class HeapIterator BASE_EMBEDDED { |
private: |
// Perform the initialization. |
void Init(); |
- |
// Perform all necessary shutdown (destruction) work. |
void Shutdown(); |
+ HeapObject* NextObject(); |
+ FreeListNodesFiltering filtering_; |
+ FreeListNodesFilter* filter_; |
// Space iterator for iterating all the spaces. |
SpaceIterator* space_iterator_; |
// Object iterator for the space currently being iterated. |