GNU PROLOG with UTF8 support
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
wam_inst.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------*
2  * GNU Prolog *
3  * *
4  * Part : Prolog engine *
5  * File : wam_inst.h *
6  * Descr.: WAM instruction implementation - header file *
7  * Author: Daniel Diaz *
8  * *
9  * Copyright (C) 1999-2015 Daniel Diaz *
10  * *
11  * This file is part of GNU Prolog *
12  * *
13  * GNU Prolog is free software: you can redistribute it and/or *
14  * modify it under the terms of either: *
15  * *
16  * - the GNU Lesser General Public License as published by the Free *
17  * Software Foundation; either version 3 of the License, or (at your *
18  * option) any later version. *
19  * *
20  * or *
21  * *
22  * - the GNU General Public License as published by the Free *
23  * Software Foundation; either version 2 of the License, or (at your *
24  * option) any later version. *
25  * *
26  * or both in parallel, as here. *
27  * *
28  * GNU Prolog is distributed in the hope that it will be useful, *
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
31  * General Public License for more details. *
32  * *
33  * You should have received copies of the GNU General Public License and *
34  * the GNU Lesser General Public License along with this program. If *
35  * not, see http://www.gnu.org/licenses/. *
36  *-------------------------------------------------------------------------*/
37 
38 
39 #if 0
40 #define GARBAGE_COLLECTOR
41 #endif
42 
43 
44 /*---------------------------------*
45  * Constants *
46  *---------------------------------*/
47 
48 #define NOT_A_WAM_WORD Tag_REF(0)
49 
50 #define NIL_WORD Tag_ATM(ATOM_NIL)
51 
52 
53 
54 
55  /* Read/Write Modes */
56 
57  /* if S==NULL iff we are in the write mode */
58 
59 #define WRITE_MODE NULL
60 
61 
62 
63 
64  /* Environment Frame */
65 
66 #ifdef GARBAGE_COLLECTOR
67 
68 #define ENVIR_STATIC_SIZE 4
69 
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)]))
75 
76 #define ENVIR_NAMES {"CPE", "BCIE", "EE", "NBYE"}
77 
78 #else
79 
80 #define ENVIR_STATIC_SIZE 3
81 
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)]))
86 
87 #define ENVIR_NAMES {"CPE", "BCIE", "EE"}
88 
89 #endif
90 
91 
92  /* Choice Point Frame */
93 
94 #define CHOICE_STATIC_SIZE 8
95 
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)]))
105 
106 #define CHOICE_NAMES {"ALTB", "CPB", "BCIB", "EB", "BB", \
107  "HB", "TRB", "CSB"}
108 
109 
110 
111 
112  /* Wam Objects Manipulation */
113 
114  /* Trail Tags */
115 
116 #define NB_OF_TRAIL_TAGS 4
117 
118 #define TUV 0 /* Trail Unbound Variable */
119 #define TOV 1 /* Trail One Value */
120 #define TMV 2 /* Trail Multiple Values */
121 #define TFC 3 /* Trail for Function Call */
122 
123 
124 #define TRAIL_TAG_NAMES {"TUV", "TOV", "TMV", "TFC"}
125 
126 
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))
130 
131 
132 
133 
134  /* Functor/arity */
135 
136 #define ATOM_MAX_BITS (sizeof(PlULong) * 8 - 9)
137 
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)
141 
142 
143 #ifndef NO_USE_FD_SOLVER
144 #define Dont_Separate_Tag(tag_mask) ((tag_mask) == TAG_FDV_MASK)
145 #else
146 #define Dont_Separate_Tag(tag_mask) (0)
147 #endif
148 
149 
150 #define Do_Copy_Of_Word(tag_mask, word) \
151  if (Dont_Separate_Tag(tag_mask)) \
152  word = Tag_REF(UnTag_Address(word))
153 
154 
155 
156  /* Unbound Variables */
157 
158 #define Make_Self_Ref(adr) (Tag_REF(adr))
159 
160 
161 
162 
163  /* Atom */
164 
165 
166 
167 
168  /* Integer */
169 
170 #define INT_GREATEST_VALUE (((PlLong)1<<(WORD_SIZE-TAG_SIZE-1))-1)
171 #define INT_LOWEST_VALUE ((-INT_GREATEST_VALUE)-1)
172 
173 
174 
175 
176  /* List */
177 
178 #define OFFSET_CAR 0
179 
180 #define Car(adr) (((WamWord *) adr)[OFFSET_CAR])
181 #define Cdr(adr) (((WamWord *) adr)[OFFSET_CAR+1])
182 
183 
184 
185 
186  /* Structure */
187 
188 #define OFFSET_ARG 1
189 
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])
194  /* i in 0..arity-1 */
195 
196 
197 
198 
199  /* Stacks */
200 
201 #define Global_Push(word) (*H++ = (WamWord) (word))
202 
203 #define Global_Pop (*--H)
204 
205 
206 
207 
208 #define Trail_Push(word) (*TR++ = (WamWord) (word))
209 
210 #define Trail_Pop (*--TR)
211 
212 
213 
214 
215 #define Is_A_Local_Adr(adr) ((adr) >= LSSA)
216 
217 
218 
219 
220  /* Cut Management */
221 
222 #define From_B_To_WamWord(b) (Tag_INT((b) - LSSA))
223 #define From_WamWord_To_B(word) (LSSA + UnTag_INT(word))
224 
225 
226 
227 
228  /* CP management */
229 
230 #if defined(M_sparc) || defined(M_sparc64)
231 
232 #define Adjust_CP(cp) ((WamCont) ((PlULong) (cp) - 8))
233 #define UnAdjust_CP(cp) ((WamCont) ((PlULong) (cp) + 8))
234 
235 #else
236 
237 #define Adjust_CP(p) ((WamCont) (p))
238 #define UnAdjust_CP(cp) (cp)
239 
240 #endif
241 
242 
243 #ifndef FRAMES_ONLY
244 
245 /*---------------------------------*
246  * Type Definitions *
247  *---------------------------------*/
248 
249 typedef struct /* Switch item information */
250 { /* ------------------------------- */
251  PlLong key; /* key: atm, int (if no_opt), f/n */
252  CodePtr codep; /* compiled code pointer if static */
253 }
254 SwtInf;
255 
256 typedef SwtInf *SwtTbl;
257 
258 
259 
260 
261 /*---------------------------------*
262  * Global Variables *
263  *---------------------------------*/
264 
265 /*---------------------------------*
266  * Function Prototypes *
267  *---------------------------------*/
268 
269 WamWord FC Pl_Create_Functor_Arity_Tagged(char *func_str, int arity);
270 
271 SwtTbl FC Pl_Create_Swt_Table(int size);
272 
273 void FC Pl_Create_Swt_Atm_Element(SwtTbl t, int size, int atom, CodePtr codep);
274 
275 void FC Pl_Create_Swt_Stc_Element(SwtTbl t, int size, int func, int arity,
276  CodePtr codep);
277 
278 Bool FC Pl_Get_Atom_Tagged(WamWord w, WamWord start_word);
279 
280 Bool FC Pl_Get_Atom(int atom, WamWord start_word);
281 
283 
284 Bool FC Pl_Get_Integer(PlLong n, WamWord start_word);
285 
286 Bool FC Pl_Get_Float(double n, WamWord start_word);
287 
288 Bool FC Pl_Get_Nil(WamWord start_word);
289 
290 Bool FC Pl_Get_List(WamWord start_word);
291 
293 
294 Bool FC Pl_Get_Structure(int func, int arity, WamWord start_word);
295 
297 
299 
301 
303 
304 WamWord FC Pl_Put_Atom(int atom);
305 
307 
309 
310 WamWord FC Pl_Put_Float(double n);
311 
312 WamWord FC Pl_Put_Nil(void);
313 
314 WamWord FC Pl_Put_List(void);
315 
317 
318 WamWord FC Pl_Put_Structure(int func, int arity);
319 
321 
322 void FC Pl_Unify_Void(int n);
323 
324 Bool FC Pl_Unify_Value(WamWord start_word);
325 
326 Bool FC Pl_Unify_Local_Value(WamWord start_word);
327 
329 
330 Bool FC Pl_Unify_Atom(int atom);
331 
333 
335 
336 Bool FC Pl_Unify_Nil(void);
337 
338 Bool FC Pl_Unify_List(void);
339 
341 
342 Bool FC Pl_Unify_Structure(int func, int arity);
343 
345 
346 void FC Pl_Allocate(int n);
347 
348 void FC Pl_Deallocate(void);
349 
350 CodePtr FC Pl_Switch_On_Term(CodePtr c_var, CodePtr c_atm, CodePtr c_int,
351  CodePtr c_lst, CodePtr c_stc);
352 CodePtr FC Pl_Switch_On_Term_Var_Atm(CodePtr c_var, CodePtr c_atm);
353 CodePtr FC Pl_Switch_On_Term_Var_Stc(CodePtr c_var, CodePtr c_stc);
354 CodePtr FC Pl_Switch_On_Term_Var_Atm_Lst(CodePtr c_var, CodePtr c_atm,
355  CodePtr c_lst);
356 CodePtr FC Pl_Switch_On_Term_Var_Atm_Stc(CodePtr c_var, CodePtr c_atm,
357  CodePtr c_stc);
358 
359 CodePtr FC Pl_Switch_On_Atom(SwtTbl t, int size);
360 
362 
363 CodePtr FC Pl_Switch_On_Structure(SwtTbl t, int size);
364 
366 
367 void FC Pl_Cut(WamWord b_word);
368 
369 void FC Pl_Soft_Cut(WamWord b_word);
370 
371 void FC Pl_Global_Push_Float(double n);
372 
373 double FC Pl_Obtain_Float(WamWord *adr);
374 
375 
376 void FC Pl_Create_Choice_Point(CodePtr codep_alt, int arity);
377 void FC Pl_Create_Choice_Point0(CodePtr codep_alt);
378 void FC Pl_Create_Choice_Point1(CodePtr codep_alt);
379 void FC Pl_Create_Choice_Point2(CodePtr codep_alt);
380 void FC Pl_Create_Choice_Point3(CodePtr codep_alt);
381 void FC Pl_Create_Choice_Point4(CodePtr codep_alt);
382 
383 
384 void FC Pl_Update_Choice_Point(CodePtr codep_alt, int arity);
385 void FC Pl_Update_Choice_Point0(CodePtr codep_alt);
386 void FC Pl_Update_Choice_Point1(CodePtr codep_alt);
387 void FC Pl_Update_Choice_Point2(CodePtr codep_alt);
388 void FC Pl_Update_Choice_Point3(CodePtr codep_alt);
389 void FC Pl_Update_Choice_Point4(CodePtr codep_alt);
390 
391 void FC Pl_Delete_Choice_Point(int arity);
392 void FC Pl_Delete_Choice_Point0(void);
393 void FC Pl_Delete_Choice_Point1(void);
394 void FC Pl_Delete_Choice_Point2(void);
395 void FC Pl_Delete_Choice_Point3(void);
396 void FC Pl_Delete_Choice_Point4(void);
397 
398 
399 void Pl_Defeasible_Open();
400 void Pl_Defeasible_Undo();
401 void Pl_Defeasible_Close(Bool undo_before);
402 
403 
404 
405 void FC Pl_Untrail(WamWord *low_adr);
406 
407 Bool FC Pl_Unify(WamWord start_u_word, WamWord start_v_word);
408 
409 Bool FC Pl_Unify_Occurs_Check(WamWord start_u_word, WamWord start_v_word);
410 
411 
412 #endif /* FRAME_ONLY */
413 
414 /*---------------------------------*
415  * Auxiliary engine macros *
416  *---------------------------------*/
417 
418 
419  /*---------------------------------------------------------------*
420  * DEREF dereferences the word start_word and sets : *
421  * word : dereferenced word *
422  * tag_mask: dereferenced word's tag mask *
423  *---------------------------------------------------------------*/
424 
425 #if 0
426 #define DEREF_STATS
427 #endif
428 
429 #ifdef DEREF_STATS
430 PlLong nb_deref;
431 PlLong chain_len;
432 #define DEREF_COUNT(x) x++
433 #else
434 #define DEREF_COUNT(x)
435 #endif
436 
437 
438 #define DEREF(start_word, word, tag_mask) \
439  do \
440  { \
441  WamWord deref_last_word; \
442  \
443  word = start_word; \
444  \
445  DEREF_COUNT(nb_deref); \
446  do \
447  { \
448  DEREF_COUNT(chain_len); \
449  deref_last_word = word; \
450  tag_mask = Tag_Mask_Of(word); \
451  if (tag_mask != TAG_REF_MASK) \
452  break; \
453  word = *(UnTag_REF(word)); \
454  } \
455  while (word != deref_last_word); \
456  } \
457  while (0)
458 
459 
460 
461  /* Trail Stack Management */
462 
463 #define Word_Needs_Trailing(adr) \
464  ((adr) < HB1 || (Is_A_Local_Adr(adr) && (adr) < B))
465 
466 
467 
468 #define Bind_UV(adr, word) \
469  do \
470  { \
471  if (Word_Needs_Trailing(adr)) \
472  Trail_UV(adr); \
473  *(adr) = (word); \
474  } \
475  while (0)
476 
477 
478 
479 
480 #define Bind_OV(adr, word) \
481  do \
482  { \
483  if (Word_Needs_Trailing(adr)) \
484  Trail_OV(adr); \
485  *(adr) = (word); \
486  } \
487  while (0)
488 
489 
490 
491 
492 #define Bind_MV(adr, nb, real_adr) \
493  do \
494  { \
495  if (Word_Needs_Trailing(adr)) \
496  Trail_MV(adr, nb); \
497  Mem_Word_Cpy(adr, real_adr, nb); \
498  } \
499  while (0)
500 
501 
502 
503 
504 #define Trail_UV(adr) \
505  Trail_Push(Trail_Tag_Value(TUV, adr))
506 
507 
508 #define Trail_OV(adr) \
509  do \
510  { \
511  Trail_Push(*(adr)); \
512  Trail_Push(Trail_Tag_Value(TOV, adr)); \
513  } \
514  while (0)
515 
516 
517 
518 
519 #define Trail_MV(adr, nb) \
520  do \
521  { \
522  Mem_Word_Cpy(TR, adr, nb); \
523  TR += nb; \
524  Trail_Push(nb); \
525  Trail_Push(Trail_Tag_Value(TMV, adr)); \
526  } \
527  while (0)
528 
529 
530 
531 
532 #define Trail_FC(fct, nb, arg) \
533  do \
534  { \
535  Mem_Word_Cpy(TR, arg, nb); \
536  TR += nb; \
537  Trail_Push(nb); \
538  Trail_Push(fct); /*fct adr not aligned*/ \
539  Trail_Push(Trail_Tag_Value(TFC, 0)); \
540  } \
541  while (0)
542 
543 
544 
545 
546 #define Assign_B(newB) (B = (newB), HB1 = HB(B))
547 
548 #define Delete_Last_Choice_Point() Assign_B(BB(B))
549 
550 
551 
552 
553  /* Globalization */
554 
555 #define Globalize_Local_Unbound_Var(adr, res_word) \
556  do \
557  { \
558  WamWord *cur_H = H; \
559  \
560  res_word = Make_Self_Ref(cur_H); \
561  *cur_H = res_word; \
562  H++; \
563  Bind_UV(adr, res_word); \
564  } \
565  while (0)
566 
567 
568 
569 
570 #define Mem_Word_Cpy(dst, src, nb) \
571  do \
572  { \
573  register PlLong *s = (PlLong *) (src); \
574  register PlLong *d = (PlLong *) (dst); \
575  register int counter = (nb); \
576  \
577  do \
578  *d++ = *s++; \
579  while (--counter); \
580  } \
581  while (0)
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