Author: Armin Rigo <[email protected]>
Branch: c7-refactor
Changeset: r718:3b6d316ef539
Date: 2014-02-10 16:38 +0100
http://bitbucket.org/pypy/stmgc/changeset/3b6d316ef539/

Log:    Rename "region" -> "segment".

diff --git a/c7/stm/core.h b/c7/stm/core.h
--- a/c7/stm/core.h
+++ b/c7/stm/core.h
@@ -7,7 +7,7 @@
 
 
 #define NB_PAGES            (1500*256)    // 1500MB
-#define NB_REGIONS          2
+#define NB_SEGMENTS         2
 #define MAP_PAGES_FLAGS     (MAP_SHARED | MAP_ANONYMOUS | MAP_NORESERVE)
 #define LARGE_OBJECT_WORDS  36
 #define NB_NURSERY_PAGES    1024          // 4MB
@@ -15,7 +15,7 @@
 #define NURSERY_SECTION_SIZE  (24*4096)
 
 
-#define TOTAL_MEMORY          (NB_PAGES * 4096UL * NB_REGIONS)
+#define TOTAL_MEMORY          (NB_PAGES * 4096UL * NB_SEGMENTS)
 #define READMARKER_END        ((NB_PAGES * 4096UL) >> 4)
 #define FIRST_OBJECT_PAGE     ((READMARKER_END + 4095) / 4096UL)
 #define FIRST_NURSERY_PAGE    FIRST_OBJECT_PAGE
@@ -42,30 +42,32 @@
 };
 
 
-#define STM_PREGION          ((stm_priv_region_info_t *)STM_REGION)
+#define STM_PSEGMENT          ((stm_priv_segment_info_t *)STM_SEGMENT)
 
-typedef TLPREFIX struct stm_priv_region_info_s stm_priv_region_info_t;
+typedef TLPREFIX struct stm_priv_segment_info_s stm_priv_segment_info_t;
 
-struct stm_priv_region_info_s {
-    struct stm_region_info_s pub;
+struct stm_priv_segment_info_s {
+    struct stm_segment_info_s pub;
 };
 
 static char *stm_object_pages;
 static stm_thread_local_t *stm_thread_locals = NULL;
 
 
-#define REAL_ADDRESS(region_base, src)   ((region_base) + (uintptr_t)(src))
+#define REAL_ADDRESS(segment_base, src)   ((segment_base) + (uintptr_t)(src))
 
-static inline char *get_region_base(long region_num) {
-    return stm_object_pages + region_num * (NB_PAGES * 4096UL);
+static inline char *get_segment_base(long segment_num) {
+    return stm_object_pages + segment_num * (NB_PAGES * 4096UL);
 }
 
-static inline struct stm_region_info_s *get_region(long region_num) {
-    return (struct stm_region_info_s *)REAL_ADDRESS(
-        get_region_base(region_num), STM_PREGION);
+static inline
+struct stm_segment_info_s *get_segment(long segment_num) {
+    return (struct stm_segment_info_s *)REAL_ADDRESS(
+        get_segment_base(segment_num), STM_PSEGMENT);
 }
 
-static inline struct stm_priv_region_info_s *get_priv_region(long region_num) {
-    return (struct stm_priv_region_info_s *)REAL_ADDRESS(
-        get_region_base(region_num), STM_PREGION);
+static inline
+struct stm_priv_segment_info_s *get_priv_segment(long segment_num) {
+    return (struct stm_priv_segment_info_s *)REAL_ADDRESS(
+        get_segment_base(segment_num), STM_PSEGMENT);
 }
diff --git a/c7/stm/misc.c b/c7/stm/misc.c
--- a/c7/stm/misc.c
+++ b/c7/stm/misc.c
@@ -10,15 +10,15 @@
 
     assert(FIRST_OBJECT_PAGE * 4096UL <= (uintptr_t)o
            && (uintptr_t)o < NB_PAGES * 4096UL);
-    return REAL_ADDRESS(STM_REGION->region_base, o);
+    return REAL_ADDRESS(STM_SEGMENT->segment_base, o);
 }
 
-object_t *_stm_region_address(char *ptr)
+object_t *_stm_segment_address(char *ptr)
 {
     if (ptr == NULL)
         return NULL;
 
-    uintptr_t res = ptr - STM_REGION->region_base;
+    uintptr_t res = ptr - STM_SEGMENT->segment_base;
     assert(FIRST_OBJECT_PAGE * 4096UL <= res
            && res < NB_PAGES * 4096UL);
     return (object_t*)res;
@@ -27,7 +27,7 @@
 bool _stm_was_read(object_t *obj)
 {
     return ((stm_read_marker_t *)(((uintptr_t)obj) >> 4))->rm ==
-        STM_REGION->transaction_read_version;
+        STM_SEGMENT->transaction_read_version;
 }
 
 bool _stm_was_written(object_t *obj)
diff --git a/c7/stm/pages.c b/c7/stm/pages.c
--- a/c7/stm/pages.c
+++ b/c7/stm/pages.c
@@ -7,11 +7,11 @@
 {
     /* call remap_file_pages() to make all pages in the
        range(pagenum, pagenum+count) refer to the same
-       physical range of pages from region 0 */
+       physical range of pages from segment 0 */
     long i;
-    for (i = 1; i < NB_REGIONS; i++) {
-        char *region_base = get_region_base(i);
-        int res = remap_file_pages(region_base + pagenum * 4096UL,
+    for (i = 1; i < NB_SEGMENTS; i++) {
+        char *segment_base = get_segment_base(i);
+        int res = remap_file_pages(segment_base + pagenum * 4096UL,
                                    count * 4096UL,
                                    0, pagenum, 0);
         if (res != 0) {
diff --git a/c7/stm/pages.h b/c7/stm/pages.h
--- a/c7/stm/pages.h
+++ b/c7/stm/pages.h
@@ -1,10 +1,10 @@
 
 enum {
-    /* The page is not in use.  Assume that each region sees its own copy. */
+    /* The page is not in use.  Assume that each segment sees its own copy. */
     FREE_PAGE=0,
 
-    /* The page is shared by all threads.  Each region sees the same
-       physical page (the one that is within the region 0 mmap address). */
+    /* The page is shared by all threads.  Each segment sees the same
+       physical page (the one that is within the segment 0 mmap address). */
     SHARED_PAGE,
 
     /* Page being in the process of privatization */
diff --git a/c7/stm/setup.c b/c7/stm/setup.c
--- a/c7/stm/setup.c
+++ b/c7/stm/setup.c
@@ -13,9 +13,9 @@
 #endif
 
     /* Check that some values are acceptable */
-    assert(4096 <= ((uintptr_t)STM_REGION));
-    assert((uintptr_t)STM_REGION == (uintptr_t)STM_PREGION);
-    assert(((uintptr_t)STM_PREGION) + sizeof(*STM_PREGION) <= 8192);
+    assert(4096 <= ((uintptr_t)STM_SEGMENT));
+    assert((uintptr_t)STM_SEGMENT == (uintptr_t)STM_PSEGMENT);
+    assert(((uintptr_t)STM_PSEGMENT) + sizeof(*STM_PSEGMENT) <= 8192);
     assert(2 <= FIRST_READMARKER_PAGE);
     assert(FIRST_READMARKER_PAGE * 4096UL <= READMARKER_START);
     assert(READMARKER_START < READMARKER_END);
@@ -31,27 +31,27 @@
     }
 
     long i;
-    for (i = 0; i < NB_REGIONS; i++) {
-        char *region_base = get_region_base(i);
+    for (i = 0; i < NB_SEGMENTS; i++) {
+        char *segment_base = get_segment_base(i);
 
-        /* In each region, the first page is where TLPREFIX'ed
+        /* In each segment, the first page is where TLPREFIX'ed
            NULL accesses land.  We mprotect it so that accesses fail. */
-        mprotect(region_base, 4096, PROT_NONE);
+        mprotect(segment_base, 4096, PROT_NONE);
 
         /* Fill the TLS page (page 1) with 0xDD, for debugging */
-        memset(REAL_ADDRESS(region_base, 4096), 0xDD, 4096);
-        /* Make a "hole" at STM_PREGION */
-        memset(REAL_ADDRESS(region_base, STM_PREGION), 0,
-               sizeof(*STM_PREGION));
+        memset(REAL_ADDRESS(segment_base, 4096), 0xDD, 4096);
+        /* Make a "hole" at STM_PSEGMENT */
+        memset(REAL_ADDRESS(segment_base, STM_PSEGMENT), 0,
+               sizeof(*STM_PSEGMENT));
 
         /* Pages in range(2, FIRST_READMARKER_PAGE) are never used */
         if (FIRST_READMARKER_PAGE > 2)
-            mprotect(region_base + 8192, (FIRST_READMARKER_PAGE - 2) * 4096UL,
+            mprotect(segment_base + 8192, (FIRST_READMARKER_PAGE - 2) * 4096UL,
                      PROT_NONE);
 
-        struct stm_priv_region_info_s *pr = get_priv_region(i);
-        pr->pub.region_num = i;
-        pr->pub.region_base = region_base;
+        struct stm_priv_segment_info_s *pr = get_priv_segment(i);
+        pr->pub.segment_num = i;
+        pr->pub.segment_base = segment_base;
     }
 
     /* Make the nursery pages shared.  The other pages are
@@ -85,7 +85,7 @@
         stm_thread_locals->prev->next = tl;
         stm_thread_locals->prev = tl;
     }
-    tl->associated_region = get_region(0);
+    tl->associated_segment = get_segment(0);
 }
 
 void stm_unregister_thread_local(stm_thread_local_t *tl)
diff --git a/c7/stmgc.h b/c7/stmgc.h
--- a/c7/stmgc.h
+++ b/c7/stmgc.h
@@ -31,7 +31,7 @@
 #define TLPREFIX __attribute__((address_space(256)))
 
 typedef TLPREFIX struct object_s object_t;
-typedef TLPREFIX struct stm_region_info_s stm_region_info_t;
+typedef TLPREFIX struct stm_segment_info_s stm_segment_info_t;
 typedef TLPREFIX struct stm_read_marker_s stm_read_marker_t;
 typedef TLPREFIX char stm_char;
 typedef void* stm_jmpbuf_t[5];  /* for use with __builtin_setjmp() */
@@ -40,22 +40,22 @@
     uint8_t rm;
 };
 
-struct stm_region_info_s {
+struct stm_segment_info_s {
     uint8_t transaction_read_version;
-    int region_num;
-    char *region_base;
+    int segment_num;
+    char *segment_base;
     stm_char *nursery_current;
     uintptr_t nursery_section_end;
     struct stm_thread_local_s *running_thread;
     stm_jmpbuf_t *jmpbuf_ptr;
 };
-#define STM_REGION           ((stm_region_info_t *)4352)
+#define STM_SEGMENT           ((stm_segment_info_t *)4352)
 
 typedef struct stm_thread_local_s {
     /* every thread should handle the shadow stack itself */
     object_t **shadowstack, **shadowstack_base;
     /* the next fields are handled automatically by the library */
-    struct stm_region_info_s *associated_region;
+    struct stm_segment_info_s *associated_segment;
     struct stm_thread_local_s *prev, *next;
 } stm_thread_local_t;
 
@@ -70,7 +70,7 @@
 bool _stm_was_written(object_t *obj);
 bool _stm_in_nursery(object_t *obj);
 char *_stm_real_address(object_t *o);
-object_t *_stm_region_address(char *ptr);
+object_t *_stm_segment_address(char *ptr);
 #endif
 
 #define _STM_GCFLAG_WRITE_BARRIER  0x01
@@ -108,7 +108,7 @@
 static inline void stm_read(object_t *obj)
 {
     ((stm_read_marker_t *)(((uintptr_t)obj) >> 4))->rm =
-        STM_REGION->transaction_read_version;
+        STM_SEGMENT->transaction_read_version;
 }
 
 static inline void stm_write(object_t *obj)
@@ -128,10 +128,10 @@
     OPT_ASSERT(size_rounded_up >= 16);
     OPT_ASSERT((size_rounded_up & 7) == 0);
 
-    stm_char *p = STM_REGION->nursery_current;
+    stm_char *p = STM_SEGMENT->nursery_current;
     stm_char *end = p + size_rounded_up;
-    STM_REGION->nursery_current = end;
-    if (UNLIKELY((uintptr_t)end > STM_REGION->nursery_section_end))
+    STM_SEGMENT->nursery_current = end;
+    if (UNLIKELY((uintptr_t)end > STM_SEGMENT->nursery_section_end))
         p = _stm_allocate_slowpath(size_rounded_up);
     return (object_t *)p;
 }
@@ -155,7 +155,7 @@
 })
 
 static inline void stm_become_inevitable(char* msg) {
-    if (STM_REGION->jmpbuf_ptr != NULL)
+    if (STM_SEGMENT->jmpbuf_ptr != NULL)
         _stm_become_inevitable(msg);
 }
 
diff --git a/c7/test/support.py b/c7/test/support.py
--- a/c7/test/support.py
+++ b/c7/test/support.py
@@ -64,7 +64,7 @@
 void stm_become_inevitable(char* msg);
 bool _stm_in_nursery(object_t *obj);
 char *_stm_real_address(object_t *obj);
-object_t *_stm_region_address(char *ptr);
+object_t *_stm_segment_address(char *ptr);
 
 void _stm_start_safe_point(uint8_t);
 void _stm_stop_safe_point(uint8_t);
@@ -164,15 +164,15 @@
 
 bool _checked_stm_write(object_t *object) {
     stm_jmpbuf_t here;
-    stm_region_info_t *region = STM_REGION;
+    stm_segment_info_t *segment = STM_SEGMENT;
     if (__builtin_setjmp(here) == 0) { // returned directly
-        assert(region->jmpbuf_ptr == (stm_jmpbuf_t *)-1);
-        region->jmpbuf_ptr = &here;
+        assert(segment->jmpbuf_ptr == (stm_jmpbuf_t *)-1);
+        segment->jmpbuf_ptr = &here;
         stm_write(object);
-        region->jmpbuf_ptr = (stm_jmpbuf_t *)-1;
+        segment->jmpbuf_ptr = (stm_jmpbuf_t *)-1;
         return 0;
     }
-    region->jmpbuf_ptr = (stm_jmpbuf_t *)-1;
+    segment->jmpbuf_ptr = (stm_jmpbuf_t *)-1;
     return 1;
 }
 
@@ -338,8 +338,8 @@
 def stm_get_real_address(obj):
     return lib._stm_real_address(ffi.cast('object_t*', obj))
     
-def stm_get_region_address(ptr):
-    return int(ffi.cast('uintptr_t', lib._stm_region_address(ptr)))
+def stm_get_segment_address(ptr):
+    return int(ffi.cast('uintptr_t', lib._stm_segment_address(ptr)))
 
 def stm_read(o):
     lib.stm_read(o)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to