# HG changeset patch # User Martin v. Löwis # Date 1340298150 -7200 # Node ID eccc7af4bec749a751a6ad49f37ddf6dd6abefff # Parent 890d5c8dc59ff6aba12fe315dc0cdf568d2f3786 [mq]: 2012-06-21_19-02-08_r77536+.diff diff -r 890d5c8dc59f -r eccc7af4bec7 Objects/obmalloc.c --- a/Objects/obmalloc.c Thu Jun 21 17:26:28 2012 +0200 +++ b/Objects/obmalloc.c Thu Jun 21 19:02:30 2012 +0200 @@ -9,6 +9,10 @@ #endif #endif +#ifdef MS_WINDOWS +#include +#endif + #ifdef WITH_VALGRIND #include @@ -594,7 +598,11 @@ arenaobj = unused_arena_objects; unused_arena_objects = arenaobj->nextarena; assert(arenaobj->address == 0); -#ifdef ARENAS_USE_MMAP +#ifdef MS_WINDOWS + address = (void*)VirtualAlloc(NULL, ARENA_SIZE, + MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + err = (address == NULL); +#elif defined(ARENAS_USE_MMAP) address = mmap(NULL, ARENA_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); err = (address == MAP_FAILED); @@ -1079,7 +1087,9 @@ unused_arena_objects = ao; /* Free the entire arena. */ -#ifdef ARENAS_USE_MMAP +#ifdef MS_WINDOWS + VirtualFree((void *)ao->address, 0, MEM_RELEASE); +#elif defined(ARENAS_USE_MMAP) munmap((void *)ao->address, ARENA_SIZE); #else free((void *)ao->address);