fix memory allocation for YapOR
This commit is contained in:
@@ -87,15 +87,15 @@ reset_trail(tr_fr_ptr tr_top, tr_fr_ptr trp)
|
||||
|
||||
void make_root_choice_point(void) {
|
||||
if (worker_id == 0) {
|
||||
LOCAL_top_cp = GLOBAL_root_cp = OrFr_node(GLOBAL_root_or_fr) = B;
|
||||
LOCAL_top_cp = Yap_root_cp = OrFr_node(Yap_root_or_fr) = B;
|
||||
B->cp_h = H0;
|
||||
B->cp_ap = GETWORK;
|
||||
B->cp_or_fr = GLOBAL_root_or_fr;
|
||||
B->cp_or_fr = Yap_root_or_fr;
|
||||
} else {
|
||||
B = LOCAL_top_cp = GLOBAL_root_cp;
|
||||
B = LOCAL_top_cp = Yap_root_cp;
|
||||
TR = B->cp_tr;
|
||||
}
|
||||
LOCAL_top_or_fr = GLOBAL_root_or_fr;
|
||||
LOCAL_top_or_fr = Yap_root_or_fr;
|
||||
LOCAL_load = 0;
|
||||
LOCAL_prune_request = NULL;
|
||||
BRANCH(worker_id, 0) = 0;
|
||||
@@ -121,7 +121,7 @@ void p_share_work(void) {
|
||||
|
||||
if (! BITMAP_member(OrFr_members(REMOTE_top_or_fr(worker_q)), worker_id) ||
|
||||
B == REMOTE_top_cp(worker_q) ||
|
||||
(LOCAL_load <= DELAYED_RELEASE_LOAD && OrFr_nearest_livenode(LOCAL_top_or_fr) == NULL)) {
|
||||
(LOCAL_load <= Yap_delayed_release_load && OrFr_nearest_livenode(LOCAL_top_or_fr) == NULL)) {
|
||||
/* refuse sharing request */
|
||||
REMOTE_reply_signal(LOCAL_share_request) = no_sharing;
|
||||
LOCAL_share_request = MAX_WORKERS;
|
||||
@@ -163,7 +163,7 @@ int q_share_work(int worker_p) {
|
||||
|
||||
/* make sharing request */
|
||||
LOCK_WORKER(worker_p);
|
||||
if (BITMAP_member(GLOBAL_bm_idle_workers, worker_p) ||
|
||||
if (BITMAP_member(Yap_bm_idle_workers, worker_p) ||
|
||||
REMOTE_share_request(worker_p) != MAX_WORKERS) {
|
||||
/* worker p is idle or has another request */
|
||||
UNLOCK_WORKER(worker_p);
|
||||
@@ -173,10 +173,10 @@ int q_share_work(int worker_p) {
|
||||
UNLOCK_WORKER(worker_p);
|
||||
|
||||
/* wait for an answer */
|
||||
while (LOCAL_reply_signal == ready);
|
||||
while (LOCAL_reply_signal == worker_ready);
|
||||
if (LOCAL_reply_signal == no_sharing) {
|
||||
/* sharing request refused */
|
||||
LOCAL_reply_signal = ready;
|
||||
LOCAL_reply_signal = worker_ready;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -207,8 +207,8 @@ int q_share_work(int worker_p) {
|
||||
}
|
||||
|
||||
/* update registers and return */
|
||||
/* REMOTE_reply_signal(worker_p) = ready; */
|
||||
LOCAL_reply_signal = ready;
|
||||
/* REMOTE_reply_signal(worker_p) = worker_ready; */
|
||||
LOCAL_reply_signal = worker_ready;
|
||||
PUT_IN_REQUESTABLE(worker_id);
|
||||
TR = LOCAL_top_cp->cp_tr;
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user