Author: Armin Rigo <ar...@tunes.org> Branch: stmgc-c7 Changeset: r76451:cc6db35b39d6 Date: 2015-03-18 10:08 +0100 http://bitbucket.org/pypy/pypy/changeset/cc6db35b39d6/
Log: Insert a call to stm_wait_for_current_inevitable_transaction() diff --git a/rpython/translator/stm/src_stm/stmgcintf.c b/rpython/translator/stm/src_stm/stmgcintf.c --- a/rpython/translator/stm/src_stm/stmgcintf.c +++ b/rpython/translator/stm/src_stm/stmgcintf.c @@ -167,7 +167,7 @@ pypy_stm_nursery_low_fill_mark = _stm_nursery_start + limit; } -long _pypy_stm_start_transaction(void) +void _pypy_stm_start_transaction(void) { pypy_stm_nursery_low_fill_mark = 1; /* will be set to a correct value below */ long counter = stm_start_transaction(&stm_thread_local); @@ -175,8 +175,14 @@ _pypy_stm_initialize_nursery_low_fill_mark(counter); pypy_stm_ready_atomic = 1; /* reset after abort */ +} - return counter; +void _pypy_stm_start_transaction_save_errno_wait_inev(void) +{ + int e = errno; + stm_wait_for_current_inevitable_transaction(); + _pypy_stm_start_transaction(); + errno = e; } void pypy_stm_transaction_break(void) diff --git a/rpython/translator/stm/src_stm/stmgcintf.h b/rpython/translator/stm/src_stm/stmgcintf.h --- a/rpython/translator/stm/src_stm/stmgcintf.h +++ b/rpython/translator/stm/src_stm/stmgcintf.h @@ -26,7 +26,8 @@ void _pypy_stm_initialize_nursery_low_fill_mark(long v_counter); void _pypy_stm_inev_state(void); -long _pypy_stm_start_transaction(void); +void _pypy_stm_start_transaction(void); +void _pypy_stm_start_transaction_save_errno_wait_inev(void); void _pypy_stm_become_inevitable(const char *); @@ -57,11 +58,8 @@ errno = e; } static inline void pypy_stm_start_if_not_atomic(void) { - if (pypy_stm_ready_atomic == 1) { - int e = errno; - _pypy_stm_start_transaction(); - errno = e; - } + if (pypy_stm_ready_atomic == 1) + _pypy_stm_start_transaction_save_errno_wait_inev(); } static inline void pypy_stm_start_inevitable_if_not_atomic(void) { if (pypy_stm_ready_atomic == 1) { _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit