00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #define realloc_ref(cell_ptr, cell_val) \
00032 { if (heap_bot <= cell_val) \
00033 { if (cell_val <= heap_top) \
00034 *cell_ptr = cell_val + heap_offset ; \
00035 else if (cell_val <= ls_bot) \
00036 *cell_ptr = cell_val + local_offset ; \
00037 } }
00038
00039 #define realloc_ref_pre_image(cell_ptr, cell_val) \
00040 { if (heap_bot <= cell_val) \
00041 \
00042 { if (cell_val <= heap_top) \
00043 *cell_ptr = (CPtr) ((Cell)(cell_val + heap_offset) \
00044 | PRE_IMAGE_MARK) ; \
00045 else if (cell_val <= ls_bot) \
00046 *cell_ptr = (CPtr) ((Cell) (cell_val + local_offset) \
00047 | PRE_IMAGE_MARK) ; \
00048 } }
00049
00050 #define reallocate_heap_or_ls_pointer(cell_ptr) \
00051 cell_val = (Cell)*cell_ptr ; \
00052 switch (cell_tag(cell_val)) { \
00053 case XSB_REF: \
00054 case XSB_REF1 : \
00055 realloc_ref(cell_ptr,(CPtr)cell_val); \
00056 break ; \
00057 case XSB_STRUCT : \
00058 if (heap_bot<=(clref_val(cell_val)) && (clref_val(cell_val))<heap_top)\
00059 *cell_ptr = (CPtr)makecs((Cell)(clref_val(cell_val)+heap_offset)) ; \
00060 break ; \
00061 case XSB_LIST : \
00062 if (heap_bot<=(clref_val(cell_val)) && (clref_val(cell_val))<heap_top)\
00063 *cell_ptr = (CPtr)makelist((Cell)(clref_val(cell_val)+heap_offset));\
00064 break ; \
00065 case XSB_ATTV: \
00066 if (heap_bot<=(clref_val(cell_val)) && (clref_val(cell_val))<heap_top)\
00067 *cell_ptr = (CPtr)makeattv((Cell)(clref_val(cell_val)+heap_offset));\
00068 break ; \
00069 default : \
00070 break ; \
00071 }
00072
00073
00074 #define FROM_NOWHERE 0
00075 #define FROM_LS 1
00076 #define FROM_CP 2
00077 #define FROM_TR 3
00078 #define FROM_AREG 4
00079 #define FROM_HEAP 5
00080 #define FROM_COMPL 6
00081
00082 #define TO_NOWHERE 0
00083 #define TO_LS 1
00084 #define TO_CP 2
00085 #define TO_TR 3
00086 #define TO_AREG 4
00087 #define TO_HEAP 5
00088 #define TO_COMPL 6
00089
00090
00091