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:
parent
e812aca6b3
commit
8e749aaafd
@ -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]);
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user