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: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit