[pypy-commit] pypy stmgc-c8-gcc: import stmgc
Raemi
noreply at buildbot.pypy.org
Wed Jul 29 17:22:54 CEST 2015
Author: Remi Meier <remi.meier at inf.ethz.ch>
Branch: stmgc-c8-gcc
Changeset: r78713:3a55d30d7fe8
Date: 2015-07-29 17:23 +0200
http://bitbucket.org/pypy/pypy/changeset/3a55d30d7fe8/
Log: import stmgc
diff --git a/rpython/translator/stm/src_stm/revision b/rpython/translator/stm/src_stm/revision
--- a/rpython/translator/stm/src_stm/revision
+++ b/rpython/translator/stm/src_stm/revision
@@ -1,1 +1,1 @@
-cff6245b0bb4
+6666c6fd1aad
diff --git a/rpython/translator/stm/src_stm/stm/core.c b/rpython/translator/stm/src_stm/stm/core.c
--- a/rpython/translator/stm/src_stm/stm/core.c
+++ b/rpython/translator/stm/src_stm/stm/core.c
@@ -119,6 +119,7 @@
dprintf(("copy_bk_objs_in_page_from(%d, %ld, %d)\n",
from_segnum, (long)pagenum, only_if_not_modified));
+ assert(modification_lock_check_rdlock(from_segnum));
struct list_s *list = get_priv_segment(from_segnum)->modified_old_objects;
struct stm_undo_s *undo = (struct stm_undo_s *)list->items;
struct stm_undo_s *end = (struct stm_undo_s *)(list->items + list->count);
diff --git a/rpython/translator/stm/src_stm/stm/hashtable.c b/rpython/translator/stm/src_stm/stm/hashtable.c
--- a/rpython/translator/stm/src_stm/stm/hashtable.c
+++ b/rpython/translator/stm/src_stm/stm/hashtable.c
@@ -379,11 +379,13 @@
will make the other transaction check that it didn't
do any stm_hashtable_list() on the complete hashtable.
*/
+ acquire_modification_lock_wr(STM_SEGMENT->segment_num);
STM_PSEGMENT->modified_old_objects = list_append3(
STM_PSEGMENT->modified_old_objects,
TYPE_POSITION_MARKER, /* type1 */
TYPE_MODIFIED_HASHTABLE, /* type2 */
(uintptr_t)hobj); /* modif_hashtable */
+ release_modification_lock_wr(STM_SEGMENT->segment_num);
}
}
entry->object = nvalue;
diff --git a/rpython/translator/stm/src_stm/stm/marker.c b/rpython/translator/stm/src_stm/stm/marker.c
--- a/rpython/translator/stm/src_stm/stm/marker.c
+++ b/rpython/translator/stm/src_stm/stm/marker.c
@@ -73,12 +73,14 @@
/* -2 is not odd */
assert(marker.odd_number != (uintptr_t)TYPE_MODIFIED_HASHTABLE);
+ acquire_modification_lock_wr(STM_SEGMENT->segment_num);
STM_PSEGMENT->position_markers_last = list_count(list);
STM_PSEGMENT->modified_old_objects = list_append3(
list,
TYPE_POSITION_MARKER, /* type */
marker.odd_number, /* marker_odd_number */
(uintptr_t)marker.object); /* marker_object */
+ release_modification_lock_wr(STM_SEGMENT->segment_num);
}
static void timing_write_read_contention(struct stm_undo_s *start,
More information about the pypy-commit
mailing list