Author: Remi Meier Branch: c7 Changeset: r696:2a59456815d8 Date: 2014-01-31 13:41 +0100 http://bitbucket.org/pypy/stmgc/changeset/2a59456815d8/
Log: add a teardown_pthread function to free the shadow stack diff --git a/c7/core.c b/c7/core.c --- a/c7/core.c +++ b/c7/core.c @@ -282,9 +282,6 @@ assert(stm_list_is_empty(_STM_TL->uncommitted_objects)); stm_list_free(_STM_TL->uncommitted_objects); - assert(_STM_TL->shadow_stack == _STM_TL->shadow_stack_base); - free(_STM_TL->shadow_stack); - assert(_STM_TL->old_objects_to_trace->count == 0); stm_list_free(_STM_TL->old_objects_to_trace); diff --git a/c7/core.h b/c7/core.h --- a/c7/core.h +++ b/c7/core.h @@ -213,6 +213,7 @@ void _stm_restore_local_state(int thread_num); void stm_teardown(void); +void stm_teardown_pthread(void); bool _stm_is_in_transaction(void); void _stm_assert_clean_tl(void); diff --git a/c7/stmsync.c b/c7/stmsync.c --- a/c7/stmsync.c +++ b/c7/stmsync.c @@ -153,6 +153,14 @@ } +void stm_teardown_pthread(void) +{ + free(pthread_tl->shadow_stack_base); + + free(pthread_tl); + pthread_tl = NULL; +} + diff --git a/duhton/demo/container_transaction.duh b/duhton/demo/container_transaction.duh --- a/duhton/demo/container_transaction.duh +++ b/duhton/demo/container_transaction.duh @@ -3,11 +3,11 @@ (defun g (thread n) (set c (+ (get c) 1)) - (if (> (get c) 200000) + (if (> (get c) 20000) (print (quote overflow) (get c)) - (if (< n 100000) + (if (< n 10000) (transaction f thread (+ n 1)) - (if (< (get c) 200000) + (if (< (get c) 20000) (print (quote not-enough)) (print (quote ok)))))) @@ -17,3 +17,4 @@ (transaction f (quote t1) 1) (transaction f (quote t2) 1) +(transaction f (quote t3) 1) diff --git a/duhton/demo/run_transactions.duh b/duhton/demo/run_transactions.duh --- a/duhton/demo/run_transactions.duh +++ b/duhton/demo/run_transactions.duh @@ -15,9 +15,9 @@ (transaction f (quote t1) 10000) (transaction f (quote t2) 20000) -(transaction f (quote t2) 10002) +(transaction f (quote t3) 10002) (run-transactions) -(transaction f (quote t2) 15) +(transaction f (quote t1) 15) (transaction f (quote t2) 15) (run-transactions) (print (quote result) (get c)) diff --git a/duhton/duhton.h b/duhton/duhton.h --- a/duhton/duhton.h +++ b/duhton/duhton.h @@ -10,7 +10,7 @@ #define STM 1 /* hackish removal of all read/write barriers. synchronization is up to the program */ -#define DEFAULT_NUM_THREADS 2 /* required by stm-c7 */ +#define DEFAULT_NUM_THREADS 2 struct DuObject_s { diff --git a/duhton/glob.c b/duhton/glob.c --- a/duhton/glob.c +++ b/duhton/glob.c @@ -770,8 +770,6 @@ void Du_Initialize(int num_threads) { - assert(num_threads == 2); - stm_setup(); stm_setup_pthread(); @@ -834,5 +832,6 @@ void Du_Finalize(void) { + stm_teardown_pthread(); stm_teardown(); } diff --git a/duhton/transaction.c b/duhton/transaction.c --- a/duhton/transaction.c +++ b/duhton/transaction.c @@ -198,5 +198,7 @@ } + stm_teardown_pthread(); + return NULL; } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit