Commit b60579b5 authored by Charles-François Natali's avatar Charles-François Natali

Merge.

parents 49c9dfa6 77ffd46c
...@@ -540,6 +540,8 @@ new_arena(void) ...@@ -540,6 +540,8 @@ new_arena(void)
{ {
struct arena_object* arenaobj; struct arena_object* arenaobj;
uint excess; /* number of bytes above pool alignment */ uint excess; /* number of bytes above pool alignment */
void *address;
int err;
#ifdef PYMALLOC_DEBUG #ifdef PYMALLOC_DEBUG
if (Py_GETENV("PYTHONMALLOCSTATS")) if (Py_GETENV("PYTHONMALLOCSTATS"))
...@@ -593,12 +595,14 @@ new_arena(void) ...@@ -593,12 +595,14 @@ new_arena(void)
unused_arena_objects = arenaobj->nextarena; unused_arena_objects = arenaobj->nextarena;
assert(arenaobj->address == 0); assert(arenaobj->address == 0);
#ifdef ARENAS_USE_MMAP #ifdef ARENAS_USE_MMAP
arenaobj->address = (uptr)mmap(NULL, ARENA_SIZE, PROT_READ|PROT_WRITE, address = mmap(NULL, ARENA_SIZE, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
err = (address == MAP_FAILED);
#else #else
arenaobj->address = (uptr)malloc(ARENA_SIZE); address = malloc(ARENA_SIZE);
err = (address == 0);
#endif #endif
if (arenaobj->address == 0) { if (err) {
/* The allocation failed: return NULL after putting the /* The allocation failed: return NULL after putting the
* arenaobj back. * arenaobj back.
*/ */
...@@ -606,6 +610,7 @@ new_arena(void) ...@@ -606,6 +610,7 @@ new_arena(void)
unused_arena_objects = arenaobj; unused_arena_objects = arenaobj;
return NULL; return NULL;
} }
arenaobj->address = (uptr)address;
++narenas_currently_allocated; ++narenas_currently_allocated;
#ifdef PYMALLOC_DEBUG #ifdef PYMALLOC_DEBUG
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment