Integrate concurrent sweeping with incremental marking.
BUG= Review URL: https://codereview.chromium.org/12527011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13852 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
250edbdc64
commit
2c9789e17f
@ -1695,6 +1695,12 @@ class Heap {
|
||||
return sweeping_complete;
|
||||
}
|
||||
|
||||
bool EnsureSweepersProgressed(int step_size) {
|
||||
bool sweeping_complete = old_data_space()->EnsureSweeperProgress(step_size);
|
||||
sweeping_complete &= old_pointer_space()->EnsureSweeperProgress(step_size);
|
||||
return sweeping_complete;
|
||||
}
|
||||
|
||||
ExternalStringTable* external_string_table() {
|
||||
return &external_string_table_;
|
||||
}
|
||||
|
@ -562,7 +562,6 @@ void IncrementalMarking::UncommitMarkingDeque() {
|
||||
|
||||
|
||||
void IncrementalMarking::Start() {
|
||||
ASSERT(!heap_->mark_compact_collector()->IsConcurrentSweepingInProgress());
|
||||
if (FLAG_trace_incremental_marking) {
|
||||
PrintF("[IncrementalMarking] Start\n");
|
||||
}
|
||||
@ -901,7 +900,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes,
|
||||
}
|
||||
|
||||
if (state_ == SWEEPING) {
|
||||
if (heap_->AdvanceSweepers(static_cast<int>(bytes_to_process))) {
|
||||
if (heap_->EnsureSweepersProgressed(static_cast<int>(bytes_to_process))) {
|
||||
bytes_scanned_ = 0;
|
||||
StartMarking(PREVENT_COMPACTION);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user