Reviewers: Michael Starzinger,
Message:
Small cleanup (dead code; adding a comment) of HeapIterator.
Description:
[heap] Get rid of dead code in HeapIterator.
BUG=
Please review this at https://codereview.chromium.org/1319953003/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+18, -43 lines):
M src/heap/heap.h
M src/heap/heap.cc
Index: src/heap/heap.cc
diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index
54eafb52e2622e3ec3cf82511fbf1240e3c55f7b..1b4a79f1acbae5438c1c1da9cd5695026701e40c
100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -6099,31 +6099,15 @@ class UnreachableObjectsFilter : public
HeapObjectsFilter {
};
-HeapIterator::HeapIterator(Heap* heap)
- : make_heap_iterable_helper_(heap),
- no_heap_allocation_(),
- heap_(heap),
- filtering_(HeapIterator::kNoFiltering),
- filter_(NULL) {
- Init();
-}
-
-
HeapIterator::HeapIterator(Heap* heap,
HeapIterator::HeapObjectsFiltering filtering)
: make_heap_iterable_helper_(heap),
no_heap_allocation_(),
heap_(heap),
filtering_(filtering),
- filter_(NULL) {
- Init();
-}
-
-
-HeapIterator::~HeapIterator() { Shutdown(); }
-
-
-void HeapIterator::Init() {
+ filter_(nullptr),
+ space_iterator_(nullptr),
+ object_iterator_(nullptr) {
// Start the iteration.
space_iterator_ = new SpaceIterator(heap_);
switch (filtering_) {
@@ -6137,35 +6121,33 @@ void HeapIterator::Init() {
}
-void HeapIterator::Shutdown() {
+HeapIterator::~HeapIterator() {
#ifdef DEBUG
// Assert that in filtering mode we have iterated through all
// objects. Otherwise, heap will be left in an inconsistent state.
if (filtering_ != kNoFiltering) {
- DCHECK(object_iterator_ == NULL);
+ DCHECK(object_iterator_ == nullptr);
}
#endif
// Make sure the last iterator is deallocated.
+ delete object_iterator_;
delete space_iterator_;
- space_iterator_ = NULL;
- object_iterator_ = NULL;
delete filter_;
- filter_ = NULL;
}
HeapObject* HeapIterator::next() {
- if (filter_ == NULL) return NextObject();
+ if (filter_ == nullptr) return NextObject();
HeapObject* obj = NextObject();
- while (obj != NULL && filter_->SkipObject(obj)) obj = NextObject();
+ while ((obj != nullptr) && (filter_->SkipObject(obj))) obj =
NextObject();
return obj;
}
HeapObject* HeapIterator::NextObject() {
// No iterator means we are done.
- if (object_iterator_ == NULL) return NULL;
+ if (object_iterator_ == nullptr) return nullptr;
if (HeapObject* obj = object_iterator_->next_object()) {
// If the current iterator has more objects we are fine.
@@ -6180,15 +6162,8 @@ HeapObject* HeapIterator::NextObject() {
}
}
// Done with the last space.
- object_iterator_ = NULL;
- return NULL;
-}
-
-
-void HeapIterator::reset() {
- // Restart the iterator.
- Shutdown();
- Init();
+ object_iterator_ = nullptr;
+ return nullptr;
}
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_;
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.