#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)) |