Added sweeping time measurement for old space sweeping.

BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/203263014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
hpayer@chromium.org 2014-03-19 09:27:42 +00:00
parent e812aca6b3
commit 8e749aaafd
3 changed files with 18 additions and 14 deletions

View File

@ -7431,8 +7431,9 @@ GCTracer::~GCTracer() {
PrintF("external=%.1f ", scopes_[Scope::EXTERNAL]); PrintF("external=%.1f ", scopes_[Scope::EXTERNAL]);
PrintF("mark=%.1f ", scopes_[Scope::MC_MARK]); PrintF("mark=%.1f ", scopes_[Scope::MC_MARK]);
PrintF("sweep=%.1f ", scopes_[Scope::MC_SWEEP]); PrintF("sweep=%.2f ", scopes_[Scope::MC_SWEEP]);
PrintF("sweepns=%.1f ", scopes_[Scope::MC_SWEEP_NEWSPACE]); PrintF("sweepns=%.2f ", scopes_[Scope::MC_SWEEP_NEWSPACE]);
PrintF("sweepos=%.2f ", scopes_[Scope::MC_SWEEP_OLDSPACE]);
PrintF("evacuate=%.1f ", scopes_[Scope::MC_EVACUATE_PAGES]); PrintF("evacuate=%.1f ", scopes_[Scope::MC_EVACUATE_PAGES]);
PrintF("new_new=%.1f ", scopes_[Scope::MC_UPDATE_NEW_TO_NEW_POINTERS]); PrintF("new_new=%.1f ", scopes_[Scope::MC_UPDATE_NEW_TO_NEW_POINTERS]);
PrintF("root_new=%.1f ", scopes_[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS]); PrintF("root_new=%.1f ", scopes_[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS]);

View File

@ -2877,6 +2877,7 @@ class GCTracer BASE_EMBEDDED {
MC_MARK, MC_MARK,
MC_SWEEP, MC_SWEEP,
MC_SWEEP_NEWSPACE, MC_SWEEP_NEWSPACE,
MC_SWEEP_OLDSPACE,
MC_EVACUATE_PAGES, MC_EVACUATE_PAGES,
MC_UPDATE_NEW_TO_NEW_POINTERS, MC_UPDATE_NEW_TO_NEW_POINTERS,
MC_UPDATE_ROOT_TO_NEW_POINTERS, MC_UPDATE_ROOT_TO_NEW_POINTERS,

View File

@ -4240,20 +4240,22 @@ void MarkCompactCollector::SweepSpaces() {
// the map space last because freeing non-live maps overwrites them and // the map space last because freeing non-live maps overwrites them and
// the other spaces rely on possibly non-live maps to get the sizes for // the other spaces rely on possibly non-live maps to get the sizes for
// non-live objects. // non-live objects.
SequentialSweepingScope scope(this); { GCTracer::Scope sweep_scope(tracer_, GCTracer::Scope::MC_SWEEP_OLDSPACE);
SweepSpace(heap()->old_pointer_space(), how_to_sweep); { SequentialSweepingScope scope(this);
SweepSpace(heap()->old_data_space(), how_to_sweep); SweepSpace(heap()->old_pointer_space(), how_to_sweep);
SweepSpace(heap()->old_data_space(), how_to_sweep);
}
if (how_to_sweep == PARALLEL_CONSERVATIVE || if (how_to_sweep == PARALLEL_CONSERVATIVE ||
how_to_sweep == CONCURRENT_CONSERVATIVE) { how_to_sweep == CONCURRENT_CONSERVATIVE) {
// TODO(hpayer): fix race with concurrent sweeper // TODO(hpayer): fix race with concurrent sweeper
StartSweeperThreads(); StartSweeperThreads();
}
if (how_to_sweep == PARALLEL_CONSERVATIVE) {
WaitUntilSweepingCompleted();
}
} }
if (how_to_sweep == PARALLEL_CONSERVATIVE) {
WaitUntilSweepingCompleted();
}
RemoveDeadInvalidatedCode(); RemoveDeadInvalidatedCode();
SweepSpace(heap()->code_space(), PRECISE); SweepSpace(heap()->code_space(), PRECISE);