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,10 +127,12 @@ bool bpx_is_identical(TERM t1, TERM t2)
TERM bpx_get_call_arg(BPLONG i, BPLONG arity)
{
if (i < 1 || i > arity) {
bpx_raise("index out of range");
}
return ARG(i, arity);
CACHE_REGS
if (i < 1 || i > arity) {
bpx_raise("index out of range");
}
return ARG(i, arity);
}
BPLONG bpx_get_integer(TERM t)
@ -245,6 +247,7 @@ TERM bpx_get_cdr(TERM t)
TERM bpx_build_var(void)
{
CACHE_REGS
TERM term;
REQUIRE_HEAP(1);
@ -260,6 +263,7 @@ TERM bpx_build_integer(BPLONG n)
TERM bpx_build_float(double x)
{
CACHE_REGS
REQUIRE_HEAP(4);
return encodefloat1(x);
}
@ -274,6 +278,7 @@ TERM bpx_build_atom(const char *name)
TERM bpx_build_list(void)
{
CACHE_REGS
TERM term;
REQUIRE_HEAP(2);
@ -290,6 +295,7 @@ TERM bpx_build_nil(void)
TERM bpx_build_structure(const char *name, BPLONG arity)
{
CACHE_REGS
SYM_REC_PTR sym;
TERM term;
@ -314,6 +320,7 @@ bool bpx_unify(TERM t1, TERM t2)
TERM bpx_string_2_term(const char *s)
{
CACHE_REGS
TERM term, vars;
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) {
if (tag == ATM)
return MkAtomTerm((Atom)t);
@ -210,13 +231,13 @@ list_length(BPLONG t1, BPLONG t2)
#define PRE_NUMBER_VAR(X)
static inline void
extern inline void
numberVarTermOpt(TERM t)
{
YAP_NumberVars(t, 0);
}
static inline TERM
extern inline TERM
unnumberVarTerm(TERM t, BPLONG_PTR pt1, BPLONG_PTR pt2)
{
return YAP_UnNumberVars(t);

View File

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

View File

@ -15,6 +15,38 @@ char * bp_term_2_string(TERM);
/* unify.c */
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)
@ -125,6 +157,7 @@ int pc_prism_id_table_init_0(void)
int pc_prism_goal_id_register_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -137,6 +170,7 @@ int pc_prism_goal_id_register_2(void)
int pc_prism_sw_id_register_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -149,6 +183,7 @@ int pc_prism_sw_id_register_2(void)
int pc_prism_sw_ins_id_register_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -161,6 +196,7 @@ int pc_prism_sw_ins_id_register_2(void)
int pc_prism_goal_id_get_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -175,6 +211,7 @@ int pc_prism_goal_id_get_2(void)
int pc_prism_sw_id_get_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -188,6 +225,7 @@ int pc_prism_sw_id_get_2(void)
int pc_prism_sw_ins_id_get_2(void)
{
CACHE_REGS
TERM term;
IDNUM id;
@ -201,21 +239,25 @@ int pc_prism_sw_ins_id_get_2(void)
int pc_prism_goal_count_1(void)
{
CACHE_REGS
return unify(MAKEINT(prism_goal_count()), ARG(1,1));
}
int pc_prism_sw_count_1(void)
{
CACHE_REGS
return unify(MAKEINT(prism_sw_count()), ARG(1,1));
}
int pc_prism_sw_ins_count_1(void)
{
CACHE_REGS
return unify(MAKEINT(prism_sw_ins_count()), ARG(1,1));
}
int pc_prism_goal_term_2(void)
{
CACHE_REGS
TERM id, term;
id = ARG(1,2);
@ -227,6 +269,7 @@ int pc_prism_goal_term_2(void)
int pc_prism_sw_term_2(void)
{
CACHE_REGS
TERM id, term;
id = ARG(1,2);
@ -239,6 +282,7 @@ int pc_prism_sw_term_2(void)
int pc_prism_sw_ins_term_2(void)
{
CACHE_REGS
TERM id, term;
id = ARG(1,2);

View File

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

View File

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

View File

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