fix cut handling with threads

do not compile or.threadengine unless yapor on.
This commit is contained in:
Vitor Santos Costa
2010-01-27 11:01:28 +00:00
parent f9bf676cb8
commit 995e8f6dc7
11 changed files with 55 additions and 37 deletions

View File

@@ -129,7 +129,7 @@ STD_PROTO(static inline qg_sol_fr_ptr CUT_prune_solution_frames, (qg_sol_fr_ptr,
goto shared_end
#define SCH_check_prune_request() \
if (LOCAL_prune_request) { \
if (Get_LOCAL_prune_request()) { \
SCHEDULER_GET_WORK(); \
}
@@ -167,7 +167,7 @@ STD_PROTO(static inline qg_sol_fr_ptr CUT_prune_solution_frames, (qg_sol_fr_ptr,
#define CUT_prune_to(PRUNE_CP) \
if (YOUNGER_CP(Get_LOCAL_top_cp(), PRUNE_CP)) { \
if (! LOCAL_prune_request) \
if (! Get_LOCAL_prune_request()) \
prune_shared_branch(PRUNE_CP); \
PRUNE_CP = Get_LOCAL_top_cp(); \
}
@@ -342,8 +342,8 @@ static inline
void CUT_send_prune_request(int worker, choiceptr prune_cp) {
LOCK_WORKER(worker);
if (YOUNGER_CP(REMOTE_top_cp(worker), prune_cp) &&
(! REMOTE_prune_request(worker) || YOUNGER_CP(REMOTE_prune_request(worker), prune_cp)))
REMOTE_prune_request(worker) = prune_cp;
(! Get_REMOTE_prune_request(worker) || YOUNGER_CP(Get_REMOTE_prune_request(worker), prune_cp)))
Set_REMOTE_prune_request(worker, prune_cp);
UNLOCK_WORKER(worker);
return;
}
@@ -352,8 +352,8 @@ void CUT_send_prune_request(int worker, choiceptr prune_cp) {
static inline
void CUT_reset_prune_request(void) {
LOCK_WORKER(worker_id);
if (LOCAL_prune_request && EQUAL_OR_YOUNGER_CP(LOCAL_prune_request, Get_LOCAL_top_cp()))
LOCAL_prune_request = NULL;
if (Get_LOCAL_prune_request() && EQUAL_OR_YOUNGER_CP(Get_LOCAL_prune_request(), Get_LOCAL_top_cp()))
Set_LOCAL_prune_request(NULL);
UNLOCK_WORKER(worker_id);
return;
}