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

Reply via email to