Author: Armin Rigo <ar...@tunes.org> Branch: c8-gil-like Changeset: r1811:4a03c8a56068 Date: 2015-06-12 10:48 +0200 http://bitbucket.org/pypy/stmgc/changeset/4a03c8a56068/
Log: fix diff --git a/c8/demo/demo_random.c b/c8/demo/demo_random.c --- a/c8/demo/demo_random.c +++ b/c8/demo/demo_random.c @@ -9,6 +9,7 @@ #include "stmgc.h" #include "stm/fprintcolor.h" +#include "stm/fprintcolor.c" #define NUMTHREADS 2 #define STEPS_PER_THREAD 500 diff --git a/c8/stm/detach.c b/c8/stm/detach.c --- a/c8/stm/detach.c +++ b/c8/stm/detach.c @@ -132,16 +132,17 @@ conditions. */ int mysegnum = STM_SEGMENT->segment_num; + bool sp_running = (STM_PSEGMENT->safe_point == SP_RUNNING); int segnum = ((stm_thread_local_t *)old)->last_associated_segment_num; dprintf(("commit_fetched_detached_transaction from seg %d\n", segnum)); assert(segnum > 0); if (segnum != mysegnum) { - s_mutex_lock(); - assert(STM_PSEGMENT->safe_point == SP_RUNNING); - STM_PSEGMENT->safe_point = SP_COMMIT_OTHER_DETACHED; - s_mutex_unlock(); - + if (sp_running) { + s_mutex_lock(); + STM_PSEGMENT->safe_point = SP_COMMIT_OTHER_DETACHED; + s_mutex_unlock(); + } set_gs_register(get_segment_base(segnum)); } commit_external_inevitable_transaction(); @@ -149,10 +150,12 @@ if (segnum != mysegnum) { set_gs_register(get_segment_base(mysegnum)); - s_mutex_lock(); - assert(STM_PSEGMENT->safe_point == SP_COMMIT_OTHER_DETACHED); - STM_PSEGMENT->safe_point = SP_RUNNING; - s_mutex_unlock(); + if (sp_running) { + s_mutex_lock(); + assert(STM_PSEGMENT->safe_point == SP_COMMIT_OTHER_DETACHED); + STM_PSEGMENT->safe_point = SP_RUNNING; + s_mutex_unlock(); + } } } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit