40 #define GARBAGE_COLLECTOR 48 #define NOT_A_WAM_WORD Tag_REF(0) 50 #define NIL_WORD Tag_ATM(ATOM_NIL) 59 #define WRITE_MODE NULL 66 #ifdef GARBAGE_COLLECTOR 68 #define ENVIR_STATIC_SIZE 4 70 #define CPE(e) (*(WamCont *) &(e[-1])) 71 #define BCIE(e) (*(WamWord *) &(e[-2])) 72 #define EE(e) (*(WamWord **) &(e[-3])) 73 #define NBYE(e) (*(WamWord *) &(e[-4])) 74 #define Y(e, y) (*(WamWord *) &(e[-5 - (y)])) 76 #define ENVIR_NAMES {"CPE", "BCIE", "EE", "NBYE"} 80 #define ENVIR_STATIC_SIZE 3 82 #define CPE(e) (*(WamCont *) &(e[-1])) 83 #define BCIE(e) (*(WamWord *) &(e[-2])) 84 #define EE(e) (*(WamWord **) &(e[-3])) 85 #define Y(e, y) (*(WamWord *) &(e[-4 - (y)])) 87 #define ENVIR_NAMES {"CPE", "BCIE", "EE"} 94 #define CHOICE_STATIC_SIZE 8 96 #define ALTB(b) (*(CodePtr *) &(b[-1])) 97 #define CPB(b) (*(WamCont *) &(b[-2])) 98 #define BCIB(b) (*(WamWord *) &(b[-3])) 99 #define EB(b) (*(WamWord **) &(b[-4])) 100 #define BB(b) (*(WamWord **) &(b[-5])) 101 #define HB(b) (*(WamWord **) &(b[-6])) 102 #define TRB(b) (*(WamWord **) &(b[-7])) 103 #define CSB(b) (*(WamWord **) &(b[-8])) 104 #define AB(b, a) (*(WamWord *) &(b[-9 - (a)])) 106 #define CHOICE_NAMES {"ALTB", "CPB", "BCIB", "EB", "BB", \ 116 #define NB_OF_TRAIL_TAGS 4 124 #define TRAIL_TAG_NAMES {"TUV", "TOV", "TMV", "TFC"} 127 #define Trail_Tag_Value(t, v) ((PlULong) (v) | (t)) 128 #define Trail_Tag_Of(w) ((PlULong) (w) & 0x3) 129 #define Trail_Value_Of(w) ((PlULong) (w) & (~0x3)) 136 #define ATOM_MAX_BITS (sizeof(PlULong) * 8 - 9) 138 #define Functor_Arity(f, n) (((PlULong) (n) << ATOM_MAX_BITS) | (f)) 139 #define Functor_Of(word) ((PlULong)(word) & (((PlULong) 1 << ATOM_MAX_BITS) - 1)) 140 #define Arity_Of(word) ((PlULong) (word) >> ATOM_MAX_BITS) 143 #ifndef NO_USE_FD_SOLVER 144 #define Dont_Separate_Tag(tag_mask) ((tag_mask) == TAG_FDV_MASK) 146 #define Dont_Separate_Tag(tag_mask) (0) 150 #define Do_Copy_Of_Word(tag_mask, word) \ 151 if (Dont_Separate_Tag(tag_mask)) \ 152 word = Tag_REF(UnTag_Address(word)) 158 #define Make_Self_Ref(adr) (Tag_REF(adr)) 170 #define INT_GREATEST_VALUE (((PlLong)1<<(WORD_SIZE-TAG_SIZE-1))-1) 171 #define INT_LOWEST_VALUE ((-INT_GREATEST_VALUE)-1) 180 #define Car(adr) (((WamWord *) adr)[OFFSET_CAR]) 181 #define Cdr(adr) (((WamWord *) adr)[OFFSET_CAR+1]) 190 #define Functor(adr) (Functor_Of(Functor_And_Arity(adr))) 191 #define Arity(adr) (Arity_Of(Functor_And_Arity(adr))) 192 #define Functor_And_Arity(adr) (((WamWord *) (adr))[0]) 193 #define Arg(adr, i) (((WamWord *) (adr))[OFFSET_ARG+i]) 201 #define Global_Push(word) (*H++ = (WamWord) (word)) 203 #define Global_Pop (*--H) 208 #define Trail_Push(word) (*TR++ = (WamWord) (word)) 210 #define Trail_Pop (*--TR) 215 #define Is_A_Local_Adr(adr) ((adr) >= LSSA) 222 #define From_B_To_WamWord(b) (Tag_INT((b) - LSSA)) 223 #define From_WamWord_To_B(word) (LSSA + UnTag_INT(word)) 230 #if defined(M_sparc) || defined(M_sparc64) 232 #define Adjust_CP(cp) ((WamCont) ((PlULong) (cp) - 8)) 233 #define UnAdjust_CP(cp) ((WamCont) ((PlULong) (cp) + 8)) 237 #define Adjust_CP(p) ((WamCont) (p)) 238 #define UnAdjust_CP(cp) (cp) 351 CodePtr c_lst, CodePtr c_stc);
432 #define DEREF_COUNT(x) x++ 434 #define DEREF_COUNT(x) 438 #define DEREF(start_word, word, tag_mask) \ 441 WamWord deref_last_word; \ 445 DEREF_COUNT(nb_deref); \ 448 DEREF_COUNT(chain_len); \ 449 deref_last_word = word; \ 450 tag_mask = Tag_Mask_Of(word); \ 451 if (tag_mask != TAG_REF_MASK) \ 453 word = *(UnTag_REF(word)); \ 455 while (word != deref_last_word); \ 463 #define Word_Needs_Trailing(adr) \ 464 ((adr) < HB1 || (Is_A_Local_Adr(adr) && (adr) < B)) 468 #define Bind_UV(adr, word) \ 471 if (Word_Needs_Trailing(adr)) \ 480 #define Bind_OV(adr, word) \ 483 if (Word_Needs_Trailing(adr)) \ 492 #define Bind_MV(adr, nb, real_adr) \ 495 if (Word_Needs_Trailing(adr)) \ 497 Mem_Word_Cpy(adr, real_adr, nb); \ 504 #define Trail_UV(adr) \ 505 Trail_Push(Trail_Tag_Value(TUV, adr)) 508 #define Trail_OV(adr) \ 511 Trail_Push(*(adr)); \ 512 Trail_Push(Trail_Tag_Value(TOV, adr)); \ 519 #define Trail_MV(adr, nb) \ 522 Mem_Word_Cpy(TR, adr, nb); \ 525 Trail_Push(Trail_Tag_Value(TMV, adr)); \ 532 #define Trail_FC(fct, nb, arg) \ 535 Mem_Word_Cpy(TR, arg, nb); \ 539 Trail_Push(Trail_Tag_Value(TFC, 0)); \ 546 #define Assign_B(newB) (B = (newB), HB1 = HB(B)) 548 #define Delete_Last_Choice_Point() Assign_B(BB(B)) 555 #define Globalize_Local_Unbound_Var(adr, res_word) \ 558 WamWord *cur_H = H; \ 560 res_word = Make_Self_Ref(cur_H); \ 563 Bind_UV(adr, res_word); \ 570 #define Mem_Word_Cpy(dst, src, nb) \ 573 register PlLong *s = (PlLong *) (src); \ 574 register PlLong *d = (PlLong *) (dst); \ 575 register int counter = (nb); \ void FC Pl_Update_Choice_Point3(CodePtr codep_alt)
Definition: wam_inst.c:1450
WamWord FC Pl_Put_Integer_Tagged(WamWord w)
Definition: wam_inst.c:492
void FC Pl_Delete_Choice_Point4(void)
Definition: wam_inst.c:1540
void FC Pl_Delete_Choice_Point0(void)
Definition: wam_inst.c:1495
void FC Pl_Create_Swt_Stc_Element(SwtTbl t, int size, int func, int arity, CodePtr codep)
Definition: wam_inst.c:138
Bool FC Pl_Get_Atom(int atom, WamWord start_word)
Definition: wam_inst.c:215
Bool FC Pl_Get_Float(double n, WamWord start_word)
Definition: wam_inst.c:271
CodePtr FC Pl_Switch_On_Term_Var_Stc(CodePtr c_var, CodePtr c_stc)
Definition: wam_inst.c:1018
WamWord FC Pl_Put_X_Variable(void)
Definition: wam_inst.c:401
Bool FC Pl_Unify_Atom(int atom)
Definition: wam_inst.c:738
Bool FC Pl_Get_Nil(WamWord start_word)
Definition: wam_inst.c:295
void FC Pl_Create_Choice_Point3(CodePtr codep_alt)
Definition: wam_inst.c:1372
Bool FC Pl_Unify_Value(WamWord start_word)
Definition: wam_inst.c:659
Bool FC Pl_Unify_Local_Value(WamWord start_word)
Definition: wam_inst.c:677
void FC Pl_Deallocate(void)
Definition: wam_inst.c:949
Bool FC Pl_Get_Integer(PlLong n, WamWord start_word)
Definition: wam_inst.c:257
Bool FC Pl_Get_List(WamWord start_word)
Definition: wam_inst.c:318
CodePtr FC Pl_Switch_On_Atom(SwtTbl t, int size)
Definition: wam_inst.c:1105
void FC Pl_Update_Choice_Point4(CodePtr codep_alt)
Definition: wam_inst.c:1463
CodePtr FC Pl_Switch_On_Term_Var_Atm(CodePtr c_var, CodePtr c_atm)
Definition: wam_inst.c:994
void FC Pl_Cut(WamWord b_word)
Definition: wam_inst.c:1177
WamWord FC Pl_Create_Functor_Arity_Tagged(char *func_str, int arity)
Definition: wam_inst.c:84
double FC Pl_Obtain_Float(WamWord *adr)
Definition: wam_inst.c:1255
WamWord FC Pl_Put_Atom(int atom)
Definition: wam_inst.c:478
Bool FC Pl_Unify(WamWord start_u_word, WamWord start_v_word)
void FC Pl_Create_Choice_Point2(CodePtr codep_alt)
Definition: wam_inst.c:1360
Bool FC Pl_Get_Atom_Tagged(WamWord w, WamWord start_word)
Definition: wam_inst.c:192
void FC Pl_Delete_Choice_Point2(void)
Definition: wam_inst.c:1515
intptr_t PlLong
Definition: gprolog.h:88
CodePtr FC Pl_Switch_On_Term(CodePtr c_var, CodePtr c_atm, CodePtr c_int, CodePtr c_lst, CodePtr c_stc)
Definition: wam_inst.c:967
WamWord FC Pl_Put_Y_Variable(WamWord *y_adr)
Definition: wam_inst.c:422
void FC Pl_Delete_Choice_Point(int arity)
Definition: wam_inst.c:1482
void Pl_Defeasible_Close(Bool undo_before)
Definition: wam_inst.c:1584
void Pl_Defeasible_Open()
Definition: wam_inst.c:1558
WamWord FC Pl_Globalize_If_In_Local(WamWord start_word)
Definition: wam_inst.c:891
void FC Pl_Update_Choice_Point1(CodePtr codep_alt)
Definition: wam_inst.c:1427
Bool FC Pl_Get_Structure(int func, int arity, WamWord start_word)
Definition: wam_inst.c:387
Bool FC Pl_Get_Integer_Tagged(WamWord w, WamWord start_word)
Definition: wam_inst.c:229
Definition: wam_inst.h:249
void FC Pl_Allocate(int n)
Definition: wam_inst.c:916
WamWord FC Pl_Put_Float(double n)
Definition: wam_inst.c:520
Bool FC Pl_Unify_Structure(int func, int arity)
Definition: wam_inst.c:878
void FC Pl_Delete_Choice_Point3(void)
Definition: wam_inst.c:1527
void FC Pl_Update_Choice_Point0(CodePtr codep_alt)
Definition: wam_inst.c:1418
Bool FC Pl_Unify_Integer_Tagged(WamWord w)
Definition: wam_inst.c:752
WamWord FC Pl_Put_Structure_Tagged(WamWord w)
Definition: wam_inst.c:567
void FC Pl_Unify_Void(int n)
Definition: wam_inst.c:630
Bool FC Pl_Unify_Structure_Tagged(WamWord w)
Definition: wam_inst.c:854
PlLong key
Definition: wam_inst.h:251
WamWord FC Pl_Unify_Variable(void)
Definition: wam_inst.c:599
int t[10]
Definition: asm.c:28
void FC Pl_Create_Choice_Point4(CodePtr codep_alt)
Definition: wam_inst.c:1385
WamWord FC Pl_Put_Atom_Tagged(WamWord w)
Definition: wam_inst.c:464
SwtTbl FC Pl_Create_Swt_Table(int size)
Definition: wam_inst.c:101
WamWord FC Pl_Put_Structure(int func, int arity)
Definition: wam_inst.c:585
WamWord FC Pl_Put_Unsafe_Value(WamWord start_word)
Definition: wam_inst.c:436
void FC Pl_Update_Choice_Point(CodePtr codep_alt, int arity)
Definition: wam_inst.c:1405
WamWord FC Pl_Put_List(void)
Definition: wam_inst.c:552
CodePtr codep
Definition: wam_inst.h:252
Bool FC Pl_Unify_Integer(PlLong n)
Definition: wam_inst.c:787
CodePtr FC Pl_Switch_On_Term_Var_Atm_Lst(CodePtr c_var, CodePtr c_atm, CodePtr c_lst)
Definition: wam_inst.c:1042
Bool FC Pl_Unify_List(void)
Definition: wam_inst.c:831
void FC Pl_Create_Choice_Point(CodePtr codep_alt, int arity)
Definition: wam_inst.c:1327
WamWord FC Pl_Get_Current_Choice(void)
Definition: wam_inst.c:1163
Bool FC Pl_Get_Structure_Tagged(WamWord w, WamWord start_word)
Definition: wam_inst.c:348
void FC Pl_Create_Choice_Point0(CodePtr codep_alt)
Definition: wam_inst.c:1340
long WamWord
Definition: LINUX_SIGSEGV.c:4
void FC Pl_Delete_Choice_Point1(void)
Definition: wam_inst.c:1504
PlLong FC Pl_Switch_On_Integer(void)
Definition: wam_inst.c:1127
SwtInf * SwtTbl
Definition: wam_inst.h:256
void Pl_Defeasible_Undo()
Definition: wam_inst.c:1571
WamWord FC Pl_Put_Nil(void)
Definition: wam_inst.c:538
Bool FC Pl_Unify_Atom_Tagged(WamWord w)
Definition: wam_inst.c:707
CodePtr FC Pl_Switch_On_Structure(SwtTbl t, int size)
Definition: wam_inst.c:1145
void FC Pl_Global_Push_Float(double n)
Definition: wam_inst.c:1235
Bool FC Pl_Unify_Nil(void)
Definition: wam_inst.c:801
void FC Pl_Soft_Cut(WamWord b_word)
Definition: wam_inst.c:1191
WamWord FC Pl_Put_Integer(PlLong n)
Definition: wam_inst.c:506
Bool FC Pl_Unify_Occurs_Check(WamWord start_u_word, WamWord start_v_word)
CodePtr FC Pl_Switch_On_Term_Var_Atm_Stc(CodePtr c_var, CodePtr c_atm, CodePtr c_stc)
Definition: wam_inst.c:1069
int Bool
Definition: bool.h:65
void FC Pl_Untrail(WamWord *low_adr)
Definition: wam_inst.c:1600
#define FC
Definition: arch_dep.h:294
void FC Pl_Create_Choice_Point1(CodePtr codep_alt)
Definition: wam_inst.c:1349
void FC Pl_Create_Swt_Atm_Element(SwtTbl t, int size, int atom, CodePtr codep)
Definition: wam_inst.c:121
void FC Pl_Update_Choice_Point2(CodePtr codep_alt)
Definition: wam_inst.c:1438