summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-08-30 11:33:43 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-09 13:07:20 +0100
commit4b4b21c4b8c8feffc709ad58d3af0c9d2ec1a953 (patch)
tree148b8d83621fc5973471290a22c7867aa953e64f
parentccada9b87d7236355fd804628be9e250e1782306 (diff)
[V8] QNX: Fix reserving of memory
ReserveRegion() did allocate all memory, instead of just reserve it. Use MAP_LAZY to only reserve, but not commit memory. MAP_NORESERVE is not available on QNX. This is now the same mechanism also used in JSC's memory allocator on QNX. Change-Id: I3cbfb26c83d13f69a37874961ad9b98a0b3bb2c7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r--src/3rdparty/v8/src/platform-qnx.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/3rdparty/v8/src/platform-qnx.cc b/src/3rdparty/v8/src/platform-qnx.cc
index cec7dd9..4c36344 100644
--- a/src/3rdparty/v8/src/platform-qnx.cc
+++ b/src/3rdparty/v8/src/platform-qnx.cc
@@ -488,7 +488,7 @@ VirtualMemory::VirtualMemory(size_t size, size_t alignment)
void* reservation = mmap(OS::GetRandomMmapAddr(),
request_size,
PROT_NONE,
- MAP_PRIVATE | MAP_ANONYMOUS,
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_LAZY,
kMmapFd,
kMmapFdOffset);
if (reservation == MAP_FAILED) return;
@@ -560,7 +560,7 @@ void* VirtualMemory::ReserveRegion(size_t size) {
void* result = mmap(OS::GetRandomMmapAddr(),
size,
PROT_NONE,
- MAP_PRIVATE | MAP_ANONYMOUS,
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_LAZY,
kMmapFd,
kMmapFdOffset);
@@ -590,7 +590,7 @@ bool VirtualMemory::UncommitRegion(void* base, size_t size) {
return mmap(base,
size,
PROT_NONE,
- MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED,
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED | MAP_LAZY,
kMmapFd,
kMmapFdOffset) != MAP_FAILED;
}