Author: Remi Meier <[email protected]>
Branch: 
Changeset: r504:61deaab3f5f5
Date: 2013-08-30 15:33 +0200
http://bitbucket.org/pypy/stmgc/changeset/61deaab3f5f5/

Log:    in don't use zones when not _GC_MEMPROTECT

diff --git a/c4/dbgmem.c b/c4/dbgmem.c
--- a/c4/dbgmem.c
+++ b/c4/dbgmem.c
@@ -32,8 +32,9 @@
 void *stm_malloc(size_t sz)
 {
     size_t real_sz = sz + sizeof(size_t);
+
+#ifdef _GC_MEMPROTECT
     pthread_mutex_lock(&malloc_mutex);
-
     if (zone_current == NULL) {
         zone_start = mmap(NULL, MMAP_TOTAL, PROT_NONE,
                           MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
@@ -43,11 +44,8 @@
         zone_current = zone_start;
         zone_end = zone_start + MMAP_TOTAL;
         assert((MMAP_TOTAL % PAGE_SIZE) == 0);
-#ifdef _GC_MEMPROTECT
+
         _stm_dbgmem(zone_start, MMAP_TOTAL, PROT_NONE);
-#else
-        _stm_dbgmem(zone_start, MMAP_TOTAL, PROT_READ | PROT_WRITE);
-#endif
     }
 
     size_t nb_pages = (real_sz + PAGE_SIZE - 1) / PAGE_SIZE + 1;
@@ -61,16 +59,18 @@
 
     result += (-real_sz) & (PAGE_SIZE-1);
     assert(((intptr_t)(result + real_sz) & (PAGE_SIZE-1)) == 0);
-#ifdef _GC_MEMPROTECT
     _stm_dbgmem(result, real_sz, PROT_READ | PROT_WRITE);
-#endif
 
     long i, base = (result - zone_start) / PAGE_SIZE;
     for (i = 0; i < nb_pages; i++)
         accessible_pages[base + i] = 42;
 
+    assert(((intptr_t)(result + real_sz) & (PAGE_SIZE-1)) == 0);
+#else
+    char * result = malloc(real_sz);
+#endif
+
     dprintf(("stm_malloc(%zu): %p\n", sz, result));
-    assert(((intptr_t)(result + real_sz) & (PAGE_SIZE-1)) == 0);
     memset(result, 0xBB, real_sz);
     
     result += sizeof(size_t);
@@ -87,6 +87,8 @@
     void *real_p = p - sizeof(size_t);
     assert(real_sz > 0);
 
+    memset(real_p, 0xDD, real_sz);
+#ifdef _GC_MEMPROTECT
     assert(((intptr_t)((char *)real_p + real_sz) & (PAGE_SIZE-1)) == 0);
 
     size_t nb_pages = (real_sz + PAGE_SIZE - 1) / PAGE_SIZE + 1;
@@ -96,8 +98,7 @@
         assert(accessible_pages[base + i] == 42);
         accessible_pages[base + i] = -1;
     }
-    memset(real_p, 0xDD, real_sz);
-#ifdef _GC_MEMPROTECT
+
     _stm_dbgmem(real_p, real_sz, PROT_NONE);
 #endif
 }
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to