summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-08-30 11:33:43 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-31 14:15:48 +0200
commit3958828af8ee5cc046c664d8d8e483314eac06cb (patch)
tree045455459ee296c24181bc5d4941c63001528a59
parente49f760da4b42c96e9fd927ab8b7a5d0808dc5a3 (diff)
downloadqtjsbackend-3958828af8ee5cc046c664d8d8e483314eac06cb.tar.gz
[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: Ic05c8a017afbd09afb8efebe52f26ca45d11c41a Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Tobias Koenig Reviewed-by: Kent Hansen <kent.hansen@nokia.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 15d0a8b..bf9f5ba 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;
}