Reviewers: Mads Ager, Søren Gjesse,
Message:
After the initial change to randomize allocations we ended up committing
all the
memory from the allocation granularity boundary up to the requested base
address
plus the size. This change will keep sufficient randomization but avoid the
wasted memory.
Description:
Make randomized allocations along 64k granularity boundaries to avoid
comitting
unused memory.
BUG=56036
TEST=None.
Please review this at http://codereview.chromium.org/3849004/show
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/platform-win32.cc
Index: src/platform-win32.cc
===================================================================
--- src/platform-win32.cc (revision 5653)
+++ src/platform-win32.cc (working copy)
@@ -845,14 +845,15 @@
bool is_executable) {
// The address range used to randomize RWX allocations in OS::Allocate
// Try not to map pages into the default range that windows loads DLLs
+ // Use a multiple of 64k to prevent committing unused memory.
// Note: This does not guarantee RWX regions will be within the
// range kAllocationRandomAddressMin to kAllocationRandomAddressMax
#ifdef V8_HOST_ARCH_64_BIT
static const intptr_t kAllocationRandomAddressMin = 0x0000000080000000;
- static const intptr_t kAllocationRandomAddressMax = 0x000004FFFFFFFFFF;
+ static const intptr_t kAllocationRandomAddressMax = 0x000003FFFFFF0000;
#else
static const intptr_t kAllocationRandomAddressMin = 0x04000000;
- static const intptr_t kAllocationRandomAddressMax = 0x4FFFFFFF;
+ static const intptr_t kAllocationRandomAddressMax = 0x3FFF0000;
#endif
// VirtualAlloc rounds allocated size to page size automatically.
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev