#include "xsb_config.h"#include "basictypes.h"#include "box_defines.h"Defines | |
| #define | PRE_IMAGE_TRAIL |
| #define | PRE_IMAGE_MARK 1 |
| #define | TRAIL_FRAME_SIZE 4 |
| #define | pushtrail0(addr, val) |
| #define | push_pre_image_trail0(addr, new_value) |
| #define | conditional(a) |
| #define | pushtrail(a, v) if (conditional(a)) { pushtrail0(a,v); } |
| #define | dpushtrail(a, v) pushtrail0(a,v) |
| #define | push_pre_image_trail(a, new_v) if (conditional(a)) {push_pre_image_trail0(a, new_v)} |
| #define | bind_int_tagged(addr, val) |
| #define | bind_float_tagged(addr, val) |
| #define | bind_int(addr, val) |
| #define | bind_float(addr, val) pushtrail(addr, makefloat(val)); bld_float(addr, val) |
| #define | bind_boxedint(addr, value) |
| #define | bind_boxedfloat(addr, value) |
| #define | bind_oint(addr, val) |
| #define | bind_ref(addr, val) |
| #define | dbind_ref(addr, val) |
| #define | bind_cs(addr, str) |
| #define | bind_string(addr, str) |
| #define | bind_nil(addr) |
| #define | bind_list(addr, list) |
| #define | bind_attv(addr, attv) |
| #define | bind_copy(addr, val) pushtrail(addr, val); *(addr) = val |
| #define | untrail(addr) bld_free(addr) |
| #define | untrail2(trail_ptr, addr) |
| #define | ereg_on_top(t_ereg) t_ereg < ebreg |
| #define | efreg_on_top(t_ereg) efreg < ebreg && efreg < t_ereg |
| #define | nbldval(OP1) |
|
|
Value: |
|
|
Value: |
|
|
Value: {Cell binttemp = makecs(hreg); \
new_heap_functor(hreg,box_psc); \
bld_int(hreg,((ID_BOXED_INT << BOX_ID_OFFSET ) )); hreg++; \
bld_int(hreg,INT_LOW_24_BITS(value)); hreg++; \
bld_int(hreg,((value) & LOW_24_BITS_MASK)); hreg++; \
pushtrail(addr, binttemp); \
cell(addr) = binttemp;}
|
|
|
|
|
|
Value: |
|
|
|
|
|
Value: pushtrail(addr, (Cell) val);\ bld_float_tagged(addr, val) |
|
|
Value: |
|
|
Value: pushtrail(addr, (Cell) val); \ bld_int_tagged(addr, val) |
|
|
Value: |
|
|
Value: |
|
|
Value: if (int_overflow(val)) { \ bind_boxedint(addr, val); \ } else {bind_int(addr, val);} |
|
|
Value: |
|
|
Value: pushtrail(addr, makestring(str));\ bld_string(addr,str) |
|
|
Value: |
|
|
Value: dpushtrail(addr, val);\ bld_ref(addr, val) |
|
|
|
|
|
|
|
|
|
|
|
Value: { \
XSB_Deref(OP1); \
if ( isnonvar(OP1) || \
( /* (CPtr)(OP1) >= glstack.low && */ \
(CPtr)(OP1) <= top_of_heap ) ) { \
new_heap_node(hreg, OP1); \
} \
else { /* local stack vars point to heap vars and not vice-versa! */ \
bind_ref((CPtr)(OP1), hreg); \
new_heap_free(hreg); \
} \
}
|
|
|
|
|
|
|
|
|
|
|
|
Value: if (trfreg > trreg) { \ if ((char *)trfreg > ((char *)(top_of_cpstack) - \ TRAIL_FRAME_SIZE*sizeof(CPtr))) { \ handle_tcpstack_overflow(CTXT); \ } \ *(trfreg + 4) = (CPtr) trreg; \ trreg = trfreg + 4; \ *(trreg - 1) = (CPtr) (new_value); \ *(trreg - 2) = (CPtr) ((Cell) (addr) | PRE_IMAGE_MARK); \ *(trreg - 3) = (CPtr) (cell(addr)); \ } \ else { \ if ((char *)trreg > ((char *)(top_of_cpstack) - \ TRAIL_FRAME_SIZE*sizeof(CPtr))) { \ handle_tcpstack_overflow(CTXT); \ } \ trreg = trreg + 4; \ *trreg = (CPtr) trreg - 4; \ *(trreg - 1) = (CPtr) (new_value); \ *(trreg - 2) = (CPtr) ((Cell) (addr) | PRE_IMAGE_MARK); \ *(trreg - 3) = (CPtr) (cell(addr)); \ } |
|
|
|
|
|
Value: if (trfreg > trreg) {\ if ((char *)trfreg > \ ((char *)(top_of_cpstack) - (TRAIL_FRAME_SIZE*sizeof(CPtr)))) {\ handle_tcpstack_overflow(CTXT);\ }\ *(trfreg+3) = (CPtr) trreg;\ trreg = trfreg + 3;\ *(trreg-1) = (CPtr) val;\ *(trreg-2) = addr;\ }\ else {\ if ((char *)trreg > \ ((char *)(top_of_cpstack) - (TRAIL_FRAME_SIZE*sizeof(CPtr)))) {\ handle_tcpstack_overflow(CTXT);\ }\ trreg = trreg+3;\ *trreg = (CPtr) trreg-3;\ *(trreg-1) = (CPtr) val;\ *(trreg-2) = addr;\ } |
|
|
|
|
|
|
|
|
Value: if ((addr) & PRE_IMAGE_MARK) { \ bld_copy0((CPtr)((addr) - PRE_IMAGE_MARK), \ cell((CPtr)trail_ptr - 3)); \ } \ else \ bld_free((CPtr)(addr)) |
1.4.5