#include "debug_xsb.h"#include "table_status_defs.h"#include "slgdelay.h"Data Structures | |
| struct | Deleted_Table_Frame |
| struct | PrRef |
| struct | Deleted_Clause_Frame |
| struct | Table_Info_Frame |
| struct | tif_list |
| struct | TDispBlk_t |
| struct | TDispBlkHdr_t |
| struct | ascc_edge |
| struct | completion_stack_frame |
| struct | subgoal_frame |
| struct | SubsumptiveProducerSubgoalFrame |
| struct | SubsumedConsumerSubgoalFrame |
Defines | |
| #define | DELETED_PREDICATE 0 |
| #define | DELETED_SUBGOAL 1 |
| #define | DTF_Mark(pDTF) ( (pDTF)->mark ) |
| #define | DTF_Type(pDTF) ( (pDTF)->type ) |
| #define | DTF_CallTrie(pDTF) ( (pDTF)->call_trie ) |
| #define | DTF_Subgoals(pDTF) ( (pDTF)->subgoals ) |
| #define | DTF_Subgoal(pDTF) ( (pDTF)->subgoals ) |
| #define | DTF_NextDTF(pDTF) ( (pDTF)->next_delTF ) |
| #define | DTF_NextPredDTF(pDTF) ( (pDTF)->next_pred_delTF ) |
| #define | DTF_PrevDTF(pDTF) ( (pDTF)->prev_delTF ) |
| #define | DTF_PrevPredDTF(pDTF) ( (pDTF)->prev_pred_delTF ) |
| #define | New_Global_DelTF_Pred(pDTF, pTIF) |
| #define | New_Global_DelTF_Subgoal(pDTF, pTIF, pSubgoal) |
| #define | Free_Global_DelTF_Pred(pDTF, pTIF) |
| #define | Free_Global_DelTF_Subgoal(pDTF, pTIF) |
| #define | PrRef_Instr(PRREF) ( (PRREF)->Instr ) |
| #define | PrRef_FirstClRef(PRREF) ( (PRREF)->FirstClRef ) |
| #define | PrRef_LastClRef(PRREF) ( (PRREF)->LastClRef ) |
| #define | PrRef_Psc(PRREF) ( (PRREF)->psc ) |
| #define | PrRef_Mark(PRREF) ( (PRREF)->mark ) |
| #define | PrRef_DelCF(PRREF) ( (PRREF)->delcf ) |
| #define | DELETED_PRREF 0 |
| #define | DELETED_CLREF 1 |
| #define | DCF_Mark(pDCF) ( (pDCF)->mark ) |
| #define | DCF_Type(pDCF) ( (pDCF)->type ) |
| #define | DCF_PrRef(pDCF) ( (pDCF)->prref ) |
| #define | DCF_ClRef(pDCF) ( (pDCF)->clref ) |
| #define | DCF_PSC(pDCF) ( (pDCF)->psc ) |
| #define | DCF_NextDCF(pDCF) ( (pDCF)->next_delCF ) |
| #define | DCF_PrevDCF(pDCF) ( (pDCF)->prev_delCF ) |
| #define | DCF_NextPredDCF(pDCF) ( (pDCF)->next_pred_delCF ) |
| #define | DCF_PrevPredDCF(pDCF) ( (pDCF)->prev_pred_delCF ) |
| #define | isSharedTIF(pTIF) (TIF_EvalMethod(pTIF) != DISPATCH_BLOCK) |
| #define | isPrivateTIF(pTIF) (TIF_EvalMethod(pTIF) == DISPATCH_BLOCK) |
| #define | TIF_PSC(pTIF) ( (pTIF)->psc_ptr ) |
| #define | TIF_DelTF(pTIF) ( (pTIF)->del_tf_ptr ) |
| #define | TIF_EvalMethod(pTIF) ( (pTIF)->method ) |
| #define | TIF_Mark(pTIF) ( (pTIF)->mark ) |
| #define | TIF_CallTrie(pTIF) ( (pTIF)->call_trie ) |
| #define | TIF_Subgoals(pTIF) ( (pTIF)->subgoals ) |
| #define | TIF_NextTIF(pTIF) ( (pTIF)->next_tif ) |
| #define | cps_check_mark_tif(pTIF) TIF_Mark(pTIF) = 0x1 |
| #define | cps_check_unmark_tif(pTIF) TIF_Mark(pTIF) = 0x0 |
| #define | IsVariantPredicate(pTIF) ( TIF_EvalMethod(pTIF) == VARIANT_EVAL_METHOD ) |
| #define | IsSubsumptivePredicate(pTIF) ( TIF_EvalMethod(pTIF) == SUBSUMPTIVE_EVAL_METHOD ) |
| #define | Free_Shared_TIF(pTIF) |
| #define | Free_Private_TIF(pTIF) |
| #define | TIF_DispatchBlock(pTIF) ((TDBptr) (pTIF)->psc_ptr ) |
| #define | TDB_MaxThread(pTDB) ( (pTDB)->MaxThread ) |
| #define | TDB_TIFArray(pTDB) ( (&(pTDB)->Thread0) ) |
| #define | TDB_PrivateTIF(pTDB, tid) ( TDB_TIFArray(pTDB)[(tid)] ) |
| #define | handle_dispatch_block(tip) |
| #define | ASCC_EDGE_SIZE (sizeof(struct ascc_edge)/sizeof(CPtr)) |
| #define | edge_to_node(e) ((EPtr)(e))->ascc_node_ptr |
| #define | next_edge(e) ((EPtr)(e))->next |
| #define | DELAYED -1 |
| #define | COMPLFRAMESIZE (sizeof(struct completion_stack_frame)/sizeof(CPtr)) |
| #define | compl_subgoal_ptr(b) ((ComplStackFrame)(b))->subgoal_ptr |
| #define | compl_level(b) ((ComplStackFrame)(b))->_level_num |
| #define | compl_del_ret_list(b) ((ComplStackFrame)(b))->del_ret_list |
| #define | compl_visited(b) ((ComplStackFrame)(b))->visited |
| #define | compl_DG_edges(b) ((ComplStackFrame)(b))->DG_edges |
| #define | compl_DGT_edges(b) ((ComplStackFrame)(b))->DGT_edges |
| #define | prev_compl_frame(b) (((CPtr)(b))+COMPLFRAMESIZE) |
| #define | next_compl_frame(b) (((CPtr)(b))-COMPLFRAMESIZE) |
| #define | adjust_level(CS_FRAME) |
| #define | push_completion_frame_common(subgoal) |
| #define | push_completion_frame_batched(subgoal) compl_DG_edges(openreg) = compl_DGT_edges(openreg) = NULL |
| #define | push_completion_frame(subgoal) |
| #define | compact_completion_frame(cp_frame, cs_frame, subgoal) |
| #define | VARIANT_PRODUCER_SFT 0x02 |
| #define | SUBSUMPTIVE_PRODUCER_SFT 0x01 |
| #define | SUBSUMED_CONSUMER_SFT 0x00 |
| #define | VARIANT_SUBSUMPTION_MASK 0x03 |
| #define | SHARED_PRIVATE_MASK 0x04 |
| #define | SHARED_SFT 0x04 |
| #define | PRIVATE_SFT 0x00 |
| #define | subg_sf_type(b) ((VariantSF)(b))->sf_type |
| #define | subg_is_complete(b) ((VariantSF)(b))->is_complete |
| #define | subg_is_reclaimed(b) ((VariantSF)(b))->is_reclaimed |
| #define | subg_prev_subgoal(b) ((VariantSF)(b))->prev_subgoal |
| #define | subg_next_subgoal(b) ((VariantSF)(b))->next_subgoal |
| #define | subg_tif_ptr(b) ((VariantSF)(b))->tif_ptr |
| #define | subg_leaf_ptr(b) ((VariantSF)(b))->leaf_ptr |
| #define | subg_ans_root_ptr(b) ((VariantSF)(b))->ans_root_ptr |
| #define | subg_ans_list_ptr(b) ((VariantSF)(b))->ans_list_ptr |
| #define | subg_ans_list_tail(b) ((VariantSF)(b))->ans_list_tail |
| #define | subg_cp_ptr(b) ((VariantSF)(b))->cp_ptr |
| #define | subg_deltf_ptr(b) ((VariantSF)(b))->deltf_ptr |
| #define | subg_asf_list_ptr(b) ((VariantSF)(b))->asf_list_ptr |
| #define | subg_compl_stack_ptr(b) ((VariantSF)(b))->compl_stack_ptr |
| #define | subg_compl_susp_ptr(b) ((VariantSF)(b))->compl_suspens_ptr |
| #define | subg_nde_list(b) ((VariantSF)(b))->nde_list |
| #define | subg_tid(b) ((VariantSF)(b))->tid |
| #define | subg_tag(b) ((VariantSF)(b))->tag |
| #define | subg_grabbed(b) ((VariantSF)(b))->grabbed |
| #define | subg_consumers(SF) ((SubProdSF)(SF))->consumers |
| #define | conssf_producer(SF) ((SubConsSF)(SF))->producer |
| #define | conssf_timestamp(SF) ((SubConsSF)(SF))->ts |
| #define | conssf_consumers(SF) ((SubConsSF)(SF))->consumers |
| #define | subg_answers(subg) ALN_Next(subg_ans_list_ptr(subg)) |
| #define | IsVariantSF(pSF) ((subg_sf_type(pSF) & VARIANT_SUBSUMPTION_MASK) == VARIANT_PRODUCER_SFT) |
| #define | IsSubProdSF(pSF) ((subg_sf_type(pSF) & VARIANT_SUBSUMPTION_MASK) == SUBSUMPTIVE_PRODUCER_SFT) |
| #define | IsSubConsSF(pSF) ((subg_sf_type(pSF) & VARIANT_SUBSUMPTION_MASK) == SUBSUMED_CONSUMER_SFT) |
| #define | IsPrivateSF(pSF) ((subg_sf_type(pSF) & SHARED_PRIVATE_MASK) == PRIVATE_SFT) |
| #define | IsSharedSF(pSF) ((subg_sf_type(pSF) & SHARED_PRIVATE_MASK) == SHARED_SFT) |
| #define | IsVariantProducer(pSF) IsVariantSF(pSF) |
| #define | IsSubsumptiveProducer(pSF) IsSubProdSF(pSF) |
| #define | IsProperlySubsumed(pSF) IsSubConsSF(pSF) |
| #define | IsProducingSubgoal(pSF) ( IsVariantProducer(pSF) || IsSubsumptiveProducer(pSF) ) |
| #define | ProducerSubsumesSubgoals(pSF) ( IsSubsumptiveProducer(pSF) && IsNonNULL(subg_consumers(pSF)) ) |
| #define | subg_dll_add_sf(pSF, Chain, NewChain) |
| #define | subg_dll_remove_sf(pSF, Chain, NewChain) |
| #define | empty_return_handle(SF) empty_return(SF) |
| #define | SF_AppendNewAnswerList(pSF, pAnsList) |
| #define | SF_AppendNewAnswer(pSF, pAns) SF_AppendToAnswerList(pSF,pAns,pAns) |
| #define | SF_AppendToAnswerList(pSF, pHead, pTail) |
| #define | SUBGOAL_FRAMES_PER_BLOCK 16 |
| #define | FreeProducerSF(SF) |
| #define | tstCreateTSIs_handle(Producer) tstCreateTSIs(Producer) |
| #define | NewSubConsSF(SF, Leaf, TableInfo, Producer) |
| #define | set_min(a, b, c) if (b < c) a = b; else a = c |
| #define | tab_level(SUBG_PTR) compl_level((subg_compl_stack_ptr(SUBG_PTR))) |
| #define | next_tab_level(CSF_PTR) compl_level(prev_compl_frame(CSF_PTR)) |
| #define | is_leader(CSF_PTR) (next_tab_level(CSF_PTR) < compl_level(CSF_PTR)) |
| #define | NO_ANSWERS (ALNptr)0 |
| #define | UNCOND_ANSWERS (ALNptr)1 |
| #define | COND_ANSWERS (ALNptr)2 |
| #define | INCOMP_ANSWERS (ALNptr)3 |
| #define | has_answers(SUBG_PTR) IsNonNULL(subg_answers(SUBG_PTR)) |
| #define | has_no_answers(SUBG_PTR) IsNULL(subg_answers(SUBG_PTR)) |
| #define | has_answer_code(SUBG_PTR) |
| #define | subgoal_fails(SUBG_PTR) ( ! has_answer_code(SUBG_PTR) ) |
| #define | subgoal_unconditionally_succeeds(SUBG_PTR) |
| #define | mark_subgoal_failed(SUBG_PTR) (subg_ans_root_ptr(SUBG_PTR) = NULL) |
| #define | neg_simplif_possible(SUBG_PTR) ((subgoal_fails(SUBG_PTR)) && (subg_nde_list(SUBG_PTR) != NULL)) |
| #define | is_completed(SUBG_PTR) subg_is_complete(SUBG_PTR) |
| #define | structs_are_reclaimed(SUBG_PTR) subg_is_reclaimed(SUBG_PTR) |
| #define | mark_as_completed(SUBG_PTR) |
| #define | subgoal_space_has_been_reclaimed(SUBG_PTR, CS_FRAME) (SUBG_PTR != compl_subgoal_ptr(CS_FRAME)) |
| #define | mark_delayed(csf1, csf2, susp) |
| #define | reclaim_incomplete_table_structs(SUBG_PTR) |
| #define | Reset_Demand_Freeze_Registers |
| #define | reset_freeze_registers |
| #define | adjust_freeze_registers(tcp) |
| #define | reclaim_stacks(tcp) |
| #define | pdlpush(cell) *(pdlreg) = cell; pdlreg-- |
| #define | pdlpop *(++pdlreg) |
| #define | pdlempty (pdlreg == (CPtr)(pdl.high) - 1) |
| #define | resetpdl |
| #define | remove_incomplete_tables_loop(Endpoint) remove_incomplete_tries(Endpoint) |
| #define | remove_incomplete_tables() remove_incomplete_tries(CTXTc COMPLSTACKBOTTOM) |
| #define | get_var_and_attv_nums(var_num, attv_num, tmp_int) |
Typedefs | |
| typedef Deleted_Table_Frame * | DelTFptr |
| typedef Deleted_Table_Frame | DeletedTableFrame |
| typedef Deleted_Clause_Frame * | DelCFptr |
| typedef Deleted_Clause_Frame | DeletedClauseFrame |
| typedef byte | TabledEvalMethod |
| typedef Table_Info_Frame * | TIFptr |
| typedef Table_Info_Frame | TableInfoFrame |
| typedef TDispBlk_t * | TDBptr |
| typedef ascc_edge * | EPtr |
| typedef completion_stack_frame * | ComplStackFrame |
| typedef subgoal_frame | variant_subgoal_frame |
| typedef SubsumedConsumerSubgoalFrame * | SubConsSF |
| typedef SubsumptiveProducerSubgoalFrame * | SubProdSF |
| typedef SubsumptiveProducerSubgoalFrame | subsumptive_producer_sf |
| typedef SubsumedConsumerSubgoalFrame | subsumptive_consumer_sf |
Enumerations | |
| enum | SubgoalFrameType { SHARED_VARIANT_PRODUCER_SFT = 0x06, SHARED_SUBSUMPTIVE_PRODUCER_SFT = 0x05, SHARED_SUBSUMED_CONSUMER_SFT = 0x04, PRIVATE_VARIANT_PRODUCER_SFT = 0x02, PRIVATE_SUBSUMPTIVE_PRODUCER_SFT = 0x01, PRIVATE_SUBSUMED_CONSUMER_SFT = 0x00 } |
Functions | |
| xsbBool | assert_buff_to_clref_p (prolog_term, byte, PrRef, int, prolog_term, int, ClRef *) |
| int | assert_code_to_buff_p (prolog_term) |
| ALNptr | empty_return (VariantSF) |
| void | tstCreateTSIs (TSTNptr) |
Variables | |
| typedef | PrRefData |
| tif_list | tif_list |
| TIFptr | New_TIF (Psc) |
| Structure_Manager | smVarSF |
| Structure_Manager | smProdSF |
| Structure_Manager | smConsSF |
|
|
Value: |
|
|
Value: { \
int new_level = compl_level(CS_FRAME); \
if ( new_level < compl_level(openreg) ) { \
CPtr csf = CS_FRAME; \
while ( (compl_level(csf) >= new_level) && (csf >= openreg) ) { \
compl_level(csf) = new_level; \
csf = next_compl_frame(csf); \
} \
} \
}
|
|
|
|
|
|
Value: compl_subgoal_ptr(cp_frame) = subgoal; \ compl_level(cp_frame) = compl_level(cs_frame); \ compl_visited(cp_frame) = FALSE; \ compl_DG_edges(cp_frame) = compl_DGT_edges(cp_frame) = NULL; \ cp_frame = next_compl_frame(cp_frame) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: { \
if (DTF_PrevDTF(pDTF) == 0) { \
deltf_chain_begin = DTF_NextDTF(pDTF); \
} \
else { \
DTF_NextDTF(DTF_PrevDTF(pDTF)) = DTF_NextDTF(pDTF); \
} \
if (DTF_NextDTF(pDTF) != 0) { \
DTF_PrevDTF(DTF_NextDTF(pDTF)) = DTF_PrevDTF(pDTF); \
} \
if (DTF_PrevPredDTF(pDTF) == 0) { \
TIF_DelTF(pTIF) = DTF_NextDTF(pDTF); \
} \
else { \
DTF_NextPredDTF(DTF_PrevPredDTF(pDTF)) = DTF_NextPredDTF(pDTF); \
} \
if (DTF_NextPredDTF(pDTF) != 0) { \
DTF_PrevPredDTF(DTF_NextPredDTF(pDTF)) = DTF_PrevPredDTF(pDTF); \
} \
mem_dealloc(pDTF,sizeof(DeletedTableFrame),TABLE_SPACE); \
}
|
|
|
Value: { \
if (DTF_PrevDTF(pDTF) == 0) { \
deltf_chain_begin = DTF_NextDTF(pDTF); \
} \
else { \
DTF_NextDTF(DTF_PrevDTF(pDTF)) = DTF_NextDTF(pDTF); \
} \
if (DTF_NextDTF(pDTF) != 0) { \
DTF_PrevDTF(DTF_NextDTF(pDTF)) = DTF_PrevDTF(pDTF); \
} \
if (DTF_PrevPredDTF(pDTF) == 0) { \
TIF_DelTF(pTIF) = DTF_NextDTF(pDTF); \
} \
if (DTF_PrevPredDTF(pDTF) != 0) { \
DTF_NextPredDTF(DTF_PrevPredDTF(pDTF)) = DTF_NextPredDTF(pDTF); \
} \
if (DTF_NextPredDTF(pDTF) != 0) { \
DTF_PrevPredDTF(DTF_NextPredDTF(pDTF)) = DTF_PrevPredDTF(pDTF); \
} \
mem_dealloc(pDTF,sizeof(DeletedTableFrame),TABLE_SPACE); \
}
|
|
|
Value: { \
TIFptr tTIF = private_tif_list.first; \
if (tTIF == (pTIF)) { \
private_tif_list.first = TIF_NextTIF((pTIF)); \
if (private_tif_list.last == (pTIF)) private_tif_list.last = NULL; \
} \
else { \
while (tTIF != NULL && TIF_NextTIF(tTIF) != (pTIF)) \
tTIF = TIF_NextTIF(tTIF); \
if (!tTIF) xsb_exit("Trying to free nonexistent TIF"); \
if ((pTIF) == private_tif_list.last) private_tif_list.last = tTIF; \
TIF_NextTIF(tTIF) = TIF_NextTIF((pTIF)); \
} \
delete_predicate_table(CTXTc pTIF); \
mem_dealloc((pTIF),sizeof(TableInfoFrame),TABLE_SPACE); \
}
|
|
|
Value: { \
TIFptr tTIF; \
SYS_MUTEX_LOCK( MUTEX_TABLE ); \
tTIF = tif_list.first; \
if (tTIF == (pTIF)) { \
tif_list.first = TIF_NextTIF((pTIF)); \
if (tif_list.last == (pTIF)) tif_list.last = NULL; \
} \
else { \
while (tTIF != NULL && TIF_NextTIF(tTIF) != (pTIF)) \
tTIF = TIF_NextTIF(tTIF); \
if (!tTIF) xsb_exit("Trying to free nonexistent TIF"); \
if ((pTIF) == tif_list.last) tif_list.last = tTIF; \
TIF_NextTIF(tTIF) = TIF_NextTIF((pTIF)); \
} \
SYS_MUTEX_UNLOCK( MUTEX_TABLE ); \
delete_predicate_table(CTXTc pTIF); \
mem_dealloc((pTIF),sizeof(TableInfoFrame),TABLE_SPACE); \
}
|
|
|
Value: { \
subg_dll_remove_sf(SF,TIF_Subgoals(subg_tif_ptr(SF)), \
TIF_Subgoals(subg_tif_ptr(SF))); \
if ( IsVariantSF(SF) ) { \
if (IsSharedSF(SF)) { \
SM_DeallocateSharedStruct(smVarSF,SF); \
} else { \
SM_DeallocateStruct(smVarSF,SF); \
} \
} \
else \
SM_DeallocateStruct(smProdSF,SF) \
}
|
|
|
Value: var_num = tmp_int & 0xffff; \ attv_num = tmp_int >> 16 |
|
|
Value: if ( isPrivateTIF(tip) ) { \ TDBptr tdispblk; \ tdispblk = (TDBptr) tip; \ if (th->tid > TDB_MaxThread(tdispblk)) \ xsb_abort("Table Dispatch block too small"); \ tip = TDB_PrivateTIF(tdispblk,th->tid); \ if (!tip) { \ /* this may not be possible, as it may always be initted in get_tip? */\ tip = New_TIF(CTXTc tdispblk->psc_ptr); \ TDB_PrivateTIF(tdispblk,th->tid) = tip; \ } \ } |
|
|
Value: ( IsNonNULL(subg_ans_root_ptr(SUBG_PTR)) && \ IsNonNULL(BTN_Child(subg_ans_root_ptr(SUBG_PTR))) ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: { \
subg_is_complete(SUBG_PTR) = TRUE; \
reclaim_del_ret_list(SUBG_PTR); \
}
|
|
|
Value: { \
compl_visited(csf1) = DELAYED; \
compl_visited(csf2) = DELAYED; \
/* do not put TRUE but some !0 value that GC can recognize as int tagged */\
csf_neg_loop(susp) = XSB_INT; \
}
|
|
|
|
|
|
|
|
|
Value: { \
pDTF = (DelTFptr)mem_alloc(sizeof(DeletedTableFrame),TABLE_SPACE); \
if ( IsNULL(pDTF) ) \
xsb_abort("Ran out of memory in allocation of DeletedTableFrame"); \
DTF_CallTrie(pDTF) = TIF_CallTrie(pTIF); \
DTF_Subgoals(pDTF) = TIF_Subgoals(pTIF); \
DTF_Type(pDTF) = DELETED_PREDICATE; \
DTF_Mark(pDTF) = 0; \
DTF_PrevDTF(pDTF) = 0; \
DTF_PrevPredDTF(pDTF) = 0; \
DTF_NextDTF(pDTF) = deltf_chain_begin; \
DTF_NextPredDTF(pDTF) = TIF_DelTF(pTIF); \
if (deltf_chain_begin) DTF_PrevDTF(deltf_chain_begin) = pDTF; \
if (TIF_DelTF(pTIF)) DTF_PrevPredDTF(TIF_DelTF(pTIF)) = pDTF; \
deltf_chain_begin = pDTF; \
TIF_DelTF(pTIF) = pDTF; \
}
|
|
|
Value: { \
pDTF = (DelTFptr)mem_alloc(sizeof(DeletedTableFrame),TABLE_SPACE); \
if ( IsNULL(pDTF) ) \
xsb_abort("Ran out of memory in allocation of DeletedTableFrame"); \
DTF_CallTrie(pDTF) = NULL; \
DTF_Subgoal(pDTF) = pSubgoal; \
DTF_Type(pDTF) = DELETED_SUBGOAL; \
DTF_Mark(pDTF) = 0; \
DTF_PrevDTF(pDTF) = 0; \
DTF_PrevPredDTF(pDTF) = 0; \
DTF_NextDTF(pDTF) = deltf_chain_begin; \
DTF_NextPredDTF(pDTF) = TIF_DelTF(pTIF); \
if (deltf_chain_begin) DTF_PrevDTF(deltf_chain_begin) = pDTF; \
if (TIF_DelTF(pTIF)) DTF_PrevPredDTF(TIF_DelTF(pTIF)) = pDTF; \
deltf_chain_begin = pDTF; \
TIF_DelTF(pTIF) = pDTF; \
}
|
|
|
Value: { \
\
void *pNewSF; \
\
SM_AllocateStruct(smConsSF,pNewSF); \
pNewSF = memset(pNewSF,0,sizeof(subsumptive_consumer_sf)); \
subg_sf_type(pNewSF) = SUBSUMED_CONSUMER_SFT; \
subg_tif_ptr(pNewSF) = TableInfo; \
subg_leaf_ptr(pNewSF) = Leaf; \
CallTrieLeaf_SetSF(Leaf,pNewSF); \
conssf_producer(pNewSF) = (SubProdSF)Producer; \
if ( ! ProducerSubsumesSubgoals(Producer) ) \
tstCreateTSIs_handle((TSTNptr)subg_ans_root_ptr(Producer)); \
subg_ans_list_ptr(pNewSF) = empty_return_handle(pNewSF); \
conssf_timestamp(pNewSF) = CONSUMER_SF_INITIAL_TS; \
conssf_consumers(pNewSF) = subg_consumers(Producer); \
subg_consumers(Producer) = (SubConsSF)pNewSF; \
SF = (VariantSF)pNewSF; \
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: |
|
|
|
|
|
Value: level_num++; \ openreg -= COMPLFRAMESIZE; \ compl_subgoal_ptr(openreg) = subgoal; \ compl_level(openreg) = level_num; \ compl_del_ret_list(openreg) = NULL; \ compl_visited(openreg) = FALSE |
|
|
Value: { \
if ( ! structs_are_reclaimed(SUBG_PTR) ) { \
table_complete_entry(SUBG_PTR); \
structs_are_reclaimed(SUBG_PTR) = TRUE; \
} \
}
|
|
|
Value: if (tcp == root_address) { \ reset_freeze_registers; \ /* xsb_dbgmsg("reset registers...."); */ \ } \ else { \ adjust_freeze_registers(tcp); \ /* xsb_dbgmsg(adjust registers...."); */ \ } |
|
|
|
|
|
|
|
|
|
|
|
Value: |
|
|
Value: |
|
|
|
|
|
|
|
|
Value: { \
\
ALNptr pLast; \
\
pLast = pAnsList; \
while ( IsNonNULL(ALN_Next(pLast)) ) \
pLast = ALN_Next(pLast); \
SF_AppendToAnswerList(pSF,pAnsList,pLast); \
}
|
|
|
Value: { \
if ( has_answers(pSF) ) \
/*
* Insert new answer at the end of the answer list.
*/ \
ALN_Next(subg_ans_list_tail(pSF)) = pHead; \
else \
/*
* The dummy answer list node is the only node currently in the list.
* It's pointed to by the head ptr, but the tail ptr is NULL.
*/ \
ALN_Next(subg_ans_list_ptr(pSF)) = pHead; \
subg_ans_list_tail(pSF) = pTail; \
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: { \
subg_prev_subgoal(pSF) = NULL; \
subg_next_subgoal(pSF) = Chain; \
if ( IsNonNULL(Chain) ) \
subg_prev_subgoal(Chain) = pSF; \
NewChain = (VariantSF)pSF; \
}
|
|
|
Value: { \
if ( IsNonNULL(subg_prev_subgoal(pSF)) ) { \
subg_next_subgoal(subg_prev_subgoal(pSF)) = subg_next_subgoal(pSF); \
NewChain = Chain; \
} \
else \
NewChain = (VariantSF)subg_next_subgoal(pSF); \
if ( IsNonNULL(subg_next_subgoal(pSF)) ) \
subg_prev_subgoal(subg_next_subgoal(pSF)) = subg_prev_subgoal(pSF); \
subg_prev_subgoal(pSF) = subg_next_subgoal(pSF) = NULL; \
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: ( has_answer_code(SUBG_PTR) && \ is_unconditional_answer(BTN_Child(subg_ans_root_ptr(SUBG_PTR))) ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.4.5