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

Unified Diff: src/profile-generator.cc

Issue 6639024: Get rid of distinction between below- and above-watermark in page allocation.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/gc/
Patch Set: '' Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/profile-generator.h ('k') | src/runtime.cc » ('j') | src/spaces-inl.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/profile-generator.cc
===================================================================
--- src/profile-generator.cc (revision 7216)
+++ src/profile-generator.cc (working copy)
@@ -1811,12 +1811,11 @@
}
-int V8HeapExplorer::EstimateObjectsCount() {
- HeapIterator iterator(HeapIterator::kFilterUnreachable);
+int V8HeapExplorer::EstimateObjectsCount(HeapIterator* iterator) {
int objects_count = 0;
- for (HeapObject* obj = iterator.next();
+ for (HeapObject* obj = iterator->Next();
obj != NULL;
- obj = iterator.next(), ++objects_count) {}
+ obj = iterator->Next(), ++objects_count) {}
return objects_count;
}
@@ -2015,14 +2014,14 @@
bool V8HeapExplorer::IterateAndExtractReferences(
+ HeapIterator* iterator,
SnapshotFillerInterface* filler) {
filler_ = filler;
- HeapIterator iterator(HeapIterator::kFilterUnreachable);
bool interrupted = false;
// Heap iteration with filtering must be finished in any case.
- for (HeapObject* obj = iterator.next();
+ for (HeapObject* obj = iterator->Next();
obj != NULL;
- obj = iterator.next(), progress_->ProgressStep()) {
+ obj = iterator->Next(), progress_->ProgressStep()) {
if (!interrupted) {
ExtractReferences(obj);
if (!progress_->ProgressReport(false)) interrupted = true;
@@ -2508,12 +2507,16 @@
bool HeapSnapshotGenerator::GenerateSnapshot() {
+ HeapIterator set_progress_heap_iterator;
+ HeapIterator count_entries_heap_iterator;
+ HeapIterator fill_references_heap_iterator;
AssertNoAllocation no_alloc;
- SetProgressTotal(4); // 2 passes + dominators + sizes.
+ SetProgressTotal(&set_progress_heap_iterator,
+ 4); // 2 passes + dominators + sizes.
// Pass 1. Iterate heap contents to count entries and references.
- if (!CountEntriesAndReferences()) return false;
+ if (!CountEntriesAndReferences(&count_entries_heap_iterator)) return false;
// Allocate and fill entries in the snapshot, allocate references.
snapshot_->AllocateEntries(entries_.entries_count(),
@@ -2522,7 +2525,7 @@
entries_.AllocateEntries();
// Pass 2. Fill references.
- if (!FillReferences()) return false;
+ if (!FillReferences(&fill_references_heap_iterator)) return false;
if (!SetEntriesDominators()) return false;
if (!ApproximateRetainedSizes()) return false;
@@ -2550,29 +2553,30 @@
}
-void HeapSnapshotGenerator::SetProgressTotal(int iterations_count) {
+void HeapSnapshotGenerator::SetProgressTotal(HeapIterator* iterator,
+ int iterations_count) {
if (control_ == NULL) return;
progress_total_ = (
- v8_heap_explorer_.EstimateObjectsCount() +
+ v8_heap_explorer_.EstimateObjectsCount(iterator) +
dom_explorer_.EstimateObjectsCount()) * iterations_count;
progress_counter_ = 0;
}
-bool HeapSnapshotGenerator::CountEntriesAndReferences() {
+bool HeapSnapshotGenerator::CountEntriesAndReferences(HeapIterator* iterator) {
SnapshotCounter counter(&entries_);
v8_heap_explorer_.AddRootEntries(&counter);
dom_explorer_.AddRootEntries(&counter);
return
- v8_heap_explorer_.IterateAndExtractReferences(&counter) &&
+ v8_heap_explorer_.IterateAndExtractReferences(iterator, &counter) &&
dom_explorer_.IterateAndExtractReferences(&counter);
}
-bool HeapSnapshotGenerator::FillReferences() {
+bool HeapSnapshotGenerator::FillReferences(HeapIterator* iterator) {
SnapshotFiller filler(snapshot_, &entries_);
return
- v8_heap_explorer_.IterateAndExtractReferences(&filler) &&
+ v8_heap_explorer_.IterateAndExtractReferences(iterator, &filler) &&
dom_explorer_.IterateAndExtractReferences(&filler);
}
« no previous file with comments | « src/profile-generator.h ('k') | src/runtime.cc » ('j') | src/spaces-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698