Index: src/spaces.h |
diff --git a/src/spaces.h b/src/spaces.h |
index 1ccdacbc02e32eecd93c72a96d5edaf4a8d868dd..e0ffe0e181afbb967210823281907ca07b362eda 100644 |
--- a/src/spaces.h |
+++ b/src/spaces.h |
@@ -33,6 +33,7 @@ |
#include "list.h" |
#include "log.h" |
#include "platform/mutex.h" |
+#include "platform/virtual-memory.h" |
#include "v8utils.h" |
namespace v8 { |
@@ -573,8 +574,10 @@ class MemoryChunk { |
area_end_ = area_end; |
} |
- Executability executable() { |
- return IsFlagSet(IS_EXECUTABLE) ? EXECUTABLE : NOT_EXECUTABLE; |
+ VirtualMemory::Executability executability() { |
+ return IsFlagSet(IS_EXECUTABLE) |
+ ? VirtualMemory::EXECUTABLE |
+ : VirtualMemory::NOT_EXECUTABLE; |
} |
bool ContainsOnlyData() { |
@@ -716,7 +719,7 @@ class MemoryChunk { |
size_t size, |
Address area_start, |
Address area_end, |
- Executability executable, |
+ VirtualMemory::Executability executability, |
Space* owner); |
friend class MemoryAllocator; |
@@ -796,7 +799,7 @@ class Page : public MemoryChunk { |
static inline Page* Initialize(Heap* heap, |
MemoryChunk* chunk, |
- Executability executable, |
+ VirtualMemory::Executability executable, |
PagedSpace* owner); |
void InitializeAsAnchor(PagedSpace* owner); |
@@ -862,15 +865,17 @@ STATIC_CHECK(sizeof(LargePage) <= MemoryChunk::kHeaderSize); |
// Space is the abstract superclass for all allocation spaces. |
class Space : public Malloced { |
public: |
- Space(Heap* heap, AllocationSpace id, Executability executable) |
- : heap_(heap), id_(id), executable_(executable) {} |
+ Space(Heap* heap, |
+ AllocationSpace id, |
+ VirtualMemory::Executability executability) |
+ : heap_(heap), id_(id), executability_(executability) {} |
virtual ~Space() {} |
Heap* heap() const { return heap_; } |
// Does the space need executable memory? |
- Executability executable() { return executable_; } |
+ VirtualMemory::Executability executability() { return executability_; } |
// Identity used in error reporting. |
AllocationSpace identity() { return id_; } |
@@ -897,7 +902,7 @@ class Space : public Malloced { |
private: |
Heap* heap_; |
AllocationSpace id_; |
- Executability executable_; |
+ VirtualMemory::Executability executability_; |
}; |
@@ -1055,11 +1060,13 @@ class MemoryAllocator { |
void TearDown(); |
- Page* AllocatePage( |
- intptr_t size, PagedSpace* owner, Executability executable); |
+ Page* AllocatePage(intptr_t size, |
+ PagedSpace* owner, |
+ VirtualMemory::Executability executability); |
- LargePage* AllocateLargePage( |
- intptr_t object_size, Space* owner, Executability executable); |
+ LargePage* AllocateLargePage(intptr_t object_size, |
+ Space* owner, |
+ VirtualMemory::Executability executability); |
void Free(MemoryChunk* chunk); |
@@ -1100,7 +1107,7 @@ class MemoryAllocator { |
// could be committed later by calling MemoryChunk::CommitArea. |
MemoryChunk* AllocateChunk(intptr_t reserve_area_size, |
intptr_t commit_area_size, |
- Executability executable, |
+ VirtualMemory::Executability executability, |
Space* space); |
Address ReserveAlignedMemory(size_t requested, |
@@ -1109,19 +1116,26 @@ class MemoryAllocator { |
Address AllocateAlignedMemory(size_t reserve_size, |
size_t commit_size, |
size_t alignment, |
- Executability executable, |
+ VirtualMemory::Executability executability, |
VirtualMemory* controller); |
- bool CommitMemory(Address addr, size_t size, Executability executable); |
+ bool CommitMemory(Address addr, |
+ size_t size, |
+ VirtualMemory::Executability executability); |
- void FreeMemory(VirtualMemory* reservation, Executability executable); |
- void FreeMemory(Address addr, size_t size, Executability executable); |
+ void FreeMemory(VirtualMemory* reservation, |
+ VirtualMemory::Executability executability); |
+ void FreeMemory(Address addr, |
+ size_t size, |
+ VirtualMemory::Executability executability); |
// Commit a contiguous block of memory from the initial chunk. Assumes that |
// the address is not NULL, the size is greater than zero, and that the |
// block is contained in the initial chunk. Returns true if it succeeded |
// and false otherwise. |
- bool CommitBlock(Address start, size_t size, Executability executable); |
+ bool CommitBlock(Address start, |
+ size_t size, |
+ VirtualMemory::Executability executability); |
// Uncommit a contiguous block of memory [start..(start+size)[. |
// start is not NULL, the size is greater than zero, and the |
@@ -1612,7 +1626,7 @@ class PagedSpace : public Space { |
PagedSpace(Heap* heap, |
intptr_t max_capacity, |
AllocationSpace id, |
- Executability executable); |
+ VirtualMemory::Executability executability); |
virtual ~PagedSpace() {} |
@@ -2037,7 +2051,7 @@ class SemiSpace : public Space { |
public: |
// Constructor. |
SemiSpace(Heap* heap, SemiSpaceId semispace) |
- : Space(heap, NEW_SPACE, NOT_EXECUTABLE), |
+ : Space(heap, NEW_SPACE, VirtualMemory::NOT_EXECUTABLE), |
start_(NULL), |
age_mark_(NULL), |
id_(semispace), |
@@ -2290,7 +2304,7 @@ class NewSpace : public Space { |
public: |
// Constructor. |
explicit NewSpace(Heap* heap) |
- : Space(heap, NEW_SPACE, NOT_EXECUTABLE), |
+ : Space(heap, NEW_SPACE, VirtualMemory::NOT_EXECUTABLE), |
to_space_(heap, kToSpace), |
from_space_(heap, kFromSpace), |
reservation_(), |
@@ -2555,8 +2569,8 @@ class OldSpace : public PagedSpace { |
OldSpace(Heap* heap, |
intptr_t max_capacity, |
AllocationSpace id, |
- Executability executable) |
- : PagedSpace(heap, max_capacity, id, executable) { |
+ VirtualMemory::Executability executability) |
+ : PagedSpace(heap, max_capacity, id, executability) { |
page_extra_ = 0; |
} |
@@ -2587,7 +2601,7 @@ class FixedSpace : public PagedSpace { |
intptr_t max_capacity, |
AllocationSpace id, |
int object_size_in_bytes) |
- : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE), |
+ : PagedSpace(heap, max_capacity, id, VirtualMemory::NOT_EXECUTABLE), |
object_size_in_bytes_(object_size_in_bytes) { |
page_extra_ = Page::kNonCodeObjectAreaSize % object_size_in_bytes; |
} |
@@ -2727,8 +2741,8 @@ class LargeObjectSpace : public Space { |
// Shared implementation of AllocateRaw, AllocateRawCode and |
// AllocateRawFixedArray. |
- MUST_USE_RESULT MaybeObject* AllocateRaw(int object_size, |
- Executability executable); |
+ MUST_USE_RESULT MaybeObject* AllocateRaw( |
+ int object_size, VirtualMemory::Executability executability); |
// Available bytes for objects in this space. |
inline intptr_t Available(); |