| Index: runtime/vm/virtual_memory_win.cc
|
| diff --git a/runtime/vm/virtual_memory_win.cc b/runtime/vm/virtual_memory_win.cc
|
| index 43a50c9bca591cc57489320f66210cc9feb8ba01..25846136a996007789204103b8fc3aba808b33ed 100644
|
| --- a/runtime/vm/virtual_memory_win.cc
|
| +++ b/runtime/vm/virtual_memory_win.cc
|
| @@ -35,20 +35,20 @@ VirtualMemory* VirtualMemory::ReserveInternal(intptr_t size) {
|
|
|
|
|
| VirtualMemory::~VirtualMemory() {
|
| - if (embedder_allocated()) {
|
| + if (embedder_allocated() || (reserved_size_ == 0)) {
|
| return;
|
| }
|
| if (VirtualFree(address(), 0, MEM_RELEASE) == 0) {
|
| - FATAL1("VirtualFree failed: Error code %d\n", GetLastError());
|
| + FATAL("VirtualFree failed");
|
| }
|
| }
|
|
|
|
|
| bool VirtualMemory::FreeSubSegment(void* address, intptr_t size) {
|
| - if (VirtualFree(address, size, MEM_DECOMMIT) == 0) {
|
| - FATAL1("VirtualFree failed: Error code %d\n", GetLastError());
|
| - }
|
| - return true;
|
| + // On Windows only the entire segment returned by VirtualAlloc
|
| + // can be freed. Therefore we will have to waste these unused
|
| + // virtual memory sub-segments.
|
| + return false;
|
| }
|
|
|
|
|
|
|