Reviewers: Toon Verwaest,
Message:
Hey Toon,
This is a followup fix for the VirtualMemory cleanup.
PTAL
-- Benedikt
Description:
Don't align size on allocation granularity for unaligned ReserveRegion
calls.
Also add additional ASSERTs to help tracking the flaky
test-alloc/CodeRange in Windows.
Please review this at https://codereview.chromium.org/23542027/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+6, -3 lines):
M src/platform/virtual-memory.cc
Index: src/platform/virtual-memory.cc
diff --git a/src/platform/virtual-memory.cc b/src/platform/virtual-memory.cc
index
7e535424fd7d17a43e1490d377d9d39d264c2488..f72bc9054c392daa7f5837daee76563eb81678fd
100644
--- a/src/platform/virtual-memory.cc
+++ b/src/platform/virtual-memory.cc
@@ -158,7 +158,7 @@ void* VirtualMemory::ReserveRegion(size_t size, size_t*
size_return) {
if (size < 64 * KB) {
size = 64 * KB;
}
- size = RoundUp(size, GetAllocationGranularity());
+ size = RoundUp(size, GetPageSize());
LPVOID address = NULL;
// Try and randomize the allocation address (up to three attempts).
for (unsigned attempts = 0; address == NULL && attempts < 3; ++attempts)
{
@@ -189,13 +189,14 @@ void* VirtualMemory::ReserveRegion(size_t size,
ASSERT_NE(NULL, size_return);
ASSERT(IsAligned(alignment, GetAllocationGranularity()));
- size_t reserved_size;
+ size_t reserved_size = RoundUp(size + alignment,
GetAllocationGranularity());
Address reserved_base = static_cast<Address>(
- ReserveRegion(size + alignment, &reserved_size));
+ ReserveRegion(reserved_size, &reserved_size));
if (reserved_base == NULL) {
return NULL;
}
ASSERT_LE(size, reserved_size);
+ ASSERT_LE(size + alignment, reserved_size);
ASSERT(IsAligned(reserved_size, GetPageSize()));
// Try reducing the size by freeing and then reallocating a specific
area.
@@ -218,6 +219,7 @@ void* VirtualMemory::ReserveRegion(size_t size,
}
// Resizing failed, just go with a bigger area.
+ ASSERT(IsAligned(reserved_size, GetAllocationGranularity()));
return ReserveRegion(reserved_size, size_return);
}
@@ -291,6 +293,7 @@ size_t VirtualMemory::GetAllocationGranularity() {
allocation_granularity = system_info.dwAllocationGranularity;
MemoryBarrier();
}
+ ASSERT_GE(allocation_granularity, GetPageSize());
return allocation_granularity;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.