Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: src/heap/heap.cc

Issue 1319953003: [heap] Get rid of dead code in HeapIterator. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/heap.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/heap/heap.h" 5 #include "src/heap/heap.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/once.h" 10 #include "src/base/once.h"
(...skipping 6081 matching lines...) Expand 10 before | Expand all | Expand 10 after
6092 MarkingVisitor visitor; 6092 MarkingVisitor visitor;
6093 heap_->IterateRoots(&visitor, VISIT_ALL); 6093 heap_->IterateRoots(&visitor, VISIT_ALL);
6094 visitor.TransitiveClosure(); 6094 visitor.TransitiveClosure();
6095 } 6095 }
6096 6096
6097 Heap* heap_; 6097 Heap* heap_;
6098 DisallowHeapAllocation no_allocation_; 6098 DisallowHeapAllocation no_allocation_;
6099 }; 6099 };
6100 6100
6101 6101
6102 HeapIterator::HeapIterator(Heap* heap)
6103 : make_heap_iterable_helper_(heap),
6104 no_heap_allocation_(),
6105 heap_(heap),
6106 filtering_(HeapIterator::kNoFiltering),
6107 filter_(NULL) {
6108 Init();
6109 }
6110
6111
6112 HeapIterator::HeapIterator(Heap* heap, 6102 HeapIterator::HeapIterator(Heap* heap,
6113 HeapIterator::HeapObjectsFiltering filtering) 6103 HeapIterator::HeapObjectsFiltering filtering)
6114 : make_heap_iterable_helper_(heap), 6104 : make_heap_iterable_helper_(heap),
6115 no_heap_allocation_(), 6105 no_heap_allocation_(),
6116 heap_(heap), 6106 heap_(heap),
6117 filtering_(filtering), 6107 filtering_(filtering),
6118 filter_(NULL) { 6108 filter_(nullptr),
6119 Init(); 6109 space_iterator_(nullptr),
6120 } 6110 object_iterator_(nullptr) {
6121
6122
6123 HeapIterator::~HeapIterator() { Shutdown(); }
6124
6125
6126 void HeapIterator::Init() {
6127 // Start the iteration. 6111 // Start the iteration.
6128 space_iterator_ = new SpaceIterator(heap_); 6112 space_iterator_ = new SpaceIterator(heap_);
6129 switch (filtering_) { 6113 switch (filtering_) {
6130 case kFilterUnreachable: 6114 case kFilterUnreachable:
6131 filter_ = new UnreachableObjectsFilter(heap_); 6115 filter_ = new UnreachableObjectsFilter(heap_);
6132 break; 6116 break;
6133 default: 6117 default:
6134 break; 6118 break;
6135 } 6119 }
6136 object_iterator_ = space_iterator_->next(); 6120 object_iterator_ = space_iterator_->next();
6137 } 6121 }
6138 6122
6139 6123
6140 void HeapIterator::Shutdown() { 6124 HeapIterator::~HeapIterator() {
6141 #ifdef DEBUG 6125 #ifdef DEBUG
6142 // Assert that in filtering mode we have iterated through all 6126 // Assert that in filtering mode we have iterated through all
6143 // objects. Otherwise, heap will be left in an inconsistent state. 6127 // objects. Otherwise, heap will be left in an inconsistent state.
6144 if (filtering_ != kNoFiltering) { 6128 if (filtering_ != kNoFiltering) {
6145 DCHECK(object_iterator_ == NULL); 6129 DCHECK(object_iterator_ == nullptr);
6146 } 6130 }
6147 #endif 6131 #endif
6148 // Make sure the last iterator is deallocated. 6132 // Make sure the last iterator is deallocated.
6133 delete object_iterator_;
6149 delete space_iterator_; 6134 delete space_iterator_;
6150 space_iterator_ = NULL;
6151 object_iterator_ = NULL;
6152 delete filter_; 6135 delete filter_;
6153 filter_ = NULL;
6154 } 6136 }
6155 6137
6156 6138
6157 HeapObject* HeapIterator::next() { 6139 HeapObject* HeapIterator::next() {
6158 if (filter_ == NULL) return NextObject(); 6140 if (filter_ == nullptr) return NextObject();
6159 6141
6160 HeapObject* obj = NextObject(); 6142 HeapObject* obj = NextObject();
6161 while (obj != NULL && filter_->SkipObject(obj)) obj = NextObject(); 6143 while ((obj != nullptr) && (filter_->SkipObject(obj))) obj = NextObject();
6162 return obj; 6144 return obj;
6163 } 6145 }
6164 6146
6165 6147
6166 HeapObject* HeapIterator::NextObject() { 6148 HeapObject* HeapIterator::NextObject() {
6167 // No iterator means we are done. 6149 // No iterator means we are done.
6168 if (object_iterator_ == NULL) return NULL; 6150 if (object_iterator_ == nullptr) return nullptr;
6169 6151
6170 if (HeapObject* obj = object_iterator_->next_object()) { 6152 if (HeapObject* obj = object_iterator_->next_object()) {
6171 // If the current iterator has more objects we are fine. 6153 // If the current iterator has more objects we are fine.
6172 return obj; 6154 return obj;
6173 } else { 6155 } else {
6174 // Go though the spaces looking for one that has objects. 6156 // Go though the spaces looking for one that has objects.
6175 while (space_iterator_->has_next()) { 6157 while (space_iterator_->has_next()) {
6176 object_iterator_ = space_iterator_->next(); 6158 object_iterator_ = space_iterator_->next();
6177 if (HeapObject* obj = object_iterator_->next_object()) { 6159 if (HeapObject* obj = object_iterator_->next_object()) {
6178 return obj; 6160 return obj;
6179 } 6161 }
6180 } 6162 }
6181 } 6163 }
6182 // Done with the last space. 6164 // Done with the last space.
6183 object_iterator_ = NULL; 6165 object_iterator_ = nullptr;
6184 return NULL; 6166 return nullptr;
6185 } 6167 }
6186 6168
6187 6169
6188 void HeapIterator::reset() {
6189 // Restart the iterator.
6190 Shutdown();
6191 Init();
6192 }
6193
6194
6195 #ifdef DEBUG 6170 #ifdef DEBUG
6196 6171
6197 Object* const PathTracer::kAnyGlobalObject = NULL; 6172 Object* const PathTracer::kAnyGlobalObject = NULL;
6198 6173
6199 class PathTracer::MarkVisitor : public ObjectVisitor { 6174 class PathTracer::MarkVisitor : public ObjectVisitor {
6200 public: 6175 public:
6201 explicit MarkVisitor(PathTracer* tracer) : tracer_(tracer) {} 6176 explicit MarkVisitor(PathTracer* tracer) : tracer_(tracer) {}
6202 void VisitPointers(Object** start, Object** end) { 6177 void VisitPointers(Object** start, Object** end) {
6203 // Scan all HeapObject pointers in [start, end) 6178 // Scan all HeapObject pointers in [start, end)
6204 for (Object** p = start; !tracer_->found() && (p < end); p++) { 6179 for (Object** p = start; !tracer_->found() && (p < end); p++) {
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
6785 *object_type = "CODE_TYPE"; \ 6760 *object_type = "CODE_TYPE"; \
6786 *object_sub_type = "CODE_AGE/" #name; \ 6761 *object_sub_type = "CODE_AGE/" #name; \
6787 return true; 6762 return true;
6788 CODE_AGE_LIST_COMPLETE(COMPARE_AND_RETURN_NAME) 6763 CODE_AGE_LIST_COMPLETE(COMPARE_AND_RETURN_NAME)
6789 #undef COMPARE_AND_RETURN_NAME 6764 #undef COMPARE_AND_RETURN_NAME
6790 } 6765 }
6791 return false; 6766 return false;
6792 } 6767 }
6793 } // namespace internal 6768 } // namespace internal
6794 } // namespace v8 6769 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698