From: David S. W. <dw...@us...> - 2005-07-21 16:51:32
|
Update of /cvsroot/xsb/XSB/emu In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32449 Modified Files: deadlock.c slginsts_xsb_i.h Log Message: slginsts_xsb_i.h had a mt variable (grabbed) used in non-mt code. I readjusted the conditional code to hide all "grabbed" uses from non-mt code. For deadlock.c, I included xsb_config.h first so MULTI_THREAD is defined if it's going to be... Index: deadlock.c =================================================================== RCS file: /cvsroot/xsb/XSB/emu/deadlock.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- deadlock.c 21 Jul 2005 10:46:35 -0000 1.2 +++ deadlock.c 21 Jul 2005 16:51:03 -0000 1.3 @@ -1,3 +1,7 @@ +#include "xsb_config.h" + +#ifdef MULTI_THREAD + #include "context.h" #include "basicdefs.h" #include "choice.h" @@ -10,8 +14,6 @@ #include "thread_xsb.h" #include "trie_internals.h" -#ifdef MULTI_THREAD - int would_deadlock( th_context *t1, th_context *t2 ) { th_context * t = t1 ; Index: slginsts_xsb_i.h =================================================================== RCS file: /cvsroot/xsb/XSB/emu/slginsts_xsb_i.h,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- slginsts_xsb_i.h 21 Jul 2005 14:03:56 -0000 1.39 +++ slginsts_xsb_i.h 21 Jul 2005 16:51:03 -0000 1.40 @@ -217,7 +217,6 @@ th->waiting_for_subgoal = NULL ; pthread_mutex_unlock(&completing_mut); } -#endif if ( IsNULL(producer_sf) || grabbed ) { @@ -228,15 +227,26 @@ { NewProducerSF(producer_sf, CallLUR_Leaf(lookupResults), CallInfo_TableInfo(callInfo)); -#ifdef MULTI_THREAD subg_tid(producer_sf) = th->tid; subg_grabbed(producer_sf) = 0; pthread_mutex_unlock( &completing_mut ); -#endif } else { subg_compl_stack_ptr(producer_sf) = openreg - COMPLFRAMESIZE; } +#else + if ( IsNULL(producer_sf) ) { + + /* New Producer + ------------ */ + CPtr producer_cpf; + NewProducerSF(producer_sf, CallLUR_Leaf(lookupResults), + CallInfo_TableInfo(callInfo)); +#endif + + + + producer_cpf = answer_template; save_find_locx(ereg); save_registers(producer_cpf, CallInfo_CallArity(callInfo), rreg); |