Index: src/heap/heap.h |
diff --git a/src/heap/heap.h b/src/heap/heap.h |
index 8ebf21b841c71c649726d4ef144b336a38d22ed6..b86b5c46b4efa8ba799b6d5f41f7e1d94771348b 100644 |
--- a/src/heap/heap.h |
+++ b/src/heap/heap.h |
@@ -2579,26 +2579,26 @@ class HeapIterator BASE_EMBEDDED { |
public: |
enum HeapObjectsFiltering { kNoFiltering, kFilterUnreachable }; |
- explicit HeapIterator(Heap* heap); |
- HeapIterator(Heap* heap, HeapObjectsFiltering filtering); |
+ explicit HeapIterator(Heap* heap, |
+ HeapObjectsFiltering filtering = kNoFiltering); |
~HeapIterator(); |
HeapObject* next(); |
- void reset(); |
private: |
struct MakeHeapIterableHelper { |
explicit MakeHeapIterableHelper(Heap* heap) { heap->MakeHeapIterable(); } |
}; |
- // Perform the initialization. |
- void Init(); |
- // Perform all necessary shutdown (destruction) work. |
- void Shutdown(); |
HeapObject* NextObject(); |
+ // The following two fields need to be declared in this order. Initialization |
+ // order guarantees that we first make the heap iterable (which may involve |
+ // allocations) and only then lock it down by not allowing further |
+ // allocations. |
MakeHeapIterableHelper make_heap_iterable_helper_; |
DisallowHeapAllocation no_heap_allocation_; |
+ |
Heap* heap_; |
HeapObjectsFiltering filtering_; |
HeapObjectsFilter* filter_; |