Commit 11d3178b authored by Hannes Payer's avatar Hannes Payer Committed by Commit Bot

[heap] Move write rx->rw->rx transition in Scavenger to parallel jobs.

Bug: chromium:774108,v8:6792
Change-Id: I1bb1e47ebf16e55e63ed4bbd9ce9eb0c01e8b754
Reviewed-on: https://chromium-review.googlesource.com/735440
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48965}
parent c193584a
......@@ -605,16 +605,19 @@ CodeSpaceMemoryModificationScope::~CodeSpaceMemoryModificationScope() {
CodePageMemoryModificationScope::CodePageMemoryModificationScope(
MemoryChunk* chunk)
: chunk_(chunk) {
if (FLAG_write_protect_code_memory &&
: chunk_(chunk),
scope_active_(FLAG_write_protect_code_memory &&
chunk_->IsFlagSet(MemoryChunk::IS_EXECUTABLE)) {
if (scope_active_) {
DCHECK(chunk_->owner()->identity() == CODE_SPACE ||
(chunk_->owner()->identity() == LO_SPACE &&
chunk_->IsFlagSet(MemoryChunk::IS_EXECUTABLE)));
chunk_->SetReadAndWritable();
}
}
CodePageMemoryModificationScope::~CodePageMemoryModificationScope() {
if (FLAG_write_protect_code_memory &&
chunk_->IsFlagSet(MemoryChunk::IS_EXECUTABLE)) {
if (scope_active_) {
chunk_->SetReadAndExecutable();
}
}
......
......@@ -1915,7 +1915,6 @@ void Heap::Scavenge() {
}
{
CodeSpaceMemoryModificationScope code_modification(this);
MarkCompactCollector::Sweeper* sweeper =
&mark_compact_collector()->sweeper();
// Pause the concurrent sweeper.
......
......@@ -2534,6 +2534,7 @@ class CodePageMemoryModificationScope {
private:
MemoryChunk* chunk_;
bool scope_active_;
};
// Visitor class to verify interior pointers in spaces that do not contain
......
......@@ -98,6 +98,7 @@ void Scavenger::AddPageToSweeperIfNecessary(MemoryChunk* page) {
void Scavenger::ScavengePage(MemoryChunk* page) {
PreferredSweepingPage(page);
CodePageMemoryModificationScope memory_modification_scope(page);
RememberedSet<OLD_TO_NEW>::Iterate(
page,
[this](Address addr) { return CheckAndScavengeObject(heap_, addr); },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment