emuloop.c File Reference

#include "xsb_config.h"
#include "xsb_debug.h"
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include "auxlry.h"
#include "cell_xsb.h"
#include "register.h"
#include "error_xsb.h"
#include "inst_xsb.h"
#include "psc_xsb.h"
#include "deref.h"
#include "memory_xsb.h"
#include "heap_xsb.h"
#include "sig_xsb.h"
#include "context.h"
#include "varstring_xsb.h"
#include "emudef.h"
#include "loader_xsb.h"
#include "binding.h"
#include "flags_xsb.h"
#include "trie_internals.h"
#include "choice.h"
#include "sw_envs.h"
#include "macro_xsb.h"
#include "tables.h"
#include "subinst.h"
#include "scc_xsb.h"
#include "subp.h"
#include "tr_utils.h"
#include "cut_xsb.h"
#include "export.h"
#include "orient_xsb.h"
#include "io_builtins_xsb.h"
#include "unify_xsb.h"
#include "emuloop_aux.h"
#include "remove_unf.h"
#include "thread_xsb.h"
#include "deadlock.h"
#include "rw_lock.h"
#include "debug_xsb.h"
#include "hash_xsb.h"
#include "struct_manager.h"
#include "builtin.h"
#include "tr_delay.h"
#include "tr_code_xsb_i.h"
#include "schedrev_xsb_i.h"
#include "wfs_xsb_i.h"
#include "complete_local.h"
#include "slginsts_xsb_i.h"
#include "tc_insts_xsb_i.h"

Defines

#define XSB_Debug_Instr
#define XSB_Profile_Instr
#define handle_xsb_profile_interrupt
#define Def1op
#define Def1fop
#define Def2ops
#define Def2fops
#define Def3ops
#define DefOps13
#define DefGlobOps   register Cell op1,op2; register CPtr op3; float fop2;
#define XSB_Next_Instr()   goto contcase
#define XSB_End_Instr()   goto contcase; }
#define XSB_Start_Instr_Chained(Instr, Label)   case Instr:
#define XSB_Start_Instr(Instr, Label)   case Instr: {
#define get_axx   (lpcreg[1])
#define get_vxx   (ereg-(Cell)lpcreg[1])
#define get_rxx   (rreg+lpcreg[1])
#define get_xax   (lpcreg[2])
#define get_xvx   (ereg-(Cell)lpcreg[2])
#define get_xrx   (rreg+lpcreg[2])
#define get_xxa   (lpcreg[3])
#define get_xxv   (ereg-(Cell)lpcreg[3])
#define get_xxr   (rreg+lpcreg[3])
#define get_xxxl   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxs   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxc   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxn   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxg   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxi   (*(CPtr)(lpcreg+sizeof(Cell)))
#define get_xxxf   (*(float *)(lpcreg+sizeof(Cell)))
#define get_xxxxi   (*(CPtr)(lpcreg+sizeof(Cell)*2))
#define get_xxxxl   (*(CPtr)(lpcreg+sizeof(Cell)*2))
#define Op1(Expr)   op1 = (Cell)Expr
#define Op2(Expr)   op2 = (Cell)Expr
#define Op2f(Expr)   fop2 = (float)Expr
#define Op3(Expr)   op3 = (CPtr)Expr
#define Register(Expr)   (cell(Expr))
#define Variable(Expr)   (cell(Expr))
#define size_none   0
#define size_xxx   1
#define size_xxxX   2
#define size_xxxXX   3
#define ADVANCE_PC(InstrSize)   (lpcreg += InstrSize*sizeof(Cell))
#define WRITE   1
#define READFLAG   0
#define POST_LPCREG_DECL
#define Fail1   lpcreg = cp_pcreg(breg)
#define restore_trail_condition_registers(breg)
#define struct_hash_value(op1)
#define ARITHPROC(OP, STROP)
#define jump_cond_fail(Condition)   if (Condition) {ADVANCE_PC(size_xxxX);} else lpcreg = (byte *)get_xxxl

Functions

void bld_boxedfloat (CTXTdeclc CPtr addr, Float value)
Float make_float_from_ints (UInteger high, UInteger low)
int builtin_call (CTXTdeclc byte)
int unifunc_call (CTXTdeclc int, CPtr)
Pair build_call (CTXTdeclc Psc)
int is_proper_list (Cell term)
int is_most_general_term (Cell term)
void log_prog_ctr (byte *)
int emuloop (CTXTdeclc byte *startaddr)
DllExport int call_conv xsb (CTXTdeclc int flag, int argc, char *argv[])

Variables

CPtr ans_var_pos_reg
Cell builtin_table [BUILTIN_TBL_SZ][2]
long prof_flag
xsbBool neg_delay
int xwammode
int level_num
char * xsb_default_segfault_msg
jmp_buf xsb_abort_fallback_environment
char * xsb_segfault_message

Define Documentation

#define ADVANCE_PC InstrSize   )     (lpcreg += InstrSize*sizeof(Cell))
 

#define ARITHPROC OP,
STROP   ) 
 

#define Def1fop
 

#define Def1op
 

#define Def2fops
 

#define Def2ops
 

#define Def3ops
 

#define DefGlobOps   register Cell op1,op2; register CPtr op3; float fop2;
 

#define DefOps13
 

#define Fail1   lpcreg = cp_pcreg(breg)
 

#define get_axx   (lpcreg[1])
 

#define get_rxx   (rreg+lpcreg[1])
 

#define get_vxx   (ereg-(Cell)lpcreg[1])
 

#define get_xax   (lpcreg[2])
 

#define get_xrx   (rreg+lpcreg[2])
 

#define get_xvx   (ereg-(Cell)lpcreg[2])
 

#define get_xxa   (lpcreg[3])
 

#define get_xxr   (rreg+lpcreg[3])
 

#define get_xxv   (ereg-(Cell)lpcreg[3])
 

#define get_xxxc   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxf   (*(float *)(lpcreg+sizeof(Cell)))
 

#define get_xxxg   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxi   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxl   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxn   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxs   (*(CPtr)(lpcreg+sizeof(Cell)))
 

#define get_xxxxi   (*(CPtr)(lpcreg+sizeof(Cell)*2))
 

#define get_xxxxl   (*(CPtr)(lpcreg+sizeof(Cell)*2))
 

#define handle_xsb_profile_interrupt
 

Value:

if (asynint_val && (asynint_val & PROFINT_MARK)) {              \
      asynint_val &= ~PROFINT_MARK;                             \
      log_prog_ctr(lpcreg);                                     \
    }                                                           \

#define jump_cond_fail Condition   )     if (Condition) {ADVANCE_PC(size_xxxX);} else lpcreg = (byte *)get_xxxl
 

#define Op1 Expr   )     op1 = (Cell)Expr
 

#define Op2 Expr   )     op2 = (Cell)Expr
 

#define Op2f Expr   )     fop2 = (float)Expr
 

#define Op3 Expr   )     op3 = (CPtr)Expr
 

#define POST_LPCREG_DECL
 

#define READFLAG   0
 

#define Register Expr   )     (cell(Expr))
 

restore_trail_condition_registers breg   ) 
 

Value:

#define size_none   0
 

#define size_xxx   1
 

#define size_xxxX   2
 

#define size_xxxXX   3
 

#define struct_hash_value op1   ) 
 

Value:

(isboxedinteger(op1)?boxedint_val(op1): \
    (isboxedfloat(op1)?  \
     int_val(cell(clref_val(op1)+1)) ^ int_val(cell(clref_val(op1)+2)) ^ int_val(cell(clref_val(op1)+3)): \
     (Cell)get_str_psc(op1)))

#define Variable Expr   )     (cell(Expr))
 

#define WRITE   1
 

#define XSB_Debug_Instr
 

 
XSB_End_Instr  )     goto contcase; }
 

 
#define XSB_Next_Instr  )     goto contcase
 

#define XSB_Profile_Instr
 

#define XSB_Start_Instr Instr,
Label   )     case Instr: {
 

#define XSB_Start_Instr_Chained Instr,
Label   )     case Instr:
 


Function Documentation

void bld_boxedfloat CTXTdeclc CPtr  addr,
Float  value
[inline]
 

Pair build_call CTXTdeclc  Psc  ) 
 

int builtin_call CTXTdeclc byte   ) 
 

int emuloop CTXTdeclc byte startaddr  ) 
 

if (!isinteger(op1) || !isinteger(op2)) { arithmetic_abort(CTXTc op2, "'\\/'", op1); } else { bld_oint(op3, int_val(op2) | int_val(op1)); }

if (!isinteger(op1) || !isinteger(op2)) { arithmetic_abort(CTXTc op2, "'/\\'", op1); } else { bld_oint(op3, int_val(op2) & int_val(op1)); }

int is_most_general_term Cell  term  ) 
 

int is_proper_list Cell  term  ) 
 

void log_prog_ctr byte  ) 
 

Float make_float_from_ints UInteger  high,
UInteger  low
[inline]
 

int unifunc_call CTXTdeclc  int,
CPtr 
 

DllExport int call_conv xsb CTXTdeclc int  flag,
int  argc,
char *  argv[]
 


Variable Documentation

CPtr ans_var_pos_reg
 

Cell builtin_table[BUILTIN_TBL_SZ][2]
 

int level_num
 

xsbBool neg_delay
 

long prof_flag
 

jmp_buf xsb_abort_fallback_environment
 

char* xsb_default_segfault_msg
 

Initial value:

     "\n++Memory violation occurred during evaluation.\n++Please report this problem using the XSB bug tracking system accessible from\n++\t http://sourceforge.net/projects/xsb\n++Please supply the steps necessary to reproduce the bug.\n"

char* xsb_segfault_message
 

int xwammode
 


Generated on Wed Jul 26 13:26:53 2006 for XSB by  doxygen 1.4.5