Ejemplo n.º 1
0
void Yap_init_local(void) {
#ifdef YAPOR
    /* local data related to or-parallelism */
    LOCAL = REMOTE + worker_id;
    Set_LOCAL_top_cp((choiceptr) Yap_LocalBase);
    LOCAL_top_or_fr = GLOBAL_root_or_fr;
    LOCAL_load = 0;
    LOCAL_share_request = MAX_WORKERS;
    LOCAL_reply_signal = worker_ready;
#ifdef ENV_COPY
    INIT_LOCK(LOCAL_lock_signals);
#endif /* ENV_COPY */
    Set_LOCAL_prune_request(NULL);
#endif /* YAPOR */
    INIT_LOCK(LOCAL_lock);
#ifdef TABLING
    /* local data related to tabling */
    LOCAL_next_free_ans_node = NULL;
    LOCAL_top_sg_fr = NULL;
    LOCAL_top_dep_fr = GLOBAL_root_dep_fr;
#ifdef YAPOR
    Set_LOCAL_top_cp_on_stack((choiceptr) Yap_LocalBase); /* ??? */
    LOCAL_top_susp_or_fr = GLOBAL_root_or_fr;
#endif /* YAPOR */
#endif /* TABLING */
    return;
}
Ejemplo n.º 2
0
void make_root_choice_point(void) {
  if (worker_id == 0) {
    LOCAL_top_cp = GLOBAL_root_cp = OrFr_node(GLOBAL_root_or_fr) = B;
  } else {
    B = LOCAL_top_cp = GLOBAL_root_cp;
    B->cp_tr = TR = ((choiceptr) (worker_offset(0) + (CELL)(B)))->cp_tr;
  }
  //  B->cp_h = H0;
  B->cp_ap = GETWORK;
  B->cp_or_fr = GLOBAL_root_or_fr;
  LOCAL_top_or_fr = GLOBAL_root_or_fr;
  LOCAL_load = 0;
  Set_LOCAL_prune_request(NULL);
  BRANCH(worker_id, 0) = 0;
#ifdef TABLING_INNER_CUTS
  LOCAL_pruning_scope = NULL;
#endif /* TABLING_INNER_CUTS */
#ifdef TABLING
  LOCAL_top_cp_on_stack = LOCAL_top_cp;
  adjust_freeze_registers();
#endif /* TABLING */
  return;
}