| 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;
|
| }
|
|
|