#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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: if (asynint_val && (asynint_val & PROFINT_MARK)) { \ asynint_val &= ~PROFINT_MARK; \ log_prog_ctr(lpcreg); \ } \ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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))) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
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)); } |
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
||||||||||||
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
|
|
1.4.5