fix some warnings

improve thread support.
This commit is contained in:
Vítor Santos Costa 2011-11-30 13:05:21 +00:00
parent e06560eff4
commit fec7019a79
7 changed files with 92 additions and 6 deletions

View File

@ -127,6 +127,8 @@ bool bpx_is_identical(TERM t1, TERM t2)
TERM bpx_get_call_arg(BPLONG i, BPLONG arity) TERM bpx_get_call_arg(BPLONG i, BPLONG arity)
{ {
CACHE_REGS
if (i < 1 || i > arity) { if (i < 1 || i > arity) {
bpx_raise("index out of range"); bpx_raise("index out of range");
} }
@ -245,6 +247,7 @@ TERM bpx_get_cdr(TERM t)
TERM bpx_build_var(void) TERM bpx_build_var(void)
{ {
CACHE_REGS
TERM term; TERM term;
REQUIRE_HEAP(1); REQUIRE_HEAP(1);
@ -260,6 +263,7 @@ TERM bpx_build_integer(BPLONG n)
TERM bpx_build_float(double x) TERM bpx_build_float(double x)
{ {
CACHE_REGS
REQUIRE_HEAP(4); REQUIRE_HEAP(4);
return encodefloat1(x); return encodefloat1(x);
} }
@ -274,6 +278,7 @@ TERM bpx_build_atom(const char *name)
TERM bpx_build_list(void) TERM bpx_build_list(void)
{ {
CACHE_REGS
TERM term; TERM term;
REQUIRE_HEAP(2); REQUIRE_HEAP(2);
@ -290,6 +295,7 @@ TERM bpx_build_nil(void)
TERM bpx_build_structure(const char *name, BPLONG arity) TERM bpx_build_structure(const char *name, BPLONG arity)
{ {
CACHE_REGS
SYM_REC_PTR sym; SYM_REC_PTR sym;
TERM term; TERM term;
@ -314,6 +320,7 @@ bool bpx_unify(TERM t1, TERM t2)
TERM bpx_string_2_term(const char *s) TERM bpx_string_2_term(const char *s)
{ {
CACHE_REGS
TERM term, vars; TERM term, vars;
int result; int result;

View File

@ -80,6 +80,27 @@ long int XTAG(TERM t)
} }
} }
extern inline TERM ADDTAG(void * t,int tag);
extern inline int is_UNIFIABLE(TERM t1, TERM t2);
extern inline int is_IDENTICAL(TERM t1, TERM t2);
extern inline char *bp_term_2_string(TERM t);
extern inline int bp_string_2_term(const char *s, TERM to, TERM tv);
extern inline SYM_REC_PTR insert(const char *name, int size, int arity);
extern inline int compare(TERM t1, TERM t2);
extern inline void write_term(TERM t);
extern inline void numberVarTermOpt(TERM t);
extern inline TERM unnumberVarTerm(TERM t, BPLONG_PTR pt1, BPLONG_PTR pt2);
extern inline int unifyNumberedTerms(TERM t1, TERM t2);
int bpx_call_term(TERM t);
int bpx_call_string(const char *s);
int bpx_call_string(const char *s);
int bpx_mount_query_string(const char *s);
int bpx_next_solution(void);
void bpx_write(TERM t);
int bpx_printf(const char *fmt, ...);
extern inline TERM ADDTAG(void * t,int tag) { extern inline TERM ADDTAG(void * t,int tag) {
if (tag == ATM) if (tag == ATM)
return MkAtomTerm((Atom)t); return MkAtomTerm((Atom)t);
@ -210,13 +231,13 @@ list_length(BPLONG t1, BPLONG t2)
#define PRE_NUMBER_VAR(X) #define PRE_NUMBER_VAR(X)
static inline void extern inline void
numberVarTermOpt(TERM t) numberVarTermOpt(TERM t)
{ {
YAP_NumberVars(t, 0); YAP_NumberVars(t, 0);
} }
static inline TERM extern inline TERM
unnumberVarTerm(TERM t, BPLONG_PTR pt1, BPLONG_PTR pt2) unnumberVarTerm(TERM t, BPLONG_PTR pt1, BPLONG_PTR pt2)
{ {
return YAP_UnNumberVars(t); return YAP_UnNumberVars(t);

View File

@ -170,6 +170,7 @@ int id_table_count(const ID_TABLE *this)
TERM unnumber_var_term(TERM term) TERM unnumber_var_term(TERM term)
{ {
CACHE_REGS
BPLONG mvn = -1; BPLONG mvn = -1;
return unnumberVarTerm(term, local_top, &mvn); return unnumberVarTerm(term, local_top, &mvn);
} }

View File

@ -15,6 +15,38 @@ char * bp_term_2_string(TERM);
/* unify.c */ /* unify.c */
int unify(TERM, TERM); int unify(TERM, TERM);
int prism_goal_id_register(TERM term);
int prism_sw_id_register(TERM term);
int prism_sw_ins_id_register(TERM term);
int prism_goal_id_get(TERM term);
int prism_sw_id_get(TERM term);
int prism_sw_ins_id_get(TERM term);
int prism_goal_count(void);
int prism_sw_count(void);
int prism_sw_ins_count(void);
TERM prism_goal_term(IDNUM i);
TERM prism_sw_term(IDNUM i);
TERM prism_sw_ins_term(IDNUM i);
char * prism_goal_string(IDNUM i);
char * prism_sw_string(IDNUM i);
char * prism_sw_ins_string(IDNUM i);
char * copy_prism_goal_string(IDNUM i);
char * copy_prism_sw_string(IDNUM i);
char * copy_prism_sw_ins_string(IDNUM i);
int pc_prism_id_table_init_0(void);
int pc_prism_goal_id_register_2(void);
int pc_prism_sw_id_register_2(void);
int pc_prism_sw_ins_id_register_2(void);
int pc_prism_goal_id_get_2(void);
int pc_prism_sw_id_get_2(void);
int pc_prism_sw_ins_id_get_2(void);
int pc_prism_goal_count_1(void);
int pc_prism_sw_count_1(void);
int pc_prism_sw_ins_count_1(void);
int pc_prism_goal_term_2(void);
int pc_prism_sw_term_2(void);
int pc_prism_sw_ins_term_2(void);
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
int prism_goal_id_register(TERM term) int prism_goal_id_register(TERM term)
@ -125,6 +157,7 @@ int pc_prism_id_table_init_0(void)
int pc_prism_goal_id_register_2(void) int pc_prism_goal_id_register_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -137,6 +170,7 @@ int pc_prism_goal_id_register_2(void)
int pc_prism_sw_id_register_2(void) int pc_prism_sw_id_register_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -149,6 +183,7 @@ int pc_prism_sw_id_register_2(void)
int pc_prism_sw_ins_id_register_2(void) int pc_prism_sw_ins_id_register_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -161,6 +196,7 @@ int pc_prism_sw_ins_id_register_2(void)
int pc_prism_goal_id_get_2(void) int pc_prism_goal_id_get_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -175,6 +211,7 @@ int pc_prism_goal_id_get_2(void)
int pc_prism_sw_id_get_2(void) int pc_prism_sw_id_get_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -188,6 +225,7 @@ int pc_prism_sw_id_get_2(void)
int pc_prism_sw_ins_id_get_2(void) int pc_prism_sw_ins_id_get_2(void)
{ {
CACHE_REGS
TERM term; TERM term;
IDNUM id; IDNUM id;
@ -201,21 +239,25 @@ int pc_prism_sw_ins_id_get_2(void)
int pc_prism_goal_count_1(void) int pc_prism_goal_count_1(void)
{ {
CACHE_REGS
return unify(MAKEINT(prism_goal_count()), ARG(1,1)); return unify(MAKEINT(prism_goal_count()), ARG(1,1));
} }
int pc_prism_sw_count_1(void) int pc_prism_sw_count_1(void)
{ {
CACHE_REGS
return unify(MAKEINT(prism_sw_count()), ARG(1,1)); return unify(MAKEINT(prism_sw_count()), ARG(1,1));
} }
int pc_prism_sw_ins_count_1(void) int pc_prism_sw_ins_count_1(void)
{ {
CACHE_REGS
return unify(MAKEINT(prism_sw_ins_count()), ARG(1,1)); return unify(MAKEINT(prism_sw_ins_count()), ARG(1,1));
} }
int pc_prism_goal_term_2(void) int pc_prism_goal_term_2(void)
{ {
CACHE_REGS
TERM id, term; TERM id, term;
id = ARG(1,2); id = ARG(1,2);
@ -227,6 +269,7 @@ int pc_prism_goal_term_2(void)
int pc_prism_sw_term_2(void) int pc_prism_sw_term_2(void)
{ {
CACHE_REGS
TERM id, term; TERM id, term;
id = ARG(1,2); id = ARG(1,2);
@ -239,6 +282,7 @@ int pc_prism_sw_term_2(void)
int pc_prism_sw_ins_term_2(void) int pc_prism_sw_ins_term_2(void)
{ {
CACHE_REGS
TERM id, term; TERM id, term;
id = ARG(1,2); id = ARG(1,2);

View File

@ -247,18 +247,21 @@ double random_gaussian(void)
int pc_random_auto_seed_1(void) int pc_random_auto_seed_1(void)
{ {
CACHE_REGS
BPLONG seed = (BPLONG)(time(NULL)); BPLONG seed = (BPLONG)(time(NULL));
return bpx_unify(ARG(1,1), bpx_build_integer(seed)); return bpx_unify(ARG(1,1), bpx_build_integer(seed));
} }
int pc_random_init_by_seed_1(void) int pc_random_init_by_seed_1(void)
{ {
CACHE_REGS
init_genrand((unsigned long)(bpx_get_integer(ARG(1,1)))); init_genrand((unsigned long)(bpx_get_integer(ARG(1,1))));
return BP_TRUE; return BP_TRUE;
} }
int pc_random_init_by_list_1(void) int pc_random_init_by_list_1(void)
{ {
CACHE_REGS
unsigned long *seed; unsigned long *seed;
TERM t, u; TERM t, u;
@ -278,16 +281,19 @@ int pc_random_init_by_list_1(void)
int pc_random_float_1(void) int pc_random_float_1(void)
{ {
CACHE_REGS
return bpx_unify(ARG(1,1), bpx_build_float(random_float())); return bpx_unify(ARG(1,1), bpx_build_float(random_float()));
} }
int pc_random_gaussian_1(void) int pc_random_gaussian_1(void)
{ {
CACHE_REGS
return bpx_unify(ARG(1,1), bpx_build_float(random_gaussian(0.0,1.0))); return bpx_unify(ARG(1,1), bpx_build_float(random_gaussian(0.0,1.0)));
} }
int pc_random_int_2(void) int pc_random_int_2(void)
{ {
CACHE_REGS
int n_max = bpx_get_integer(ARG(1,2)); int n_max = bpx_get_integer(ARG(1,2));
int n_out = random_int(n_max); int n_out = random_int(n_max);
return bpx_unify(ARG(2,2), bpx_build_integer((BPLONG)(n_out))); return bpx_unify(ARG(2,2), bpx_build_integer((BPLONG)(n_out)));
@ -295,6 +301,7 @@ int pc_random_int_2(void)
int pc_random_int_3(void) int pc_random_int_3(void)
{ {
CACHE_REGS
int n_min = bpx_get_integer(ARG(1,3)); int n_min = bpx_get_integer(ARG(1,3));
int n_max = bpx_get_integer(ARG(2,3)); int n_max = bpx_get_integer(ARG(2,3));
int n_out = random_int(n_max - n_min + 1) + n_min; int n_out = random_int(n_max - n_min + 1) + n_min;
@ -305,6 +312,7 @@ int pc_random_int_3(void)
int pc_random_get_state_1(void) int pc_random_get_state_1(void)
{ {
CACHE_REGS
int i, j; int i, j;
TERM t, u; TERM t, u;
unsigned long temp; unsigned long temp;
@ -333,6 +341,7 @@ int pc_random_get_state_1(void)
int pc_random_set_state_1(void) int pc_random_set_state_1(void)
{ {
CACHE_REGS
int i, j; int i, j;
TERM term; TERM term;
unsigned long temp; unsigned long temp;

View File

@ -62,6 +62,7 @@ static ptrdiff_t trail_pos0 = 0;
static void number_vars(TERM term) static void number_vars(TERM term)
{ {
CACHE_REGS
assert(trail_pos0 == 0); assert(trail_pos0 == 0);
trail_pos0 = trail_up_addr - trail_top; trail_pos0 = trail_up_addr - trail_top;
@ -75,6 +76,7 @@ static void number_vars(TERM term)
static void revert_vars(void) static void revert_vars(void)
{ {
CACHE_REGS
BPLONG_PTR trail_top0; BPLONG_PTR trail_top0;
assert(trail_pos0 != 0); assert(trail_pos0 != 0);
@ -90,6 +92,7 @@ static void revert_vars(void)
*/ */
static BPULONG prism_hash_value(TERM term) static BPULONG prism_hash_value(TERM term)
{ {
CACHE_REGS
TERM t, *rest; TERM t, *rest;
BPLONG i, n; BPLONG i, n;
SYM_REC_PTR sym; SYM_REC_PTR sym;

View File

@ -770,6 +770,7 @@ int pc_get_snode_expectation_2(void)
int pc_import_occ_switches_3(void) int pc_import_occ_switches_3(void)
{ {
CACHE_REGS
TERM p_sw_list,p_sw_list0,p_sw_list1; TERM p_sw_list,p_sw_list0,p_sw_list1;
TERM p_sw_ins_list0,p_sw_ins_list1,sw,sw_ins; TERM p_sw_ins_list0,p_sw_ins_list1,sw,sw_ins;
TERM p_num_sw, p_num_sw_ins; TERM p_num_sw, p_num_sw_ins;