[pypy-commit] pypy default: completely unmerge mmap-for-arenas, it's not ready
fijal
pypy.commits at gmail.com
Thu Feb 8 08:22:03 EST 2018
Author: fijal
Branch:
Changeset: r93785:50125437a55e
Date: 2018-02-08 14:21 +0100
http://bitbucket.org/pypy/pypy/changeset/50125437a55e/
Log: completely unmerge mmap-for-arenas, it's not ready
diff --git a/rpython/memory/gc/minimarkpage.py b/rpython/memory/gc/minimarkpage.py
--- a/rpython/memory/gc/minimarkpage.py
+++ b/rpython/memory/gc/minimarkpage.py
@@ -9,8 +9,6 @@
WORD_POWER_2 = {32: 2, 64: 3}[LONG_BIT]
assert 1 << WORD_POWER_2 == WORD
-USE_MMAP = False
-
# Terminology: the memory is subdivided into "arenas" containing "pages".
# A page contains a number of allocated objects, called "blocks".
@@ -297,10 +295,7 @@
#
# 'arena_base' points to the start of malloced memory; it might not
# be a page-aligned address
- if USE_MMAP:
- arena_base = llarena.arena_mmap(self.arena_size)
- else:
- arena_base = llarena.arena_malloc(self.arena_size, False)
+ arena_base = llarena.arena_malloc(self.arena_size, False)
self.total_memory_alloced += self.arena_size
self.peak_memory_alloced = max(self.total_memory_alloced,
self.peak_memory_alloced)
@@ -410,11 +405,8 @@
if arena.nfreepages == arena.totalpages:
#
# The whole arena is empty. Free it.
- if USE_MMAP:
- llarena.arena_munmap(arena.base, self.arena_size)
- else:
- llarena.arena_reset(arena.base, self.arena_size, 4)
- llarena.arena_free(arena.base)
+ llarena.arena_reset(arena.base, self.arena_size, 4)
+ llarena.arena_free(arena.base)
self.total_memory_alloced -= self.arena_size
lltype.free(arena, flavor='raw', track_allocation=False)
self.arenas_count -= 1
diff --git a/rpython/rtyper/lltypesystem/llarena.py b/rpython/rtyper/lltypesystem/llarena.py
--- a/rpython/rtyper/lltypesystem/llarena.py
+++ b/rpython/rtyper/lltypesystem/llarena.py
@@ -327,18 +327,6 @@
assert not arena_addr.arena.objectptrs
arena_addr.arena.mark_freed()
-if os.name == 'posix':
- def arena_mmap(nbytes):
- """Allocate and return a new arena, zero-initialized by the
- system, calling mmap()."""
- return arena_malloc(nbytes, True)
-
- def arena_munmap(arena_addr, nbytes):
- """Release an arena allocated with arena_mmap()."""
- arena_free(arena_addr)
- assert nbytes == arena_addr.arena.nbytes
-
-
def arena_reset(arena_addr, size, zero):
"""Free all objects in the arena, which can then be reused.
This can also be used on a subrange of the arena.
@@ -541,32 +529,6 @@
llfakeimpl=arena_free,
sandboxsafe=True)
-if os.name == 'posix':
- def llimpl_arena_mmap(nbytes):
- from rpython.rlib import rmmap
- flags = rmmap.MAP_PRIVATE | rmmap.MAP_ANONYMOUS
- prot = rmmap.PROT_READ | rmmap.PROT_WRITE
- p = rffi.cast(llmemory.Address, rmmap.c_mmap_safe(
- lltype.nullptr(rmmap.PTR.TO), nbytes, prot, flags, -1, 0))
- if p == rffi.cast(llmemory.Address, -1):
- p = rffi.cast(llmemory.Address, 0)
- return p
- register_external(arena_mmap, [int], llmemory.Address,
- 'll_arena.arena_mmap',
- llimpl=llimpl_arena_mmap,
- llfakeimpl=arena_mmap,
- sandboxsafe=True)
-
- def llimpl_arena_munmap(arena_addr, nbytes):
- from rpython.rlib import rmmap
- assert nbytes >= 0
- rmmap.c_munmap_safe(rffi.cast(rmmap.PTR, arena_addr), nbytes)
- register_external(arena_munmap, [llmemory.Address, int], None,
- 'll_arena.arena_munmap',
- llimpl=llimpl_arena_munmap,
- llfakeimpl=arena_munmap,
- sandboxsafe=True)
-
def llimpl_arena_reset(arena_addr, size, zero):
if zero:
if zero == 1:
More information about the pypy-commit
mailing list