Index: runtime/vm/pages.cc |
diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc |
index 4fb4efbc83e487722bfd602fd5329815239bbc77..07a9e5ce59fc42d9bba78dbdb1853532fc86999b 100644 |
--- a/runtime/vm/pages.cc |
+++ b/runtime/vm/pages.cc |
@@ -139,6 +139,8 @@ RawObject* HeapPage::FindObject(FindObjectVisitor* visitor) const { |
void HeapPage::WriteProtect(bool read_only) { |
+ ASSERT(!embedder_allocated()); |
+ |
VirtualMemory::Protection prot; |
if (read_only) { |
if (type_ == kExecutable) { |
@@ -1100,7 +1102,13 @@ void PageSpace::SetupExternalPage(void* pointer, |
if (*first == NULL) { |
*first = page; |
} else { |
+ if (is_executable && FLAG_write_protect_code) { |
+ (*tail)->WriteProtect(false); |
+ } |
(*tail)->set_next(page); |
+ if (is_executable && FLAG_write_protect_code) { |
+ (*tail)->WriteProtect(true); |
+ } |
} |
(*tail) = page; |
} |