[pypy-commit] pypy py3k: Redo 992e29624c5f, this time hopefully right -- it's a bit of a mess to call

arigo noreply at buildbot.pypy.org
Mon Feb 24 03:49:54 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: py3k
Changeset: r69326:f629c3ae62be
Date: 2014-02-22 08:07 +0100
http://bitbucket.org/pypy/pypy/changeset/f629c3ae62be/

Log:	Redo 992e29624c5f, this time hopefully right -- it's a bit of a mess
	to call c_mmap_safe() from two different points in translation
	(grafted from b771fb9117d277848fd63d41db349e53a635397a)

diff --git a/rpython/rlib/rmmap.py b/rpython/rlib/rmmap.py
--- a/rpython/rlib/rmmap.py
+++ b/rpython/rlib/rmmap.py
@@ -10,6 +10,7 @@
 from rpython.rtyper.lltypesystem import rffi, lltype
 from rpython.rlib import rposix
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
+from rpython.rlib.objectmodel import we_are_translated
 from rpython.rlib.nonconst import NonConstant
 from rpython.rlib.rarithmetic import intmask
 
@@ -675,14 +676,20 @@
         return m
 
     def alloc_hinted(hintp, map_size):
-        flags = NonConstant(MAP_PRIVATE | MAP_ANONYMOUS)
-        prot = NonConstant(PROT_EXEC | PROT_READ | PROT_WRITE)
+        flags = MAP_PRIVATE | MAP_ANONYMOUS
+        prot = PROT_EXEC | PROT_READ | PROT_WRITE
+        if we_are_translated():
+            flags = NonConstant(flags)
+            prot = NonConstant(prot)
         return c_mmap_safe(hintp, map_size, prot, flags, -1, 0)
 
     def clear_large_memory_chunk_aligned(addr, map_size):
         addr = rffi.cast(PTR, addr)
-        flags = NonConstant(MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS)
-        prot = NonConstant(PROT_READ | PROT_WRITE)
+        flags = MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
+        prot = PROT_READ | PROT_WRITE
+        if we_are_translated():
+            flags = NonConstant(flags)
+            prot = NonConstant(prot)
         res = c_mmap_safe(addr, map_size, prot, flags, -1, 0)
         return res == addr
 


More information about the pypy-commit mailing list