| Index: src/platform-solaris.cc
|
| ===================================================================
|
| --- src/platform-solaris.cc (revision 10867)
|
| +++ src/platform-solaris.cc (working copy)
|
| @@ -342,11 +342,34 @@
|
| }
|
|
|
|
|
| -bool VirtualMemory::Commit(void* address, size_t size, bool executable) {
|
| - int prot = PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0);
|
| - if (MAP_FAILED == mmap(address, size, prot,
|
| - MAP_PRIVATE | MAP_ANON | MAP_FIXED,
|
| - kMmapFd, kMmapFdOffset)) {
|
| +bool VirtualMemory::Guard(void* address) {
|
| + OS::Guard(address, OS::CommitPageSize());
|
| + return true;
|
| +}
|
| +
|
| +
|
| +void* VirtualMemory::ReserveRegion(size_t size) {
|
| + void* result = mmap(OS::GetRandomMmapAddr(),
|
| + size,
|
| + PROT_NONE,
|
| + MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE,
|
| + kMmapFd,
|
| + kMmapFdOffset);
|
| +
|
| + if (result == MAP_FAILED) return NULL;
|
| +
|
| + return result;
|
| +}
|
| +
|
| +
|
| +bool VirtualMemory::CommitRegion(void* base, size_t size, bool is_executable) {
|
| + int prot = PROT_READ | PROT_WRITE | (is_executable ? PROT_EXEC : 0);
|
| + if (MAP_FAILED == mmap(base,
|
| + size,
|
| + prot,
|
| + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED,
|
| + kMmapFd,
|
| + kMmapFdOffset)) {
|
| return false;
|
| }
|
|
|
|
|