Index: Source/wtf/TCSystemAlloc.cpp |
diff --git a/Source/wtf/TCSystemAlloc.cpp b/Source/wtf/TCSystemAlloc.cpp |
index 15ea93aea57b6e0d9d835ee5415cbb870d6b69ff..5964a25ac176f0f89e75f6852fdc38029bfd76c9 100644 |
--- a/Source/wtf/TCSystemAlloc.cpp |
+++ b/Source/wtf/TCSystemAlloc.cpp |
@@ -74,15 +74,10 @@ static size_t pagesize = 0; |
static bool use_mmap = true; |
#endif |
-#if HAVE(VIRTUALALLOC) |
-static bool use_VirtualAlloc = true; |
-#endif |
- |
// Flags to keep us from retrying allocators that failed. |
static bool devmem_failure = false; |
static bool sbrk_failure = false; |
static bool mmap_failure = false; |
-static bool VirtualAlloc_failure = false; |
static const int32_t FLAGS_malloc_devmem_start = 0; |
static const int32_t FLAGS_malloc_devmem_limit = 0; |
@@ -138,60 +133,6 @@ static void* TryMmap(size_t size, size_t *actual_size, size_t alignment) { |
#endif /* HAVE(MMAP) */ |
-#if HAVE(VIRTUALALLOC) |
- |
-static void* TryVirtualAlloc(size_t size, size_t *actual_size, size_t alignment) { |
- // Enforce page alignment |
- if (pagesize == 0) { |
- SYSTEM_INFO system_info; |
- GetSystemInfo(&system_info); |
- pagesize = system_info.dwPageSize; |
- } |
- |
- if (alignment < pagesize) alignment = pagesize; |
- size = ((size + alignment - 1) / alignment) * alignment; |
- |
- // could theoretically return the "extra" bytes here, but this |
- // is simple and correct. |
- if (actual_size) |
- *actual_size = size; |
- |
- // Ask for extra memory if alignment > pagesize |
- size_t extra = 0; |
- if (alignment > pagesize) { |
- extra = alignment - pagesize; |
- } |
- void* result = VirtualAlloc(NULL, size + extra, |
- MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN, |
- PAGE_READWRITE); |
- |
- if (result == NULL) { |
- VirtualAlloc_failure = true; |
- return NULL; |
- } |
- |
- // Adjust the return memory so it is aligned |
- uintptr_t ptr = reinterpret_cast<uintptr_t>(result); |
- size_t adjust = 0; |
- if ((ptr & (alignment - 1)) != 0) { |
- adjust = alignment - (ptr & (alignment - 1)); |
- } |
- |
- // Return the unused memory to the system - we'd like to release but the best we can do |
- // is decommit, since Windows only lets you free the whole allocation. |
- if (adjust > 0) { |
- VirtualFree(reinterpret_cast<void*>(ptr), adjust, MEM_DECOMMIT); |
- } |
- if (adjust < extra) { |
- VirtualFree(reinterpret_cast<void*>(ptr + adjust + size), extra-adjust, MEM_DECOMMIT); |
- } |
- |
- ptr += adjust; |
- return reinterpret_cast<void*>(ptr); |
-} |
- |
-#endif /* HAVE(MMAP) */ |
- |
void* TCMalloc_SystemAlloc(size_t size, size_t *actual_size, size_t alignment) { |
// Discard requests that overflow |
if (size + alignment < size) return NULL; |
@@ -212,18 +153,10 @@ void* TCMalloc_SystemAlloc(size_t size, size_t *actual_size, size_t alignment) { |
} |
#endif |
-#if HAVE(VIRTUALALLOC) |
- if (use_VirtualAlloc && !VirtualAlloc_failure) { |
- void* result = TryVirtualAlloc(size, actual_size, alignment); |
- if (result != NULL) return result; |
- } |
-#endif |
- |
// nothing worked - reset failure flags and try again |
devmem_failure = false; |
sbrk_failure = false; |
mmap_failure = false; |
- VirtualAlloc_failure = false; |
} |
return NULL; |
} |
@@ -293,32 +226,6 @@ void TCMalloc_SystemRelease(void* start, size_t length) |
ASSERT_UNUSED(newAddress, newAddress == start || newAddress == reinterpret_cast<void*>(MAP_FAILED)); |
} |
-#elif HAVE(VIRTUALALLOC) |
- |
-void TCMalloc_SystemRelease(void* start, size_t length) |
-{ |
- if (VirtualFree(start, length, MEM_DECOMMIT)) |
- return; |
- |
- // The decommit may fail if the memory region consists of allocations |
- // from more than one call to VirtualAlloc. In this case, fall back to |
- // using VirtualQuery to retrieve the allocation boundaries and decommit |
- // them each individually. |
- |
- char* ptr = static_cast<char*>(start); |
- char* end = ptr + length; |
- MEMORY_BASIC_INFORMATION info; |
- while (ptr < end) { |
- size_t resultSize = VirtualQuery(ptr, &info, sizeof(info)); |
- ASSERT_UNUSED(resultSize, resultSize == sizeof(info)); |
- |
- size_t decommitSize = min<size_t>(info.RegionSize, end - ptr); |
- BOOL success = VirtualFree(ptr, decommitSize, MEM_DECOMMIT); |
- ASSERT_UNUSED(success, success); |
- ptr += decommitSize; |
- } |
-} |
- |
#else |
// Platforms that don't support returning memory use an empty inline version of TCMalloc_SystemRelease |
@@ -333,32 +240,6 @@ void TCMalloc_SystemCommit(void* start, size_t length) |
while (madvise(start, length, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { } |
} |
-#elif HAVE(VIRTUALALLOC) |
- |
-void TCMalloc_SystemCommit(void* start, size_t length) |
-{ |
- if (VirtualAlloc(start, length, MEM_COMMIT, PAGE_READWRITE) == start) |
- return; |
- |
- // The commit may fail if the memory region consists of allocations |
- // from more than one call to VirtualAlloc. In this case, fall back to |
- // using VirtualQuery to retrieve the allocation boundaries and commit them |
- // each individually. |
- |
- char* ptr = static_cast<char*>(start); |
- char* end = ptr + length; |
- MEMORY_BASIC_INFORMATION info; |
- while (ptr < end) { |
- size_t resultSize = VirtualQuery(ptr, &info, sizeof(info)); |
- ASSERT_UNUSED(resultSize, resultSize == sizeof(info)); |
- |
- size_t commitSize = min<size_t>(info.RegionSize, end - ptr); |
- void* newAddress = VirtualAlloc(ptr, commitSize, MEM_COMMIT, PAGE_READWRITE); |
- ASSERT_UNUSED(newAddress, newAddress == ptr); |
- ptr += commitSize; |
- } |
-} |
- |
#else |
// Platforms that don't need to explicitly commit memory use an empty inline version of TCMalloc_SystemCommit |