Index: src/spaces-inl.h |
diff --git a/src/spaces-inl.h b/src/spaces-inl.h |
index 37002e68801b2928558b3533adc72e484d29120f..be2ae2a57db248234ab9f92726beec0168a49709 100644 |
--- a/src/spaces-inl.h |
+++ b/src/spaces-inl.h |
@@ -125,11 +125,43 @@ HeapObject* HeapObjectIterator::FromCurrentPage() { |
} |
+// ----------------------------------------------------------------------------- |
+// MemoryAllocator |
+ |
+#ifdef ENABLE_HEAP_PROTECTION |
+ |
+void MemoryAllocator::Protect(Address start, size_t size) { |
+ OS::Protect(start, size); |
+} |
+ |
+ |
+void MemoryAllocator::Unprotect(Address start, |
+ size_t size, |
+ Executability executable) { |
+ OS::Unprotect(start, size, executable); |
+} |
+ |
+ |
+void MemoryAllocator::ProtectChunkFromPage(Page* page) { |
+ int id = GetChunkId(page); |
+ OS::Protect(chunks_[id].address(), chunks_[id].size()); |
+} |
+ |
+ |
+void MemoryAllocator::UnprotectChunkFromPage(Page* page) { |
+ int id = GetChunkId(page); |
+ OS::Unprotect(chunks_[id].address(), chunks_[id].size(), |
+ chunks_[id].owner()->executable() == EXECUTABLE); |
+} |
+ |
+#endif |
+ |
+ |
// -------------------------------------------------------------------------- |
// PagedSpace |
Page* Page::Initialize(Heap* heap, |
MemoryChunk* chunk, |
- VirtualMemory::Executability executability, |
+ Executability executable, |
PagedSpace* owner) { |
Page* page = reinterpret_cast<Page*>(chunk); |
ASSERT(page->area_size() <= kNonCodeObjectAreaSize); |