Author: Greg Price <[email protected]>
Branch: 
Changeset: r62540:f442d5262c40
Date: 2013-03-19 19:46 -0700
http://bitbucket.org/pypy/pypy/changeset/f442d5262c40/

Log:    ll2ctypes: Avoid keeping 20G all allocated in far_regions

        This helps avoid scaring Linux about how much memory is committed,
        as we don't actually use close to all this memory.

diff --git a/rpython/rtyper/lltypesystem/ll2ctypes.py 
b/rpython/rtyper/lltypesystem/ll2ctypes.py
--- a/rpython/rtyper/lltypesystem/ll2ctypes.py
+++ b/rpython/rtyper/lltypesystem/ll2ctypes.py
@@ -84,12 +84,16 @@
     if not far_regions:
         from rpython.rlib import rmmap
         if _64BIT:
-            PIECESIZE = 0x80000000
+            PIECE_STRIDE = 0x80000000
         else:
             if _POSIX:
-                PIECESIZE = 0x10000000
+                PIECE_STRIDE = 0x10000000
             else:
-                PIECESIZE = 0x08000000
+                PIECE_STRIDE = 0x08000000
+        if _POSIX:
+            PIECE_SIZE = 0x04000000
+        else:
+            PIECE_SIZE = PIECE_STRIDE
         PIECES = 10
         flags = (0,)
         if _POSIX:
@@ -100,12 +104,16 @@
             # XXX seems not to work
         else:
             assert False  # should always generate flags
-        m = rmmap.mmap(-1, PIECES * PIECESIZE, *flags)
+
+        m = rmmap.mmap(-1, PIECES * PIECE_STRIDE, *flags)
         m.close = lambda : None    # leak instead of giving a spurious
                                    # error at CPython's shutdown
         m._ll2ctypes_pieces = []
         for i in range(PIECES):
-            m._ll2ctypes_pieces.append((i * PIECESIZE, (i+1) * PIECESIZE))
+            start = i * PIECE_STRIDE
+            m._ll2ctypes_pieces.append((start, start + PIECE_SIZE))
+            if _POSIX:
+                m.unmap_range(start + PIECE_SIZE, PIECE_STRIDE - PIECE_SIZE)
         far_regions = m
 
 # ____________________________________________________________
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to