[pypy-commit] pypy mmap-for-arenas: Translation fix

arigo pypy.commits at gmail.com
Mon Dec 18 16:17:25 EST 2017


Author: Armin Rigo <arigo at tunes.org>
Branch: mmap-for-arenas
Changeset: r93481:685824de07b4
Date: 2017-12-18 21:52 +0100
http://bitbucket.org/pypy/pypy/changeset/685824de07b4/

Log:	Translation fix

diff --git a/rpython/rlib/rmmap.py b/rpython/rlib/rmmap.py
--- a/rpython/rlib/rmmap.py
+++ b/rpython/rlib/rmmap.py
@@ -808,6 +808,9 @@
     def arena_mmap(nbytes):
         flags = MAP_PRIVATE | MAP_ANONYMOUS
         prot = PROT_READ | PROT_WRITE
+        if we_are_translated():
+            flags = NonConstant(flags)
+            prot = NonConstant(prot)
         p = c_mmap_safe(lltype.nullptr(PTR.TO), nbytes, prot, flags, -1, 0)
         if p == rffi.cast(PTR, -1):
             p = rffi.cast(PTR, 0)
@@ -955,8 +958,12 @@
         case of a sandboxed process
         """
         null = lltype.nullptr(rffi.VOIDP.TO)
-        res = VirtualAlloc_safe(null, map_size, MEM_COMMIT | MEM_RESERVE,
-                           PAGE_EXECUTE_READWRITE)
+        alloctype = MEM_COMMIT | MEM_RESERVE
+        protect = PAGE_EXECUTE_READWRITE
+        if we_are_translated():
+            alloctype = NonConstant(alloctype)
+            protect = NonConstant(protect)
+        res = VirtualAlloc_safe(null, map_size, alloctype, protect)
         if not res:
             raise MemoryError
         arg = lltype.malloc(LPDWORD.TO, 1, zero=True, flavor='raw')
@@ -980,8 +987,12 @@
 
     def arena_mmap(nbytes):
         null = lltype.nullptr(rffi.VOIDP.TO)
-        res = VirtualAlloc_safe(null, nbytes, MEM_COMMIT | MEM_RESERVE,
-                                PAGE_READWRITE)
+        alloctype = MEM_COMMIT | MEM_RESERVE
+        protect = PAGE_READWRITE
+        if we_are_translated():
+            alloctype = NonConstant(alloctype)
+            protect = NonConstant(protect)
+        res = VirtualAlloc_safe(null, nbytes, alloctype, protect)
         return rffi.cast(PTR, res)
 
     def arena_munmap(arena_ptr, nbytes):


More information about the pypy-commit mailing list