From 21fe137d27e569bdc5c3cac722db2b1b32be6b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 30 May 2014 00:59:42 +0100 Subject: [PATCH 01/13] FIX: warnings --- packages/prism/src/c/core/bpx.c | 2 ++ packages/prism/src/c/core/bpx.h | 7 +++++-- packages/prism/src/c/core/error.c | 5 +++++ packages/prism/src/c/core/glue.c | 7 +++++-- packages/prism/src/c/core/idtable.c | 2 +- packages/prism/src/c/core/random.c | 11 +++++++++++ packages/prism/src/c/core/termpool.c | 7 +++---- packages/prism/src/c/up/em_aux.c | 13 ++++++++++++- packages/prism/src/c/up/em_aux_ml.c | 23 +++++++++++++++++++++++ packages/prism/src/c/up/em_aux_vb.c | 21 +++++++++++++++++++++ packages/prism/src/c/up/em_ml.c | 3 +++ packages/prism/src/c/up/em_preds.c | 7 +++++++ packages/prism/src/c/up/em_vb.c | 3 +++ packages/prism/src/c/up/flags.c | 22 ++++++++++++++++++++++ packages/prism/src/c/up/graph.c | 2 ++ packages/prism/src/c/up/hindsight.c | 8 +++++++- packages/prism/src/c/up/util.c | 10 ++++++++++ packages/prism/src/c/up/viterbi.c | 8 ++++++++ 18 files changed, 150 insertions(+), 11 deletions(-) diff --git a/packages/prism/src/c/core/bpx.c b/packages/prism/src/c/core/bpx.c index ee7a49005..4f12ea541 100755 --- a/packages/prism/src/c/core/bpx.c +++ b/packages/prism/src/c/core/bpx.c @@ -15,6 +15,8 @@ /*--------------------------------------------------------------------*/ /* Functions from B-Prolog */ +int bpx_mount_query_term(TERM t); + /* cpred.c */ int bp_string_2_term(const char *, TERM, TERM); char* bp_term_2_string(TERM); diff --git a/packages/prism/src/c/core/bpx.h b/packages/prism/src/c/core/bpx.h index 0eba2c3d7..c92c11206 100755 --- a/packages/prism/src/c/core/bpx.h +++ b/packages/prism/src/c/core/bpx.h @@ -220,14 +220,17 @@ write_term(TERM t) YAP_Write(t,NULL,0); } -static NORET quit(const char *s) +INLINE_ONLY inline EXTERN NORET quit(const char *s); +INLINE_ONLY inline EXTERN NORET myquit(int i, const char *s); + +INLINE_ONLY inline EXTERN NORET quit(const char *s) { fprintf(stderr,"PRISM QUIT: %s\n",s); exit(0); } -static NORET myquit(int i, const char *s) +INLINE_ONLY inline EXTERN NORET myquit(int i, const char *s) { fprintf(stderr,"PRISM QUIT: %s\n",s); exit(i); diff --git a/packages/prism/src/c/core/error.c b/packages/prism/src/c/core/error.c index cf22d004a..f4999e593 100644 --- a/packages/prism/src/c/core/error.c +++ b/packages/prism/src/c/core/error.c @@ -7,6 +7,11 @@ #ifndef __YAP_PROLOG__ TERM bpx_build_atom(const char *); #endif +TERM build_runtime_error(const char *s); +TERM build_internal_error(const char *s); +void register_prism_errors(void); +void emit_error(const char *fmt, ...); +void emit_internal_error(const char *fmt, ...); /*--------------------------------------------------------------------*/ diff --git a/packages/prism/src/c/core/glue.c b/packages/prism/src/c/core/glue.c index e34bea2e2..4ad02a9df 100644 --- a/packages/prism/src/c/core/glue.c +++ b/packages/prism/src/c/core/glue.c @@ -1,5 +1,10 @@ #include +void bp4p_init(int *argc, char **argv[]); +void bp4p_exit(int status); +void bp4p_quit(int status); +void bp4p_register_preds(void); + /*--------------------------------------------------------------------*/ #define REGISTER_CPRED(p,n) \ @@ -14,8 +19,6 @@ void exit(int); #ifdef __YAP_PROLOG__ -int YAP_UserCpredicate(const char *s, int (*f)(void), unsigned long int n); - SYM_REC_PTR insert_cpred(const char *s, int n, int(*f)(void)) { YAP_UserCPredicate(s, f, n); diff --git a/packages/prism/src/c/core/idtable.c b/packages/prism/src/c/core/idtable.c index f9cb9acdd..7f1cbe3f2 100644 --- a/packages/prism/src/c/core/idtable.c +++ b/packages/prism/src/c/core/idtable.c @@ -172,5 +172,5 @@ TERM unnumber_var_term(TERM term) { CACHE_REGS BPLONG mvn = -1; - return unnumberVarTerm(term, local_top, &mvn); + return unnumberVarTerm(term, (BPLONG_PTR)local_top, &mvn); } diff --git a/packages/prism/src/c/core/random.c b/packages/prism/src/c/core/random.c index 43cca4e81..af1234926 100644 --- a/packages/prism/src/c/core/random.c +++ b/packages/prism/src/c/core/random.c @@ -46,6 +46,17 @@ Here is the original copyright notice. /***********[ REDUCED VERSION OF MT19937AR.C STARTS HERE ]***********/ +void init_by_array(unsigned long init_key[], int key_length); +int pc_random_auto_seed_1(void); +int pc_random_init_by_seed_1(void); +int pc_random_init_by_list_1(void); +int pc_random_float_1(void); +int pc_random_gaussian_1(void); +int pc_random_int_2(void); +int pc_random_int_3(void); +int pc_random_get_state_1(void); +int pc_random_set_state_1(void); + /* Period parameters */ #define N 624 #define M 397 diff --git a/packages/prism/src/c/core/termpool.c b/packages/prism/src/c/core/termpool.c index 45a803193..1ef84ddb3 100644 --- a/packages/prism/src/c/core/termpool.c +++ b/packages/prism/src/c/core/termpool.c @@ -81,7 +81,7 @@ static void revert_vars(void) assert(trail_pos0 != 0); - trail_top0 = trail_up_addr - trail_pos0; + trail_top0 = (BPLONG_PTR)(trail_up_addr - trail_pos0); UNDO_TRAILING; trail_pos0 = 0; } @@ -92,7 +92,6 @@ static void revert_vars(void) */ static BPULONG prism_hash_value(TERM term) { - CACHE_REGS TERM t, *rest; BPLONG i, n; SYM_REC_PTR sym; @@ -201,7 +200,7 @@ nderef_loop: break; case LST: - q = term_pool_allocate(this, 2); + q = (TERM *)term_pool_allocate(this, 2); *(q + 1) = GET_CDR(*p); VECTOR_PUSH(rest, q + 1); *(q + 0) = GET_CAR(*p); @@ -212,7 +211,7 @@ nderef_loop: case STR: sym = GET_STR_SYM_REC(*p); n = GET_ARITY_STR(sym); - q = term_pool_allocate(this, n + 1); + q = (TERM *)term_pool_allocate(this, n + 1); *q = (TERM)(sym); for (i = n; i >= 1; i--) { *(q + i) = GET_ARG(*p, i); diff --git a/packages/prism/src/c/up/em_aux.c b/packages/prism/src/c/up/em_aux.c index efff6f1d5..1f5137669 100644 --- a/packages/prism/src/c/up/em_aux.c +++ b/packages/prism/src/c/up/em_aux.c @@ -19,11 +19,22 @@ int failure_observed; /* mic.c (B-Prolog) */ int compare(TERM,TERM); void quit(const char *); +void alloc_occ_switches(void); +void sort_occ_switches(void); +void release_occ_switches(void); +void alloc_num_sw_vals(void); +void release_num_sw_vals(void); +void transfer_hyperparams_prolog(void); +int pc_compute_viterbi_5(void); +void release_num_sw_vals(void); +void transfer_hyperparams_prolog(void); +int pc_compute_n_viterbi_3(void); /*------------------------------------------------------------------------*/ /* for sort_occ_switches() */ -static int compare_sw_ins(const void *a, const void *b) +static int +compare_sw_ins(const void *a, const void *b) { SW_INS_PTR sw_ins_a, sw_ins_b; TERM msw_a, msw_b; diff --git a/packages/prism/src/c/up/em_aux_ml.c b/packages/prism/src/c/up/em_aux_ml.c index 878dc108b..83b487cdd 100644 --- a/packages/prism/src/c/up/em_aux_ml.c +++ b/packages/prism/src/c/up/em_aux_ml.c @@ -11,6 +11,29 @@ #include "up/em_aux.h" #include "up/util.h" +int check_smooth(int *smooth); +void initialize_params(void); +int compute_inside_scaling_none(void); +int compute_inside_scaling_none(void); +int compute_daem_inside_scaling_none(void); +int compute_daem_inside_scaling_log_exp(void); +int examine_inside_scaling_none(void); +int examine_inside_scaling_log_exp(void); +int compute_expectation_scaling_none(void); +int compute_expectation_scaling_log_exp(void); +double compute_daem_log_prior(void); +double compute_likelihood_scaling_none(void); +void release_num_sw_vals(void); +void transfer_hyperparams_prolog(void); +double compute_likelihood_scaling_log_exp(void); +void save_params(void); +void restore_params(void); +double compute_log_prior(void); +double compute_bic(double likelihood); +double compute_cs(double likelihood); +int update_params(void); + +int update_params_smooth(void); /*------------------------------------------------------------------------*/ /* We check if all smoothing constants are positive (MAP), diff --git a/packages/prism/src/c/up/em_aux_vb.c b/packages/prism/src/c/up/em_aux_vb.c index 30b1315ad..126a94ce2 100644 --- a/packages/prism/src/c/up/em_aux_vb.c +++ b/packages/prism/src/c/up/em_aux_vb.c @@ -12,6 +12,27 @@ #include "up/flags.h" #include "up/util.h" +int check_smooth_vb(void); +int compute_daem_inside_vb_scaling_none(void); +double compute_free_energy_l0(void); +double compute_free_energy_l1_scaling_none(void); +double compute_free_energy_l1_scaling_log_exp(void); +double compute_daem_free_energy_l1_scaling_none(void); +double compute_daem_free_energy_l1_scaling_log_exp(void); +void initialize_hyperparams(void); +int update_hyperparams(void); +int update_daem_hyperparams(void); +void save_hyperparams(void); +void restore_hyperparams(void); +void transfer_hyperparams(void); +void get_param_means(void); +int compute_pi_scaling_none(void); +int compute_pi_scaling_log_exp(void); +int compute_inside_vb_scaling_none(void); +int compute_inside_vb_scaling_log_exp(void); +int compute_daem_inside_vb_scaling_log_exp(void); +double compute_daem_free_energy_l0(void); + /*------------------------------------------------------------------------*/ /* Just check if there is any negative hyperparameter */ diff --git a/packages/prism/src/c/up/em_ml.c b/packages/prism/src/c/up/em_ml.c index ed52a5202..5c181cb63 100644 --- a/packages/prism/src/c/up/em_ml.c +++ b/packages/prism/src/c/up/em_ml.c @@ -11,6 +11,9 @@ #include "up/flags.h" #include "up/util.h" +void config_em(EM_ENG_PTR em_ptr); +int run_em(EM_ENG_PTR em_ptr); + /*------------------------------------------------------------------------*/ void config_em(EM_ENG_PTR em_ptr) diff --git a/packages/prism/src/c/up/em_preds.c b/packages/prism/src/c/up/em_preds.c index 6b837fc01..f9d8621d1 100644 --- a/packages/prism/src/c/up/em_preds.c +++ b/packages/prism/src/c/up/em_preds.c @@ -22,6 +22,13 @@ /* mic.c (B-Prolog) */ NORET myquit(int, const char *); +int pc_prism_prepare_4(void); +int pc_prism_em_6(void); +int pc_prism_vbem_2(void); +int pc_prism_both_em_2(void); +int pc_compute_inside_2(void); +int pc_compute_probf_1(void); + /*------------------------------------------------------------------------*/ int pc_prism_prepare_4(void) diff --git a/packages/prism/src/c/up/em_vb.c b/packages/prism/src/c/up/em_vb.c index 390f1e669..29008482f 100644 --- a/packages/prism/src/c/up/em_vb.c +++ b/packages/prism/src/c/up/em_vb.c @@ -13,6 +13,9 @@ #include "up/flags.h" #include "up/util.h" +void config_vbem(VBEM_ENG_PTR vb_ptr); +int run_vbem(VBEM_ENG_PTR vb_ptr); + /*------------------------------------------------------------------------*/ void config_vbem(VBEM_ENG_PTR vb_ptr) diff --git a/packages/prism/src/c/up/flags.c b/packages/prism/src/c/up/flags.c index 11236e95e..5fdd82016 100644 --- a/packages/prism/src/c/up/flags.c +++ b/packages/prism/src/c/up/flags.c @@ -39,6 +39,28 @@ static int warn = 0; */ int debug_level = 0; +int pc_set_daem_1(void); +int pc_set_em_message_1(void); +int pc_set_em_progress_1(void); +int pc_set_error_on_cycle_1(void); +int pc_set_explicit_empty_expls_1(void); +int pc_set_fix_init_order_1(void); +int pc_set_init_method_1(void); +int pc_set_init_method_1(void); +int pc_set_itemp_rate_1(void); +int pc_set_log_scale_1(void); +int pc_set_max_iterate_1(void); +int pc_set_num_restart_1(void); +int pc_set_num_restart_1(void); +int pc_set_show_itemp_1(void); +int pc_set_std_ratio_1(void); +int pc_set_verb_em_1(void); +int pc_set_verb_graph_1(void); +int pc_set_warn_1(void); +int pc_set_debug_level_1(void); +int pc_set_itemp_init_1(void); +int pc_set_prism_epsilon_1(void); + /*------------------------------------------------------------------------*/ int pc_set_daem_1(void) diff --git a/packages/prism/src/c/up/graph.c b/packages/prism/src/c/up/graph.c index 878cca7d9..7d0f90812 100644 --- a/packages/prism/src/c/up/graph.c +++ b/packages/prism/src/c/up/graph.c @@ -12,6 +12,8 @@ NORET myquit(int, const char *); /* univ.c (B-Prolog) */ int list_length(BPLONG, BPLONG); +int pc_import_graph_stats_4(void); + /*------------------------------------------------------------------------*/ static int max_egraph_size = INIT_MAX_EGRAPH_SIZE; diff --git a/packages/prism/src/c/up/hindsight.c b/packages/prism/src/c/up/hindsight.c index 2a7d23941..c3bc00c18 100644 --- a/packages/prism/src/c/up/hindsight.c +++ b/packages/prism/src/c/up/hindsight.c @@ -13,7 +13,13 @@ /*------------------------------------------------------------------------*/ /* mic.c (B-Prolog) */ -NORET quit(const char *); +extern NORET quit(const char *); +int compute_outside_scaling_none(void); +int compute_outside_scaling_log_exp(void); +int pc_compute_hindsight_4(void); +int compute_outside_scaling_none(void); +int compute_outside_scaling_log_exp(void); +int pc_compute_hindsight_4(void); /*------------------------------------------------------------------------*/ diff --git a/packages/prism/src/c/up/util.c b/packages/prism/src/c/up/util.c index 4306b8077..31f25a911 100644 --- a/packages/prism/src/c/up/util.c +++ b/packages/prism/src/c/up/util.c @@ -7,6 +7,16 @@ /* mic.c (B-Prolog) */ int compare(TERM, TERM); +int prism_printf(const char *fmt, ...); +int pc_mp_mode_0(void); +int compare_sw_ins(const void *a, const void *b); +int get_term_depth(TERM t); +int pc_get_term_depth_2(void); +int pc_lngamma_2(void); +int pc_mtrace_0(void); +int pc_muntrace_0(void); +void xsleep(unsigned int milliseconds); +int pc_sleep_1(void); /*------------------------------------------------------------------------*/ diff --git a/packages/prism/src/c/up/viterbi.c b/packages/prism/src/c/up/viterbi.c index e9c66e86d..b01cda9ba 100644 --- a/packages/prism/src/c/up/viterbi.c +++ b/packages/prism/src/c/up/viterbi.c @@ -21,6 +21,10 @@ struct ViterbiRankEntry { NORET quit(const char *); NORET myquit(int, const char *); +int pc_compute_n_viterbi_3(void); +int pc_compute_n_viterbi_rerank_4(void); +void transfer_hyperparams_prolog(void); + /*------------------------------------------------------------------------*/ static EG_NODE_PTR * viterbi_egraphs = NULL; @@ -39,6 +43,10 @@ static int n_viterbi_egraph_size; static V_RANK_PTR viterbi_rank = NULL; +void compute_max(void); +void compute_n_max(int n); +int pc_compute_viterbi_5(void); + /* Viterbi works on only one explanation graph */ void compute_max(void) { From 37e8fcc353f49f1db71eb2fe8785d1bbb81395f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 30 May 2014 01:00:57 +0100 Subject: [PATCH 02/13] Fix: bad implementation of with_mutex/2 --- pl/consult.yap | 2 +- pl/threads.yap | 49 +++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/pl/consult.yap b/pl/consult.yap index 81bb7953e..805fa8fdf 100755 --- a/pl/consult.yap +++ b/pl/consult.yap @@ -1018,7 +1018,7 @@ source_file_property( File0, Prop) :- '$source_file_property'( File, Prop). '$source_file_property'( OldF, includes(F, Age)) :- - recorded('$lf_loaded','$lf_loaded'( F, _M, _ include, _File, OldF, _Line, _), _), + recorded('$lf_loaded','$lf_loaded'( F, _M, include, _File, OldF, _Line, _), _), recorded('$lf_loaded','$lf_loaded'( F, Age, _), _). '$source_file_property'( F, included_in(OldF, Line)) :- recorded('$lf_loaded','$lf_loaded'( F, _M, include, _File, OldF, Line, _), _). diff --git a/pl/threads.yap b/pl/threads.yap index 028c00195..3ec925bbe 100644 --- a/pl/threads.yap +++ b/pl/threads.yap @@ -564,35 +564,36 @@ mutex_unlock_all :- '$mutex_unlock_all'(Id). with_mutex(M, G) :- - '$no_threads', !, - call(G). -with_mutex(M, G) :- - var(M), !, - '$do_error'(instantiation_error,with_mutex(M, G)). -with_mutex(M, G) :- - var(G), !, - '$do_error'(instantiation_error,with_mutex(M, G)). -with_mutex(M, G) :- - \+ callable(G), !, - '$do_error'(type_error(callable,G),with_mutex(M, G)). -with_mutex(M, G) :- - atom(M), !, - '$with_mutex_mutex'(WMId), - '$lock_mutex'(WMId), - ( recorded('$mutex_alias',[Id|M],_) -> + ( '$no_threads' -> + once(G) + ; + var(M) -> + '$do_error'(instantiation_error,with_mutex(M, G)) + ; + var(G) -> + '$do_error'(instantiation_error,with_mutex(M, G)) + ; + \+ callable(G) -> + '$do_error'(type_error(callable,G),with_mutex(M, G)) + ; + atom(M) -> + '$with_mutex_mutex'(WMId), + '$lock_mutex'(WMId), + ( recorded('$mutex_alias',[Id|M],_) -> true - ; '$new_mutex'(Id), + ; '$new_mutex'(Id), recorda('$mutex_alias',[Id|M],_) - ), - '$lock_mutex'(Id), - '$unlock_mutex'(WMId), - ( catch('$execute'(G), E, ('$unlock_mutex'(Id), throw(E))) -> + ), + '$unlock_mutex'(WMId), + '$lock_mutex'(Id), + ( catch('$execute'(G), E, ('$unlock_mutex'(Id), throw(E))) -> '$unlock_mutex'(Id) - ; '$unlock_mutex'(Id), + ; '$unlock_mutex'(Id), fail + ) + ; + '$do_error'(type_error(atom,M),with_mutex(M, G)) ). -with_mutex(M, G) :- - '$do_error'(type_error(atom,M),with_mutex(M, G)). current_mutex(M, T, NRefs) :- recorded('$mutex_alias',[Id|M],_), From e3674e1223b4933b6369d24b158d17b4349b49a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 30 May 2014 01:01:58 +0100 Subject: [PATCH 03/13] fix: warningss --- library/rltree/range_list.c | 5 ++++- library/rltree/yap_rl.c | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/library/rltree/range_list.c b/library/rltree/range_list.c index 4a74aca95..4379ea7c3 100644 --- a/library/rltree/range_list.c +++ b/library/rltree/range_list.c @@ -61,7 +61,7 @@ void shift_right(RL_Tree *tree,const NUM idx,const long nnodes); void shift_left(RL_Tree *tree,const NUM idx, const long nnodes); void intersect_leafs(char *storage1,char *storage2); -static void print_nodes(RL_Tree* tree); +//static void print_nodes(RL_Tree* tree); // RL_Buffer* buffer=NULL; @@ -245,6 +245,7 @@ NUM rl_next_in_bigger(RL_Tree *tree,NUM min) { /* ****************************************************************************** Private Functions ****************************************************************************** */ +/* static void print_nodes(RL_Tree* tree) { RL_Node* nodes=tree->root; int j; @@ -253,6 +254,8 @@ static void print_nodes(RL_Tree* tree) { printf("[%d]=%lu\n",j,(unsigned long int)nodes[j].leaf); } +*/ + // treeXquadrantXinterval->quadrant_minXquadrant_max static void quadrant_interval(RL_Tree *tree,short quadrant,NUM interval,NUM *quad_interval) { diff --git a/library/rltree/yap_rl.c b/library/rltree/yap_rl.c index 43d7c91d4..344d7ed95 100644 --- a/library/rltree/yap_rl.c +++ b/library/rltree/yap_rl.c @@ -425,6 +425,8 @@ p_rl_b_in1(void) { } } /* ******************************************************* */ +void init_rl(void); + void init_rl(void){ From a76b6d23dc81eb7189b3773868e77e7f0f8c7a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 30 May 2014 01:06:09 +0100 Subject: [PATCH 04/13] Fix: eclipse >u. into >y_u. --- C/absmi.c | 1780 ++++++++++++++++----------------- C/amasm.c | 592 +++++------ C/c_interface.c | 8 +- C/cdmgr.c | 248 ++--- C/clause_list.c | 24 +- C/dbase.c | 32 +- C/exec.c | 6 +- C/exo.c | 16 +- C/gprof.c | 4 +- C/heapgc.c | 76 +- C/index.c | 812 +++++++-------- C/init.c | 96 +- H/Regs.h | 27 + H/Yap.h | 8 +- H/absmi.h | 4 +- H/amidefs.h | 36 +- H/clause.h | 2 +- H/cut_c.h | 8 +- H/findclause.h | 480 ++++----- H/headclause.h | 282 +++--- H/rclause.h | 504 +++++----- H/rheap.h | 32 +- H/saveclause.h | 486 ++++----- H/walkclause.h | 36 +- OPTYap/or.macros.h | 18 +- OPTYap/tab.insts.i | 56 +- OPTYap/tab.structs.h | 8 +- OPTYap/tab.tries.c | 4 +- include/YapRegs.h | 2 +- library/dialect/swi/fli/swi.c | 2 +- misc/buildops | 68 +- 31 files changed, 2880 insertions(+), 2877 deletions(-) diff --git a/C/absmi.c b/C/absmi.c index c47dd5664..d655b18b6 100755 --- a/C/absmi.c +++ b/C/absmi.c @@ -522,7 +522,7 @@ static Term push_live_regs(yamop *pco) { CACHE_REGS - CELL *lab = (CELL *)(pco->u.l.l); + CELL *lab = (CELL *)(pco->y_u.l.l); CELL max = lab[0]; CELL curr = lab[1]; Term tp = MkIntegerTerm((Int)pco); @@ -835,7 +835,7 @@ interrupt_handlerc( PredEntry *pe USES_REGS ) /* do creep in call */ ENV = YENV; CP = NEXTOP(P, Osbpp); - YENV = (CELL *) (((char *) YENV) + P->u.Osbpp.s); + YENV = (CELL *) (((char *) YENV) + P->y_u.Osbpp.s); #ifdef FROZEN_STACKS { choiceptr top_b = PROTECT_FROZEN_B(B); @@ -935,7 +935,7 @@ interrupt_execute( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return v; } - PP = P->u.pp.p0; + PP = P->y_u.pp.p0; if ((PP->ExtraPredFlags & (NoDebugPredFlag|HiddenPredFlag)) && Yap_only_has_signal(YAP_CREEP_SIGNAL)) { UNLOCK(LOCAL_SignalLock); return 2; @@ -945,11 +945,11 @@ interrupt_execute( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return v; } - if ((v = stack_overflow(P->u.pp.p, ENV, CP PASS_REGS )) >= 0) { + if ((v = stack_overflow(P->y_u.pp.p, ENV, CP PASS_REGS )) >= 0) { UNLOCK(LOCAL_SignalLock); return v; } - return interrupt_handler( P->u.pp.p PASS_REGS ); + return interrupt_handler( P->y_u.pp.p PASS_REGS ); } static int @@ -966,22 +966,22 @@ interrupt_call( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return v; } - PP = P->u.Osbpp.p0; + PP = P->y_u.Osbpp.p0; if (Yap_only_has_signal(YAP_CREEP_SIGNAL) && (PP->ExtraPredFlags & (NoDebugPredFlag|HiddenPredFlag)) ) { UNLOCK(LOCAL_SignalLock); return 2; } - SET_ASP(YENV, P->u.Osbpp.s); + SET_ASP(YENV, P->y_u.Osbpp.s); if ((v = code_overflow(YENV PASS_REGS)) >= 0) { UNLOCK(LOCAL_SignalLock); return v; } - if ((v = stack_overflow( P->u.Osbpp.p, YENV, NEXTOP(P, Osbpp) PASS_REGS )) >= 0) { + if ((v = stack_overflow( P->y_u.Osbpp.p, YENV, NEXTOP(P, Osbpp) PASS_REGS )) >= 0) { UNLOCK(LOCAL_SignalLock); return v; } - return interrupt_handlerc( P->u.Osbpp.p PASS_REGS ); + return interrupt_handlerc( P->y_u.Osbpp.p PASS_REGS ); } static int @@ -1048,7 +1048,7 @@ interrupt_deallocate( USES_REGS1 ) } else { CELL cut_b = LCL0-(CELL *)(S[E_CB]); - PP = PREVOP(P,p)->u.p.p; + PP = PREVOP(P,p)->y_u.p.p; ASP = YENV+E_CB; /* cut_e */ SET_ASP(YENV, E_CB*sizeof(CELL)); @@ -1153,7 +1153,7 @@ static int interrupt_commit_y( USES_REGS1 ) { int v; - Term t_cut = YENV[P->u.yps.y]; + Term t_cut = YENV[P->y_u.yps.y]; #ifdef DEBUG_INTERRUPTS if (trace_interrupts) fprintf(stderr,"[%d] %lu--%lu %s:%d: (YENV=%p ENV=%p ASP=%p)\n", worker_id, LOCAL_FirstActiveSignal, LOCAL_LastActiveSignal, \ @@ -1178,7 +1178,7 @@ static int interrupt_commit_x( USES_REGS1 ) { int v; - Term t_cut = XREG(P->u.xps.x); + Term t_cut = XREG(P->y_u.xps.x); #ifdef DEBUG_INTERRUPTS if (trace_interrupts) fprintf(stderr,"[%d] %lu--%lu %s:%d (YENV=%p ENV=%p ASP=%p)\n", worker_id, LOCAL_FirstActiveSignal, LOCAL_LastActiveSignal, \ @@ -1194,7 +1194,7 @@ interrupt_commit_x( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return 2; } - PP = P->u.xps.p0; + PP = P->y_u.xps.p0; /* find something to fool S */ if (P->opc == Yap_opcode(_fcall)) { /* fill it up */ @@ -1228,9 +1228,9 @@ interrupt_either( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return 2; } - PP = P->u.Osblp.p0; + PP = P->y_u.Osblp.p0; /* find something to fool S */ - SET_ASP(YENV, P->u.Osbpp.s); + SET_ASP(YENV, P->y_u.Osbpp.s); if (ASP > (CELL *)PROTECT_FROZEN_B(B)) ASP = (CELL *)PROTECT_FROZEN_B(B); if ((v = code_overflow(YENV PASS_REGS)) >= 0) { @@ -1254,8 +1254,8 @@ interrupt_dexecute( USES_REGS1 ) if (trace_interrupts) fprintf(stderr,"[%d] %lu--%lu %s/%d (YENV=%p ENV=%p ASP=%p)\n", worker_id, LOCAL_FirstActiveSignal, LOCAL_LastActiveSignal, \ __FUNCTION__, __LINE__,YENV,ENV,ASP); #endif - PP = P->u.pp.p0; - pe = P->u.pp.p; + PP = P->y_u.pp.p0; + pe = P->y_u.pp.p; LOCK(LOCAL_SignalLock); if (Yap_has_signal(YAP_CREEP_SIGNAL) && (PP->ExtraPredFlags & (NoDebugPredFlag|HiddenPredFlag))) { @@ -1270,7 +1270,7 @@ interrupt_dexecute( USES_REGS1 ) UNLOCK(LOCAL_SignalLock); return v; } - if ((v = stack_overflow( P->u.pp.p, (CELL *)YENV[E_E], (yamop *)YENV[E_CP] PASS_REGS )) >= 0) { + if ((v = stack_overflow( P->y_u.pp.p, (CELL *)YENV[E_E], (yamop *)YENV[E_CP] PASS_REGS )) >= 0) { UNLOCK(LOCAL_SignalLock); return v; } @@ -1471,7 +1471,7 @@ Yap_absmi(int inp) nextop_write: old_op = opcode; - opcode = PREG->u.o.opcw; + opcode = PREG->y_u.o.opcw; goto op_switch; nextop: @@ -1566,9 +1566,9 @@ Yap_absmi(int inp) * new register to point at YREG =*/ CACHE_Y(YREG); /* store arguments for procedure */ - store_at_least_one_arg(PREG->u.Otapl.s); + store_at_least_one_arg(PREG->y_u.Otapl.s); /* store abstract machine registers */ - store_yaam_regs(PREG->u.Otapl.d, 0); + store_yaam_regs(PREG->y_u.Otapl.d, 0); /* On a try_me, set cut to point at previous choicepoint, * that is, to the B before the cut. */ @@ -1589,8 +1589,8 @@ Yap_absmi(int inp) CACHE_Y(B); /* After retry, cut should be pointing at the parent * choicepoint for the current B */ - restore_yaam_regs(PREG->u.Otapl.d); - restore_at_least_one_arg(PREG->u.Otapl.s); + restore_yaam_regs(PREG->y_u.Otapl.d); + restore_at_least_one_arg(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -1609,7 +1609,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_at_least_one_arg(PREG->u.Otapl.s); + restore_at_least_one_arg(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -1619,7 +1619,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_at_least_one_arg(PREG->u.Otapl.s); + pop_at_least_one_arg(PREG->y_u.Otapl.s); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -1661,12 +1661,12 @@ Yap_absmi(int inp) * new register to point at YREG =*/ CACHE_Y(YREG); { - struct index_t *i = (struct index_t *)(PREG->u.lp.l); + struct index_t *i = (struct index_t *)(PREG->y_u.lp.l); S_YREG[-1] = (CELL)LINK_TO_ADDRESS(i,i->links[EXO_ADDRESS_TO_OFFSET(i, SREG)]); } S_YREG--; /* store arguments for procedure */ - store_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + store_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* store abstract machine registers */ store_yaam_regs(NEXTOP(PREG,lp), 0); /* On a try_me, set cut to point at previous choicepoint, @@ -1695,7 +1695,7 @@ Yap_absmi(int inp) CACHE_Y(YREG); S_YREG--; /* store arguments for procedure */ - store_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + store_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* store abstract machine registers */ store_yaam_regs(NEXTOP(PREG,lp), 0); /* On a try_me, set cut to point at previous choicepoint, @@ -1726,7 +1726,7 @@ Yap_absmi(int inp) } S_YREG--; /* store arguments for procedure */ - store_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + store_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* store abstract machine registers */ store_yaam_regs(NEXTOP(PREG,lp), 0); /* On a try_me, set cut to point at previous choicepoint, @@ -1754,14 +1754,14 @@ Yap_absmi(int inp) * new register to point at YREG =*/ CACHE_Y(YREG); { - struct index_t *i = (struct index_t *)(PREG->u.lp.l); + struct index_t *i = (struct index_t *)(PREG->y_u.lp.l); SREG = i->cls; S_YREG[-2] = (CELL)(SREG+i->arity); S_YREG[-1] = (CELL)(SREG+i->arity*i->nels); } S_YREG-=2; /* store arguments for procedure */ - store_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + store_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* store abstract machine registers */ store_yaam_regs(NEXTOP(PREG,lp), 0); /* On a try_me, set cut to point at previous choicepoint, @@ -1784,7 +1784,7 @@ Yap_absmi(int inp) BEGD(d0); CACHE_Y(B); { - struct index_t *it = (struct index_t *)(PREG->u.lp.l); + struct index_t *it = (struct index_t *)(PREG->y_u.lp.l); BITS32 offset = ADDRESS_TO_LINK(it,(BITS32 *)((CELL *)(B+1))[it->arity]); d0 = it->links[offset]; ((CELL *)(B+1))[it->arity] = (CELL)LINK_TO_ADDRESS(it, d0); @@ -1794,7 +1794,7 @@ Yap_absmi(int inp) /* After retry, cut should be pointing at the parent * choicepoint for the current B */ restore_yaam_regs(PREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -1806,7 +1806,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -1815,7 +1815,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + pop_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -1835,7 +1835,7 @@ Yap_absmi(int inp) BEGD(d0); CACHE_Y(B); { - struct index_t *it = (struct index_t *)(PREG->u.lp.l); + struct index_t *it = (struct index_t *)(PREG->y_u.lp.l); saveregs(); d0 = ((CRetryExoIndex)it->udi_next)(it PASS_REGS); setregs(); @@ -1847,7 +1847,7 @@ Yap_absmi(int inp) /* After retry, cut should be pointing at the parent * choicepoint for the current B */ restore_yaam_regs(PREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -1859,7 +1859,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -1868,7 +1868,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + pop_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -1902,7 +1902,7 @@ Yap_absmi(int inp) /* After retry, cut should be pointing at the parent * choicepoint for the current B */ restore_yaam_regs(PREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -1914,7 +1914,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + restore_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -1923,7 +1923,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_at_least_one_arg(PREG->u.lp.p->ArityOfPE); + pop_at_least_one_arg(PREG->y_u.lp.p->ArityOfPE); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -1943,7 +1943,7 @@ Yap_absmi(int inp) BEGD(d0); CACHE_Y(B); { - UInt arity = ((struct index_t *)PREG->u.lp.l)->arity; + UInt arity = ((struct index_t *)PREG->y_u.lp.l)->arity; CELL *extras = (CELL *)(B+1); SREG = (CELL *)extras[arity]; d0 = (SREG+arity != (CELL *)extras[arity+1]); @@ -1995,18 +1995,18 @@ Yap_absmi(int inp) /* profiled_enter_me Pred */ Op(enter_profiling, p); - LOCK(PREG->u.p.p->StatisticsForPred.lock); - PREG->u.p.p->StatisticsForPred.NOfEntries++; - UNLOCK(PREG->u.p.p->StatisticsForPred.lock); + LOCK(PREG->y_u.p.p->StatisticsForPred.lock); + PREG->y_u.p.p->StatisticsForPred.NOfEntries++; + UNLOCK(PREG->y_u.p.p->StatisticsForPred.lock); PREG = NEXTOP(PREG, p); GONext(); ENDOp(); /* profiled_retry Label,NArgs */ Op(retry_profiled, p); - LOCK(PREG->u.p.p->StatisticsForPred.lock); - PREG->u.p.p->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.p.p->StatisticsForPred.lock); + LOCK(PREG->y_u.p.p->StatisticsForPred.lock); + PREG->y_u.p.p->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.p.p->StatisticsForPred.lock); PREG = NEXTOP(PREG, p); GONext(); ENDOp(); @@ -2016,11 +2016,11 @@ Yap_absmi(int inp) CACHE_Y(B); /* After retry, cut should be pointing at the parent * choicepoint for the current B */ - LOCK(PREG->u.Otapl.p->StatisticsForPred.lock); - PREG->u.Otapl.p->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.Otapl.p->StatisticsForPred.lock); - restore_yaam_regs(PREG->u.Otapl.d); - restore_args(PREG->u.Otapl.s); + LOCK(PREG->y_u.Otapl.p->StatisticsForPred.lock); + PREG->y_u.Otapl.p->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.Otapl.p->StatisticsForPred.lock); + restore_yaam_regs(PREG->y_u.Otapl.d); + restore_args(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -2039,7 +2039,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_args(PREG->u.Otapl.s); + restore_args(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -2049,7 +2049,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_args(PREG->u.Otapl.s); + pop_args(PREG->y_u.Otapl.s); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -2059,9 +2059,9 @@ Yap_absmi(int inp) } SET_BB(B_YREG); ENDCACHE_Y(); - LOCK(PREG->u.Otapl.p->StatisticsForPred.lock); - PREG->u.Otapl.p->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.Otapl.p->StatisticsForPred.lock); + LOCK(PREG->y_u.Otapl.p->StatisticsForPred.lock); + PREG->y_u.Otapl.p->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.Otapl.p->StatisticsForPred.lock); PREG = NEXTOP(PREG, Otapl); GONext(); ENDOp(); @@ -2072,21 +2072,21 @@ Yap_absmi(int inp) UInt timestamp; CACHE_Y(B); - timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->u.OtaLl.s]); - if (!VALID_TIMESTAMP(timestamp, PREG->u.OtaLl.d)) { + timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->y_u.OtaLl.s]); + if (!VALID_TIMESTAMP(timestamp, PREG->y_u.OtaLl.d)) { /* jump to next instruction */ - PREG=PREG->u.OtaLl.n; + PREG=PREG->y_u.OtaLl.n; JMPNext(); } - restore_yaam_regs(PREG->u.OtaLl.n); - restore_args(PREG->u.OtaLl.s); - LOCK(PREG->u.OtaLl.d->ClPred->StatisticsForPred.lock); - PREG->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.OtaLl.d->ClPred->StatisticsForPred.lock); + restore_yaam_regs(PREG->y_u.OtaLl.n); + restore_args(PREG->y_u.OtaLl.s); + LOCK(PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); + PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); #ifdef THREADS - PP = PREG->u.OtaLl.d->ClPred; + PP = PREG->y_u.OtaLl.d->ClPred; #endif - PREG = PREG->u.OtaLl.d->ClCode; + PREG = PREG->y_u.OtaLl.d->ClCode; #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -2102,9 +2102,9 @@ Yap_absmi(int inp) BOp(profiled_trust_logical, OtILl); CACHE_Y(B); { - LogUpdIndex *cl = PREG->u.OtILl.block; + LogUpdIndex *cl = PREG->y_u.OtILl.block; PredEntry *ap = cl->ClPred; - LogUpdClause *lcl = PREG->u.OtILl.d; + LogUpdClause *lcl = PREG->y_u.OtILl.d; UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); if (!VALID_TIMESTAMP(timestamp, lcl)) { @@ -2216,9 +2216,9 @@ Yap_absmi(int inp) /* count_enter_me Label,NArgs */ Op(count_call, p); - LOCK(PREG->u.p.p->StatisticsForPred.lock); - PREG->u.p.p->StatisticsForPred.NOfEntries++; - UNLOCK(PREG->u.p.p->StatisticsForPred.lock); + LOCK(PREG->y_u.p.p->StatisticsForPred.lock); + PREG->y_u.p.p->StatisticsForPred.NOfEntries++; + UNLOCK(PREG->y_u.p.p->StatisticsForPred.lock); LOCAL_ReductionsCounter--; if (LOCAL_ReductionsCounter == 0 && LOCAL_ReductionsCounterOn) { saveregs(); @@ -2239,9 +2239,9 @@ Yap_absmi(int inp) /* count_retry Label,NArgs */ Op(count_retry, p); - LOCK(PREG->u.p.p->StatisticsForPred.lock); - PREG->u.p.p->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.p.p->StatisticsForPred.lock); + LOCK(PREG->y_u.p.p->StatisticsForPred.lock); + PREG->y_u.p.p->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.p.p->StatisticsForPred.lock); LOCAL_RetriesCounter--; if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { /* act as if we had backtracked */ @@ -2266,8 +2266,8 @@ Yap_absmi(int inp) /* count_retry_me Label,NArgs */ Op(count_retry_me, Otapl); CACHE_Y(B); - restore_yaam_regs(PREG->u.Otapl.d); - restore_args(PREG->u.Otapl.s); + restore_yaam_regs(PREG->y_u.Otapl.d); + restore_args(PREG->y_u.Otapl.s); /* After retry, cut should be pointing at the parent * choicepoint for the current B */ #ifdef FROZEN_STACKS @@ -2278,9 +2278,9 @@ Yap_absmi(int inp) #endif /* FROZEN_STACKS */ SET_BB(B_YREG); ENDCACHE_Y(); - LOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); - ((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.NOfRetries++; - UNLOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); + LOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); + ((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; + UNLOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); LOCAL_RetriesCounter--; if (LOCAL_RetriesCounter == 0 && LOCAL_RetriesCounterOn) { saveregs(); @@ -2305,7 +2305,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_args(PREG->u.Otapl.s); + restore_args(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -2315,7 +2315,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_args(PREG->u.Otapl.s); + pop_args(PREG->y_u.Otapl.s); /* After trust, cut should be pointing at the new top * choicepoint */ #ifdef FROZEN_STACKS @@ -2339,9 +2339,9 @@ Yap_absmi(int inp) setregs(); JMPNext(); } - LOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); - ((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.NOfRetries++; - UNLOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); + LOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); + ((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; + UNLOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); PREG = NEXTOP(PREG, Otapl); GONext(); ENDOp(); @@ -2352,14 +2352,14 @@ Yap_absmi(int inp) UInt timestamp; CACHE_Y(B); - timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->u.OtaLl.s]); - if (!VALID_TIMESTAMP(timestamp, PREG->u.OtaLl.d)) { + timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->y_u.OtaLl.s]); + if (!VALID_TIMESTAMP(timestamp, PREG->y_u.OtaLl.d)) { /* jump to next instruction */ - PREG=PREG->u.OtaLl.n; + PREG=PREG->y_u.OtaLl.n; JMPNext(); } - restore_yaam_regs(PREG->u.OtaLl.n); - restore_args(PREG->u.OtaLl.s); + restore_yaam_regs(PREG->y_u.OtaLl.n); + restore_args(PREG->y_u.OtaLl.s); LOCAL_RetriesCounter--; if (LOCAL_RetriesCounter == 0) { saveregs(); @@ -2374,13 +2374,13 @@ Yap_absmi(int inp) setregs(); JMPNext(); } - LOCK(PREG->u.OtaLl.d->ClPred->StatisticsForPred.lock); - PREG->u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; - UNLOCK(PREG->u.OtaLl.d->ClPred->StatisticsForPred.lock); + LOCK(PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); + PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.NOfRetries++; + UNLOCK(PREG->y_u.OtaLl.d->ClPred->StatisticsForPred.lock); #ifdef THREADS - PP = PREG->u.OtaLl.d->ClPred; + PP = PREG->y_u.OtaLl.d->ClPred; #endif - PREG = PREG->u.OtaLl.d->ClCode; + PREG = PREG->y_u.OtaLl.d->ClCode; #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -2396,9 +2396,9 @@ Yap_absmi(int inp) BOp(count_trust_logical, OtILl); CACHE_Y(B); { - LogUpdIndex *cl = PREG->u.OtILl.block; + LogUpdIndex *cl = PREG->y_u.OtILl.block; PredEntry *ap = cl->ClPred; - LogUpdClause *lcl = PREG->u.OtILl.d; + LogUpdClause *lcl = PREG->y_u.OtILl.d; UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); if (!VALID_TIMESTAMP(timestamp, lcl)) { @@ -2530,7 +2530,7 @@ Yap_absmi(int inp) if (PP) { GONext(); } - PP = PREG->u.p.p; + PP = PREG->y_u.p.p; PELOCK(3, PP); #endif PREG = NEXTOP(PREG, p); @@ -2556,7 +2556,7 @@ Yap_absmi(int inp) /* we have our own copy for the clause */ #if MULTIPLE_STACKS { - LogUpdClause *cl = PREG->u.L.ClBase; + LogUpdClause *cl = PREG->y_u.L.ClBase; #if PARALLEL_YAP PredEntry *ap = cl->ClPred; #endif @@ -2569,7 +2569,7 @@ Yap_absmi(int inp) } #else { - LogUpdClause *cl = (LogUpdClause *)PREG->u.L.ClBase; + LogUpdClause *cl = (LogUpdClause *)PREG->y_u.L.ClBase; if (!(cl->ClFlags & InUseMask)) { cl->ClFlags |= InUseMask; TRAIL_CLREF(cl); @@ -2637,10 +2637,10 @@ Yap_absmi(int inp) PP = NULL; #else if (!(cl->ClFlags & InUseMask)) { - /* Clause *cl = (Clause *)PREG->u.EC.ClBase; + /* Clause *cl = (Clause *)PREG->y_u.EC.ClBase; - PREG->u.EC.ClTrail = TR-(tr_fr_ptr)LOCAL_TrailBase; - PREG->u.EC.ClENV = LCL0-YREG;*/ + PREG->y_u.EC.ClTrail = TR-(tr_fr_ptr)LOCAL_TrailBase; + PREG->y_u.EC.ClENV = LCL0-YREG;*/ cl->ClFlags |= InUseMask; TRAIL_CLREF(cl); } @@ -2689,10 +2689,10 @@ Yap_absmi(int inp) PP = NULL; #else if (!(cl->ClFlags & InUseMask)) { - /* Clause *cl = (Clause *)PREG->u.EC.ClBase; + /* Clause *cl = (Clause *)PREG->y_u.EC.ClBase; - PREG->u.EC.ClTrail = TR-(tr_fr_ptr)LOCAL_TrailBase; - PREG->u.EC.ClENV = LCL0-YREG;*/ + PREG->y_u.EC.ClTrail = TR-(tr_fr_ptr)LOCAL_TrailBase; + PREG->y_u.EC.ClENV = LCL0-YREG;*/ cl->ClFlags |= InUseMask; TRAIL_CLREF(cl); } @@ -2714,8 +2714,8 @@ Yap_absmi(int inp) /* ensure_space */ BOp(ensure_space, Osbpa); { - Int sz = PREG->u.Osbpa.i; - UInt arity = PREG->u.Osbpa.p->ArityOfPE; + Int sz = PREG->y_u.Osbpa.i; + UInt arity = PREG->y_u.Osbpa.p->ArityOfPE; if (Unsigned(HR) + sz > Unsigned(YREG)-StackGap( PASS_REGS1 )) { YENV[E_CP] = (CELL) CPREG; @@ -2723,7 +2723,7 @@ Yap_absmi(int inp) #ifdef DEPTH_LIMIT YENV[E_DEPTH] = DEPTH; #endif /* DEPTH_LIMIT */ - SET_ASP(YREG, PREG->u.Osbpa.s); + SET_ASP(YREG, PREG->y_u.Osbpa.s); PREG = NEXTOP(PREG,Osbpa); saveregs(); if (!Yap_gcl(sz, arity, YENV, PREG)) { @@ -2746,9 +2746,9 @@ Yap_absmi(int inp) /* spy_or_trymark */ BOp(spy_or_trymark, Otapl); - PELOCK(5, ((PredEntry *)(PREG->u.Otapl.p))); - PREG = (yamop *)(&(((PredEntry *)(PREG->u.Otapl.p))->OpcodeOfPred)); - UNLOCKPE(11,(PredEntry *)(PREG->u.Otapl.p)); + PELOCK(5, ((PredEntry *)(PREG->y_u.Otapl.p))); + PREG = (yamop *)(&(((PredEntry *)(PREG->y_u.Otapl.p))->OpcodeOfPred)); + UNLOCKPE(11,(PredEntry *)(PREG->y_u.Otapl.p)); goto dospy; ENDBOp(); @@ -2760,33 +2760,33 @@ Yap_absmi(int inp) /* The flags I check here should never change during execution */ CUT_wait_leftmost(); #endif /* YAPOR */ - if (PREG->u.Otapl.p->PredFlags & LogUpdatePredFlag) { - PELOCK(6,PREG->u.Otapl.p); - PP = PREG->u.Otapl.p; + if (PREG->y_u.Otapl.p->PredFlags & LogUpdatePredFlag) { + PELOCK(6,PREG->y_u.Otapl.p); + PP = PREG->y_u.Otapl.p; } - if (PREG->u.Otapl.p->CodeOfPred != PREG) { + if (PREG->y_u.Otapl.p->CodeOfPred != PREG) { /* oops, someone changed the procedure under our feet, fortunately this is no big deal because we haven't done anything yet */ PP = NULL; - PREG = PREG->u.Otapl.p->CodeOfPred; - UNLOCKPE(12,PREG->u.Otapl.p); + PREG = PREG->y_u.Otapl.p->CodeOfPred; + UNLOCKPE(12,PREG->y_u.Otapl.p); /* for profiler */ save_pc(); JMPNext(); } #endif CACHE_Y(YREG); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; /* I've got a read lock on the DB, so I don't need to care... niaaahh.... niahhhh... */ LOCK(DynamicLock(PREG)); /* one can now mess around with the predicate */ - UNLOCKPE(13,((PredEntry *)(PREG->u.Otapl.p))); + UNLOCKPE(13,((PredEntry *)(PREG->y_u.Otapl.p))); BEGD(d1); - d1 = PREG->u.Otapl.s; + d1 = PREG->y_u.Otapl.s; store_args(d1); store_yaam_regs(PREG, 0); ENDD(d1); @@ -2832,9 +2832,9 @@ Yap_absmi(int inp) ENDBOp(); BOp(profiled_retry_and_mark, Otapl); - LOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); - ((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.NOfRetries++; - UNLOCK(((PredEntry *)(PREG->u.Otapl.p))->StatisticsForPred.lock); + LOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); + ((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.NOfRetries++; + UNLOCK(((PredEntry *)(PREG->y_u.Otapl.p))->StatisticsForPred.lock); /* enter a retry dynamic */ ENDBOp(); @@ -2844,13 +2844,13 @@ Yap_absmi(int inp) CUT_wait_leftmost(); #endif /* YAPOR */ /* need to make the DB stable until I get the new clause */ - PELOCK(7,PREG->u.Otapl.p); + PELOCK(7,PREG->y_u.Otapl.p); CACHE_Y(B); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; LOCK(DynamicLock(PREG)); - UNLOCK(PREG->u.Otapl.p->PELock); + UNLOCK(PREG->y_u.Otapl.p->PELock); restore_yaam_regs(PREG); - restore_args(PREG->u.Otapl.s); + restore_args(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -3013,12 +3013,12 @@ Yap_absmi(int inp) go_on = TRUE; break; case _jump: - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; go_on = TRUE; break; case _retry_c: case _retry_userc: - low_level_trace(retry_pred, ipc->u.OtapFs.p, B->cp_args); + low_level_trace(retry_pred, ipc->y_u.OtapFs.p, B->cp_args); break; case _retry_profiled: case _count_retry: @@ -3035,7 +3035,7 @@ Yap_absmi(int inp) case _profiled_retry_and_mark: case _retry: case _trust: - low_level_trace(retry_pred, ipc->u.Otapl.p, B->cp_args); + low_level_trace(retry_pred, ipc->y_u.Otapl.p, B->cp_args); break; case _try_logical: case _retry_logical: @@ -3044,7 +3044,7 @@ Yap_absmi(int inp) case _trust_logical: case _profiled_trust_logical: case _count_trust_logical: - low_level_trace(retry_pred, ipc->u.OtILl.d->ClPred, B->cp_args); + low_level_trace(retry_pred, ipc->y_u.OtILl.d->ClPred, B->cp_args); break; case _Nstop: case _Ystop: @@ -3292,7 +3292,7 @@ Yap_absmi(int inp) ENDCACHE_Y_AS_ENV(); do_cut: #endif - SET_ASP(YREG, PREG->u.s.s); + SET_ASP(YREG, PREG->y_u.s.s); PREG = NEXTOP(NEXTOP(NEXTOP(PREG, s),Osbpp),l); /* assume cut is always in stack */ saveregs(); @@ -3316,7 +3316,7 @@ Yap_absmi(int inp) ENDCACHE_Y_AS_ENV(); do_cut_t: #endif - SET_ASP(YREG, PREG->u.s.s); + SET_ASP(YREG, PREG->y_u.s.s); /* assume cut is always in stack */ saveregs(); prune((choiceptr)YREG[E_CB] PASS_REGS); @@ -3339,7 +3339,7 @@ Yap_absmi(int inp) ENDCACHE_Y_AS_ENV(); do_cut_e: #endif - SET_ASP(YREG, PREG->u.s.s); + SET_ASP(YREG, PREG->y_u.s.s); PREG = NEXTOP(NEXTOP(NEXTOP(PREG, s),Osbpp),l); saveregs(); prune((choiceptr)SREG[E_CB] PASS_REGS); @@ -3356,7 +3356,7 @@ Yap_absmi(int inp) /* save_b_x Xi */ Op(save_b_x, x); BEGD(d0); - d0 = PREG->u.x.x; + d0 = PREG->y_u.x.x; #if defined(YAPOR_SBA) && defined(FROZEN_STACKS) XREG(d0) = MkIntegerTerm((Int)B); #else @@ -3370,9 +3370,9 @@ Yap_absmi(int inp) /* save_b_y Yi */ Op(save_b_y, y); #if defined(YAPOR_SBA) - INITIALIZE_PERMVAR(YREG+PREG->u.y.y,MkIntegerTerm((Int)B)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.y.y,MkIntegerTerm((Int)B)); #else - INITIALIZE_PERMVAR(YREG+PREG->u.y.y,MkIntegerTerm(LCL0-(CELL *)(B))); + INITIALIZE_PERMVAR(YREG+PREG->y_u.y.y,MkIntegerTerm(LCL0-(CELL *)(B))); #endif /* YAPOR_SBA*/ PREG = NEXTOP(PREG, y); GONext(); @@ -3387,11 +3387,11 @@ Yap_absmi(int inp) do_commit_b_x: #endif BEGD(d0); - d0 = XREG(PREG->u.xps.x); + d0 = XREG(PREG->y_u.xps.x); deref_head(d0, commit_b_x_unk); commit_b_x_nvar: /* skip a void call and a label */ - SET_ASP(YREG, PREG->u.xps.s); + SET_ASP(YREG, PREG->y_u.xps.s); PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xps),Osbpp),l); { choiceptr pt0; @@ -3430,10 +3430,10 @@ Yap_absmi(int inp) do_commit_b_y: #endif BEGD(d0); - d0 = YREG[PREG->u.yps.y]; + d0 = YREG[PREG->y_u.yps.y]; deref_head(d0, commit_b_y_unk); commit_b_y_nvar: - SET_ASP(YREG, PREG->u.yps.s); + SET_ASP(YREG, PREG->y_u.yps.s); PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yps),Osbpp),l); { choiceptr pt0; @@ -3474,14 +3474,14 @@ Yap_absmi(int inp) { PredEntry *pt0; CACHE_Y_AS_ENV(YREG); - pt0 = PREG->u.pp.p; + pt0 = PREG->y_u.pp.p; #ifndef NO_CHECKING check_stack(NoStackExecute, HR); goto skip_do_execute; #endif do_execute: FETCH_Y_FROM_ENV(YREG); - pt0 = PREG->u.pp.p; + pt0 = PREG->y_u.pp.p; skip_do_execute: #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { @@ -3523,14 +3523,14 @@ Yap_absmi(int inp) BOp(dexecute, pp); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) - low_level_trace(enter_pred,PREG->u.pp.p,XREGS+1); + low_level_trace(enter_pred,PREG->y_u.pp.p,XREGS+1); #endif /* LOW_LEVEL_TRACER */ CACHE_Y_AS_ENV(YREG); { PredEntry *pt0; CACHE_A1(); - pt0 = PREG->u.pp.p; + pt0 = PREG->y_u.pp.p; #ifndef NO_CHECKING /* check stacks */ check_stack(NoStackDExecute, HR); @@ -3538,7 +3538,7 @@ Yap_absmi(int inp) #endif continue_dexecute: FETCH_Y_FROM_ENV(YREG); - pt0 = PREG->u.pp.p; + pt0 = PREG->y_u.pp.p; skip_dexecute: #ifdef DEPTH_LIMIT if (DEPTH <= MkIntTerm(1)) {/* I assume Module==0 is primitives */ @@ -3601,14 +3601,14 @@ Yap_absmi(int inp) BOp(call, Osbpp); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - low_level_trace(enter_pred,PREG->u.Osbpp.p,XREGS+1); + low_level_trace(enter_pred,PREG->y_u.Osbpp.p,XREGS+1); } #endif /* LOW_LEVEL_TRACER */ CACHE_Y_AS_ENV(YREG); { PredEntry *pt; CACHE_A1(); - pt = PREG->u.Osbpp.p; + pt = PREG->y_u.Osbpp.p; #ifndef NO_CHECKING check_stack(NoStackCall, HR); goto skip_call; @@ -3616,11 +3616,11 @@ Yap_absmi(int inp) call_body: /* external jump if we don;t want to creep */ FETCH_Y_FROM_ENV(YREG); - pt = PREG->u.Osbpp.p; + pt = PREG->y_u.Osbpp.p; skip_call: ENV = ENV_YREG; /* Try to preserve the environment */ - ENV_YREG = (CELL *) (((char *) ENV_YREG) + PREG->u.Osbpp.s); + ENV_YREG = (CELL *) (((char *) ENV_YREG) + PREG->y_u.Osbpp.s); CPREG = NEXTOP(PREG, Osbpp); ALWAYS_LOOKAHEAD(pt->OpcodeOfPred); PREG = pt->CodeOfPred; @@ -3779,7 +3779,7 @@ Yap_absmi(int inp) Op(run_eam, os); if (inp==-9000) { /* use indexing to find out valid alternatives */ extern CELL *beam_ALTERNATIVES; - *beam_ALTERNATIVES= (CELL *) PREG->u.os.opcw; + *beam_ALTERNATIVES= (CELL *) PREG->y_u.os.opcw; beam_ALTERNATIVES++; if (OLD_B!=B) goto fail; #if PUSH_REGS @@ -3789,7 +3789,7 @@ Yap_absmi(int inp) } saveregs(); - if (!eam_am((PredEntry *) PREG->u.os.s)) FAIL(); + if (!eam_am((PredEntry *) PREG->y_u.os.s)) FAIL(); setregs(); /* cut */ @@ -3832,8 +3832,8 @@ Yap_absmi(int inp) Op(get_x_var, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xr); - XREG(PREG->u.xx.xl) = d0; + d0 = XREG(PREG->y_u.xx.xr); + XREG(PREG->y_u.xx.xl) = d0; PREG = NEXTOP(PREG, xx); ENDD(d0); GONext(); @@ -3842,8 +3842,8 @@ Yap_absmi(int inp) Op(get_y_var, yx); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yx.y; - d0 = XREG(PREG->u.yx.x); + pt0 = YREG + PREG->y_u.yx.y; + d0 = XREG(PREG->y_u.yx.x); PREG = NEXTOP(PREG, yx); INITIALIZE_PERMVAR(pt0,d0); GONext(); @@ -3855,12 +3855,12 @@ Yap_absmi(int inp) CACHE_Y(YREG); BEGD(d0); BEGP(pt0); - pt0 = S_YREG + PREG->u.yyxx.y1; - d0 = XREG(PREG->u.yyxx.x1); + pt0 = S_YREG + PREG->y_u.yyxx.y1; + d0 = XREG(PREG->y_u.yyxx.x1); BEGD(d1); BEGP(pt1); - pt1 = S_YREG + PREG->u.yyx.y2; - d1 = XREG(PREG->u.yyxx.x2); + pt1 = S_YREG + PREG->y_u.yyx.y2; + d1 = XREG(PREG->y_u.yyxx.x2); PREG = NEXTOP(PREG, yyxx); INITIALIZE_PERMVAR(pt0,d0); INITIALIZE_PERMVAR(pt1,d1); @@ -3878,14 +3878,14 @@ Yap_absmi(int inp) * YREG to the state of the second argument */ Op(get_x_val, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xl); + d0 = XREG(PREG->y_u.xx.xl); deref_head(d0, gvalx_unk); /* d0 will keep the first argument */ gvalx_nonvar: /* first argument is bound */ BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); deref_head(d1, gvalx_nonvar_unk); gvalx_nonvar_nonvar: @@ -3910,7 +3910,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gvalx_unk, gvalx_nonvar); /* first argument is unbound and in pt0 and in d0 */ BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); deref_head(d1, gvalx_var_unk); gvalx_var_nonvar: @@ -3938,7 +3938,7 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); BEGP(pt0); - pt0 = YREG + PREG->u.yx.y; + pt0 = YREG + PREG->y_u.yx.y; d0 = *pt0; /* From now on, it's just a copy of the code for get_x_val */ @@ -3947,7 +3947,7 @@ Yap_absmi(int inp) gvaly_nonvar: /* first argument is bound */ - d1 = XREG(PREG->u.yx.x); + d1 = XREG(PREG->y_u.yx.x); deref_head(d1, gvaly_nonvar_unk); gvaly_nonvar_nonvar: @@ -3969,7 +3969,7 @@ Yap_absmi(int inp) /* first argument may be unbound */ derefa_body(d0, pt0, gvaly_unk, gvaly_nonvar); /* first argument is unbound */ - d1 = XREG(PREG->u.yx.x); + d1 = XREG(PREG->y_u.yx.x); deref_head(d1, gvaly_var_unk); gvaly_var_nonvar: @@ -3994,8 +3994,8 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); /* fetch arguments */ - d0 = XREG(PREG->u.xc.x); - d1 = PREG->u.xc.c; + d0 = XREG(PREG->y_u.xc.x); + d1 = PREG->y_u.xc.c; BEGP(pt0); deref_head(d0, gatom_unk); @@ -4023,7 +4023,7 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); /* fetch arguments */ - d0 = XREG(PREG->u.x.x); + d0 = XREG(PREG->y_u.x.x); d1 = *SREG; SREG++; @@ -4060,7 +4060,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_2unk); /* argument is nonvar */ gatom_2nonvar: - if (d0 == PREG->u.cc.c1) { + if (d0 == PREG->y_u.cc.c1) { goto gatom_2b; } else { @@ -4069,12 +4069,12 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_2unk, gatom_2nonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cc.c1); + YapBind(pt0, PREG->y_u.cc.c1); ENDP(pt0); gatom_2b: /* fetch arguments */ d0 = ARG2; - d1 = PREG->u.cc.c2; + d1 = PREG->y_u.cc.c2; BEGP(pt0); deref_head(d0, gatom_2bunk); @@ -4108,7 +4108,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_3unk); /* argument is nonvar */ gatom_3nonvar: - if (d0 == PREG->u.ccc.c1) { + if (d0 == PREG->y_u.ccc.c1) { goto gatom_3b; } else { @@ -4117,7 +4117,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_3unk, gatom_3nonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccc.c1); + YapBind(pt0, PREG->y_u.ccc.c1); ENDP(pt0); gatom_3b: /* fetch arguments */ @@ -4127,7 +4127,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_3bunk); /* argument is nonvar */ gatom_3bnonvar: - if (d0 == PREG->u.ccc.c2) { + if (d0 == PREG->y_u.ccc.c2) { goto gatom_3c; } else { @@ -4136,12 +4136,12 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_3bunk, gatom_3bnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccc.c2); + YapBind(pt0, PREG->y_u.ccc.c2); ENDP(pt0); gatom_3c: /* fetch arguments */ d0 = ARG3; - d1 = PREG->u.ccc.c3; + d1 = PREG->y_u.ccc.c3; BEGP(pt0); deref_head(d0, gatom_3cunk); @@ -4175,7 +4175,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_4unk); /* argument is nonvar */ gatom_4nonvar: - if (d0 == PREG->u.cccc.c1) { + if (d0 == PREG->y_u.cccc.c1) { goto gatom_4b; } else { @@ -4184,7 +4184,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_4unk, gatom_4nonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccc.c1); + YapBind(pt0, PREG->y_u.cccc.c1); ENDP(pt0); gatom_4b: /* fetch arguments */ @@ -4194,7 +4194,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_4bunk); /* argument is nonvar */ gatom_4bnonvar: - if (d0 == PREG->u.cccc.c2) { + if (d0 == PREG->y_u.cccc.c2) { goto gatom_4c; } else { @@ -4203,7 +4203,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_4bunk, gatom_4bnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccc.c2); + YapBind(pt0, PREG->y_u.cccc.c2); ENDP(pt0); gatom_4c: /* fetch arguments */ @@ -4213,7 +4213,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_4cunk); /* argument is nonvar */ gatom_4cnonvar: - if (d0 == PREG->u.cccc.c3) { + if (d0 == PREG->y_u.cccc.c3) { goto gatom_4d; } else { @@ -4222,12 +4222,12 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_4cunk, gatom_4cnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccc.c3); + YapBind(pt0, PREG->y_u.cccc.c3); ENDP(pt0); gatom_4d: /* fetch arguments */ d0 = ARG4; - d1 = PREG->u.cccc.c4; + d1 = PREG->y_u.cccc.c4; BEGP(pt0); deref_head(d0, gatom_4dunk); @@ -4261,7 +4261,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_5unk); /* argument is nonvar */ gatom_5nonvar: - if (d0 == PREG->u.ccccc.c1) { + if (d0 == PREG->y_u.ccccc.c1) { goto gatom_5b; } else { @@ -4270,7 +4270,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_5unk, gatom_5nonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccccc.c1); + YapBind(pt0, PREG->y_u.ccccc.c1); ENDP(pt0); gatom_5b: /* fetch arguments */ @@ -4280,7 +4280,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_5bunk); /* argument is nonvar */ gatom_5bnonvar: - if (d0 == PREG->u.ccccc.c2) { + if (d0 == PREG->y_u.ccccc.c2) { goto gatom_5c; } else { @@ -4289,7 +4289,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_5bunk, gatom_5bnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccccc.c2); + YapBind(pt0, PREG->y_u.ccccc.c2); ENDP(pt0); gatom_5c: /* fetch arguments */ @@ -4299,7 +4299,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_5cunk); /* argument is nonvar */ gatom_5cnonvar: - if (d0 == PREG->u.ccccc.c3) { + if (d0 == PREG->y_u.ccccc.c3) { goto gatom_5d; } else { @@ -4308,7 +4308,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_5cunk, gatom_5cnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccccc.c3); + YapBind(pt0, PREG->y_u.ccccc.c3); ENDP(pt0); gatom_5d: /* fetch arguments */ @@ -4318,7 +4318,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_5dunk); /* argument is nonvar */ gatom_5dnonvar: - if (d0 == PREG->u.ccccc.c4) { + if (d0 == PREG->y_u.ccccc.c4) { goto gatom_5e; } else { @@ -4327,12 +4327,12 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_5dunk, gatom_5dnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.ccccc.c4); + YapBind(pt0, PREG->y_u.ccccc.c4); ENDP(pt0); gatom_5e: /* fetch arguments */ d0 = ARG5; - d1 = PREG->u.ccccc.c5; + d1 = PREG->y_u.ccccc.c5; BEGP(pt0); deref_head(d0, gatom_5eunk); @@ -4366,7 +4366,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_6unk); /* argument is nonvar */ gatom_6nonvar: - if (d0 == PREG->u.cccccc.c1) { + if (d0 == PREG->y_u.cccccc.c1) { goto gatom_6b; } else { @@ -4375,7 +4375,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_6unk, gatom_6nonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccccc.c1); + YapBind(pt0, PREG->y_u.cccccc.c1); ENDP(pt0); gatom_6b: /* fetch arguments */ @@ -4385,7 +4385,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_6bunk); /* argument is nonvar */ gatom_6bnonvar: - if (d0 == PREG->u.cccccc.c2) { + if (d0 == PREG->y_u.cccccc.c2) { goto gatom_6c; } else { @@ -4394,7 +4394,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_6bunk, gatom_6bnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccccc.c2); + YapBind(pt0, PREG->y_u.cccccc.c2); ENDP(pt0); gatom_6c: /* fetch arguments */ @@ -4404,7 +4404,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_6cunk); /* argument is nonvar */ gatom_6cnonvar: - if (d0 == PREG->u.cccccc.c3) { + if (d0 == PREG->y_u.cccccc.c3) { goto gatom_6d; } else { @@ -4413,7 +4413,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_6cunk, gatom_6cnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccccc.c3); + YapBind(pt0, PREG->y_u.cccccc.c3); ENDP(pt0); gatom_6d: /* fetch arguments */ @@ -4423,7 +4423,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_6dunk); /* argument is nonvar */ gatom_6dnonvar: - if (d0 == PREG->u.cccccc.c4) { + if (d0 == PREG->y_u.cccccc.c4) { goto gatom_6e; } else { @@ -4432,7 +4432,7 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_6dunk, gatom_6dnonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccccc.c4); + YapBind(pt0, PREG->y_u.cccccc.c4); ENDP(pt0); gatom_6e: /* fetch arguments */ @@ -4442,7 +4442,7 @@ Yap_absmi(int inp) deref_head(d0, gatom_6eunk); /* argument is nonvar */ gatom_6enonvar: - if (d0 == PREG->u.cccccc.c5) { + if (d0 == PREG->y_u.cccccc.c5) { goto gatom_6f; } else { @@ -4451,12 +4451,12 @@ Yap_absmi(int inp) deref_body(d0, pt0, gatom_6eunk, gatom_6enonvar); /* argument is a variable */ - YapBind(pt0, PREG->u.cccccc.c5); + YapBind(pt0, PREG->y_u.cccccc.c5); ENDP(pt0); gatom_6f: /* fetch arguments */ d0 = ARG6; - d1 = PREG->u.cccccc.c6; + d1 = PREG->y_u.cccccc.c6; BEGP(pt0); deref_head(d0, gatom_6funk); @@ -4485,7 +4485,7 @@ Yap_absmi(int inp) OpRW(get_list, x); BEGD(d0); - d0 = XREG(PREG->u.x.x); + d0 = XREG(PREG->y_u.x.x); deref_head(d0, glist_unk); glist_nonvar: @@ -4528,7 +4528,7 @@ Yap_absmi(int inp) OpRW(get_struct, xfa); BEGD(d0); - d0 = XREG(PREG->u.xfa.x); + d0 = XREG(PREG->y_u.xfa.x); deref_head(d0, gstruct_unk); gstruct_nonvar: @@ -4539,7 +4539,7 @@ Yap_absmi(int inp) CACHE_S(); S_SREG = RepAppl(d0); /* check functor */ - d0 = (CELL) (PREG->u.xfa.f); + d0 = (CELL) (PREG->y_u.xfa.f); if (*S_SREG != d0) { FAIL(); } @@ -4563,9 +4563,9 @@ Yap_absmi(int inp) pt0 = HR; ENDD(d1); /* first, put the functor */ - d0 = (CELL) (PREG->u.xfa.f); + d0 = (CELL) (PREG->y_u.xfa.f); *pt0++ = d0; - HR = pt0 + PREG->u.xfa.a; + HR = pt0 + PREG->y_u.xfa.a; PREG = NEXTOP(PREG, xfa); /* set SREG */ SREG = pt0; @@ -4579,7 +4579,7 @@ Yap_absmi(int inp) Op(get_float, xd); BEGD(d0); - d0 = XREG(PREG->u.xd.x); + d0 = XREG(PREG->y_u.xd.x); deref_head(d0, gfloat_unk); gfloat_nonvar: @@ -4594,7 +4594,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = PREG->u.xd.d; + pt1 = PREG->y_u.xd.d; PREG = NEXTOP(PREG, xd); if ( pt1[1] != pt0[1] @@ -4614,7 +4614,7 @@ Yap_absmi(int inp) /* set d1 to be the new structure we are going to create */ START_PREFETCH(xc); BEGD(d1); - d1 = AbsAppl(PREG->u.xd.d); + d1 = AbsAppl(PREG->y_u.xd.d); PREG = NEXTOP(PREG, xd); YapBind(pt0, d1); GONext(); @@ -4627,7 +4627,7 @@ Yap_absmi(int inp) Op(get_string, xu); BEGD(d0); - d0 = XREG(PREG->u.xu.x); + d0 = XREG(PREG->y_u.xu.x); deref_head(d0, gstring_unk); gstring_nonvar: @@ -4642,7 +4642,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = RepAppl(PREG->u.xu.ut); + pt1 = RepAppl(PREG->y_u.xu.ut); PREG = NEXTOP(PREG, xu); if ( pt1[1] != pt0[1] || @@ -4660,7 +4660,7 @@ Yap_absmi(int inp) /* set d1 to be the new structure we are going to create */ START_PREFETCH(xc); BEGD(d1); - d1 = PREG->u.xu.ut; + d1 = PREG->y_u.xu.ut; PREG = NEXTOP(PREG, xu); YapBind(pt0, d1); GONext(); @@ -4673,7 +4673,7 @@ Yap_absmi(int inp) Op(get_longint, xi); BEGD(d0); - d0 = XREG(PREG->u.xi.x); + d0 = XREG(PREG->y_u.xi.x); deref_head(d0, glongint_unk); glongint_nonvar: @@ -4687,7 +4687,7 @@ Yap_absmi(int inp) if (*pt0 != (CELL)FunctorLongInt) { FAIL(); } - if (PREG->u.xi.i[1] != (CELL)pt0[1]) FAIL(); + if (PREG->y_u.xi.i[1] != (CELL)pt0[1]) FAIL(); ENDP(pt0); PREG = NEXTOP(PREG, xi); /* enter read mode */ @@ -4700,7 +4700,7 @@ Yap_absmi(int inp) /* set d1 to be the new structure we are going to create */ START_PREFETCH(xi); BEGD(d1); - d1 = AbsAppl(PREG->u.xi.i); + d1 = AbsAppl(PREG->y_u.xi.i); PREG = NEXTOP(PREG, xi); YapBind(pt0, d1); GONext(); @@ -4714,7 +4714,7 @@ Yap_absmi(int inp) Op(get_bigint, xN); #ifdef USE_GMP BEGD(d0); - d0 = XREG(PREG->u.xN.x); + d0 = XREG(PREG->y_u.xN.x); deref_head(d0, gbigint_unk); gbigint_nonvar: @@ -4729,7 +4729,7 @@ Yap_absmi(int inp) { FAIL(); } - if (Yap_gmp_tcmp_big_big(d0,PREG->u.xN.b)) + if (Yap_gmp_tcmp_big_big(d0,PREG->y_u.xN.b)) FAIL(); PREG = NEXTOP(PREG, xN); ENDP(pt0); @@ -4743,7 +4743,7 @@ Yap_absmi(int inp) /* set d1 to be the new structure we are going to create */ START_PREFETCH(xN); BEGD(d1); - d1 = PREG->u.xN.b; + d1 = PREG->y_u.xN.b; PREG = NEXTOP(PREG, xN); YapBind(pt0, d1); GONext(); @@ -4760,13 +4760,13 @@ Yap_absmi(int inp) Op(get_dbterm, xD); BEGD(d0); - d0 = XREG(PREG->u.xD.x); + d0 = XREG(PREG->y_u.xD.x); deref_head(d0, gdbterm_unk); gdbterm_nonvar: BEGD(d1); /* we have met a preexisting dbterm */ - d1 = PREG->u.xD.D; + d1 = PREG->y_u.xD.D; PREG = NEXTOP(PREG, xD); UnifyBound(d0,d1); ENDD(d1); @@ -4777,7 +4777,7 @@ Yap_absmi(int inp) /* set d1 to be the new structure we are going to create */ START_PREFETCH(xD); BEGD(d1); - d1 = PREG->u.xD.D; + d1 = PREG->y_u.xD.D; PREG = NEXTOP(PREG, xD); YapBind(pt0, d1); GONext(); @@ -4793,7 +4793,7 @@ Yap_absmi(int inp) \************************************************************************/ OpRW(glist_valx, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xl); + d0 = XREG(PREG->y_u.xx.xl); deref_head(d0, glist_valx_write); glist_valx_read: BEGP(pt0); @@ -4812,7 +4812,7 @@ Yap_absmi(int inp) glist_valx_nonvar: /* first argument is bound */ BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); deref_head(d1, glist_valx_nonvar_unk); glist_valx_nonvar_nonvar: @@ -4836,7 +4836,7 @@ Yap_absmi(int inp) /* head may be unbound */ derefa_body(d0, pt0, glist_valx_unk, glist_valx_nonvar); /* head is unbound, pt0 has the value */ - d0 = XREG(PREG->u.xx.xr); + d0 = XREG(PREG->y_u.xx.xr); deref_head(d0, glist_valx_var_unk); glist_valx_var_nonvar: @@ -4861,7 +4861,7 @@ Yap_absmi(int inp) /* enter write mode */ S_SREG = HR; BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); d0 = AbsPair(S_SREG); S_SREG[0] = d1; ENDD(d1); @@ -4880,7 +4880,7 @@ Yap_absmi(int inp) OpRW(glist_valy, yx); BEGD(d0); - d0 = XREG(PREG->u.yx.x); + d0 = XREG(PREG->y_u.yx.x); deref_head(d0, glist_valy_write); glist_valy_read: BEGP(pt0); @@ -4899,7 +4899,7 @@ Yap_absmi(int inp) /* first argument is bound */ BEGD(d1); BEGP(pt1); - pt1 = YREG + PREG->u.yx.y; + pt1 = YREG + PREG->y_u.yx.y; d1 = *pt1; PREG = NEXTOP(PREG, yx); deref_head(d1, glist_valy_nonvar_unk); @@ -4923,7 +4923,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, glist_valy_unk, glist_valy_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.yx.y; + pt1 = YREG+PREG->y_u.yx.y; d1 = *pt1; deref_head(d1, glist_valy_var_unk); glist_valy_var_nonvar: @@ -4953,7 +4953,7 @@ Yap_absmi(int inp) YapBind(pt0, d0); BEGD(d0); /* include XREG on it */ - d0 = YREG[PREG->u.yx.y]; + d0 = YREG[PREG->y_u.yx.y]; pt1[0] = d0; ENDD(d0); HR = pt1 + 2; @@ -4969,7 +4969,7 @@ Yap_absmi(int inp) Op(gl_void_varx, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xl); + d0 = XREG(PREG->y_u.xx.xl); deref_head(d0, glist_void_varx_write); glist_void_varx_read: /* did we find a list? */ @@ -4980,7 +4980,7 @@ Yap_absmi(int inp) BEGP(pt0); pt0 = RepPair(d0); d0 = pt0[1]; - XREG(PREG->u.xx.xr) = d0; + XREG(PREG->y_u.xx.xr) = d0; PREG = NEXTOP(PREG, xx); ALWAYS_GONext(); ENDP(pt0); @@ -4992,7 +4992,7 @@ Yap_absmi(int inp) BEGP(pt1); pt1 = HR; /* include XREG on it */ - XREG(PREG->u.xx.xr) = + XREG(PREG->y_u.xx.xr) = Unsigned(pt1 + 1); RESET_VARIABLE(pt1); RESET_VARIABLE(pt1+1); @@ -5010,7 +5010,7 @@ Yap_absmi(int inp) Op(gl_void_vary, yx); BEGD(d0); - d0 = XREG(PREG->u.yx.x); + d0 = XREG(PREG->y_u.yx.x); deref_head(d0, glist_void_vary_write); glist_void_vary_read: /* did we find a list? */ @@ -5021,7 +5021,7 @@ Yap_absmi(int inp) pt0 = RepPair(d0); d0 = pt0[1]; ENDP(pt0); - INITIALIZE_PERMVAR(YREG+PREG->u.yx.y,d0); + INITIALIZE_PERMVAR(YREG+PREG->y_u.yx.y,d0); PREG = NEXTOP(PREG, yx); GONext(); @@ -5031,7 +5031,7 @@ Yap_absmi(int inp) BEGP(pt1); pt1 = HR; /* include XREG on it */ - INITIALIZE_PERMVAR(YREG+PREG->u.yx.y,Unsigned(pt1 + 1)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.yx.y,Unsigned(pt1 + 1)); PREG = NEXTOP(PREG, yx); RESET_VARIABLE(pt1); RESET_VARIABLE(pt1+1); @@ -5047,7 +5047,7 @@ Yap_absmi(int inp) Op(gl_void_valx, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xl); + d0 = XREG(PREG->y_u.xx.xl); deref_head(d0, glist_void_valx_write); glist_void_valx_read: BEGP(pt0); @@ -5063,7 +5063,7 @@ Yap_absmi(int inp) glist_void_valx_nonvar: /* first argument is bound */ BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); deref_head(d1, glist_void_valx_nonvar_unk); glist_void_valx_nonvar_nonvar: @@ -5086,7 +5086,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, glist_void_valx_unk, glist_void_valx_nonvar); /* first argument is unbound */ BEGD(d1); - d1 = XREG(PREG->u.xx.xr); + d1 = XREG(PREG->y_u.xx.xr); deref_head(d1, glist_void_valx_var_unk); glist_void_valx_var_nonvar: @@ -5115,7 +5115,7 @@ Yap_absmi(int inp) pt1 = HR; BEGD(d0); /* include XREG on it */ - d0 = XREG(PREG->u.xx.xr); + d0 = XREG(PREG->y_u.xx.xr); RESET_VARIABLE(pt1); pt1[1] = d0; HR = pt1 + 2; @@ -5130,7 +5130,7 @@ Yap_absmi(int inp) Op(gl_void_valy, yx); BEGD(d0); - d0 = XREG(PREG->u.yx.x); + d0 = XREG(PREG->y_u.yx.x); deref_head(d0, glist_void_valy_write); glist_void_valy_read: BEGP(pt0); @@ -5147,7 +5147,7 @@ Yap_absmi(int inp) /* first argument is bound */ BEGD(d1); BEGP(pt1); - pt1 = YREG+PREG->u.yx.y; + pt1 = YREG+PREG->y_u.yx.y; d1 = *pt1; deref_head(d1, glist_void_valy_nonvar_unk); @@ -5170,7 +5170,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, glist_void_valy_unk, glist_void_valy_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.yx.y; + pt1 = YREG+PREG->y_u.yx.y; d1 = *pt1; deref_head(d1, glist_void_valy_var_unk); @@ -5199,7 +5199,7 @@ Yap_absmi(int inp) S_SREG = HR; /* include XREG on it */ BEGD(d1); - d1 = YREG[PREG->u.yx.y]; + d1 = YREG[PREG->y_u.yx.y]; RESET_VARIABLE(S_SREG); S_SREG[1] = d1; ENDD(d1); @@ -5228,7 +5228,7 @@ Yap_absmi(int inp) #endif WRITEBACK_S(S_SREG+1); ALWAYS_START_PREFETCH(ox); - XREG(PREG->u.ox.x) = d0; + XREG(PREG->y_u.ox.x) = d0; PREG = NEXTOP(PREG, ox); ALWAYS_GONext(); ALWAYS_END_PREFETCH(); @@ -5240,7 +5240,7 @@ Yap_absmi(int inp) CACHE_S(); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.ox.x); + pt0 = &XREG(PREG->y_u.ox.x); PREG = NEXTOP(PREG, ox); RESET_VARIABLE(S_SREG); *pt0 = (CELL) S_SREG; @@ -5255,7 +5255,7 @@ Yap_absmi(int inp) BEGP(pt0); BEGD(d0); d0 = SREG[0]; - pt0 = &XREG(PREG->u.ox.x); + pt0 = &XREG(PREG->y_u.ox.x); PREG = NEXTOP(PREG, ox); #ifdef YAPOR_SBA if (d0 == 0) @@ -5273,7 +5273,7 @@ Yap_absmi(int inp) CACHE_S(); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.ox.x); + pt0 = &XREG(PREG->y_u.ox.x); PREG = NEXTOP(PREG, ox); RESET_VARIABLE(S_SREG); *pt0 = (CELL)S_SREG; @@ -5288,7 +5288,7 @@ Yap_absmi(int inp) ALWAYS_START_PREFETCH(oxx); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.oxx.xr); + pt0 = &XREG(PREG->y_u.oxx.xr); BEGD(d0); d0 = S_SREG[0]; BEGD(d1); @@ -5300,7 +5300,7 @@ Yap_absmi(int inp) d1 = (CELL)(S_SREG+1); #endif WRITEBACK_S(S_SREG+2); - XREG(PREG->u.oxx.xl) = d0; + XREG(PREG->y_u.oxx.xl) = d0; PREG = NEXTOP(PREG, oxx); *pt0 = d1; ENDD(d0); @@ -5315,9 +5315,9 @@ Yap_absmi(int inp) CACHE_S(); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.oxx.xr); + pt0 = &XREG(PREG->y_u.oxx.xr); RESET_VARIABLE(S_SREG); - XREG(PREG->u.oxx.xl) = (CELL) S_SREG; + XREG(PREG->y_u.oxx.xl) = (CELL) S_SREG; S_SREG++; PREG = NEXTOP(PREG, oxx); RESET_VARIABLE(S_SREG); @@ -5333,17 +5333,17 @@ Yap_absmi(int inp) CACHE_S(); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.oxx.xr); + pt0 = &XREG(PREG->y_u.oxx.xr); BEGD(d0); d0 = S_SREG[0]; BEGD(d1); d1 = S_SREG[1]; #ifdef YAPOR_SBA if (d0 == 0) - XREG(PREG->u.oxx.xl) = (CELL)S_SREG; + XREG(PREG->y_u.oxx.xl) = (CELL)S_SREG; else #endif - XREG(PREG->u.oxx.xl) = d0; + XREG(PREG->y_u.oxx.xl) = d0; PREG = NEXTOP(PREG, oxx); #ifdef YAPOR_SBA if (d1 == 0) @@ -5363,8 +5363,8 @@ Yap_absmi(int inp) CACHE_S(); READ_IN_S(); BEGP(pt0); - pt0 = &XREG(PREG->u.oxx.xr); - XREG(PREG->u.oxx.xl) = (CELL) S_SREG; + pt0 = &XREG(PREG->y_u.oxx.xr); + XREG(PREG->y_u.oxx.xl) = (CELL) S_SREG; RESET_VARIABLE(S_SREG); S_SREG++; *pt0 = (CELL) S_SREG; @@ -5380,10 +5380,10 @@ Yap_absmi(int inp) d0 = *SREG++; #ifdef YAPOR_SBA if (d0 == 0) { - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,(CELL)(SREG-1)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,(CELL)(SREG-1)); } else #else - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,d0); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,d0); #endif /* YAPOR_SBA */ PREG = NEXTOP(PREG, oy); GONext(); @@ -5393,7 +5393,7 @@ Yap_absmi(int inp) OpW(unify_y_var_write, oy); CACHE_S(); READ_IN_S(); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,(CELL) S_SREG); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,(CELL) S_SREG); PREG = NEXTOP(PREG, oy); RESET_VARIABLE(S_SREG); WRITEBACK_S(S_SREG+1); @@ -5406,10 +5406,10 @@ Yap_absmi(int inp) d0 = SREG[0]; #ifdef YAPOR_SBA if (d0 == 0) { - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,(CELL)SREG); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,(CELL)SREG); } else #else - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,d0); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,d0); #endif /* YAPOR_SBA */ PREG = NEXTOP(PREG, oy); GONext(); @@ -5419,7 +5419,7 @@ Yap_absmi(int inp) Op(unify_l_y_var_write, oy); CACHE_S(); READ_IN_S(); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,(CELL) S_SREG); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,(CELL) S_SREG); PREG = NEXTOP(PREG, oy); RESET_VARIABLE(S_SREG); ENDCACHE_S(); @@ -5438,7 +5438,7 @@ Yap_absmi(int inp) uvalx_nonvar: /* first argument is bound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, uvalx_nonvar_unk); uvalx_nonvar_nonvar: @@ -5462,7 +5462,7 @@ Yap_absmi(int inp) /* first argument may be unbound */ derefa_body(d0, pt0, uvalx_unk, uvalx_nonvar); /* first argument is unbound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, uvalx_var_unk); uvalx_var_nonvar: @@ -5487,7 +5487,7 @@ Yap_absmi(int inp) OpW(unify_x_val_write, ox); /* we are in write mode */ - *SREG++ = XREG(PREG->u.ox.x); + *SREG++ = XREG(PREG->y_u.ox.x); PREG = NEXTOP(PREG, ox); GONextW(); ENDOpW(); @@ -5504,7 +5504,7 @@ Yap_absmi(int inp) ulvalx_nonvar: /* first argument is bound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, ulvalx_nonvar_unk); ulvalx_nonvar_nonvar: @@ -5525,7 +5525,7 @@ Yap_absmi(int inp) /* first argument may be unbound */ derefa_body(d0, pt0, ulvalx_unk, ulvalx_nonvar); /* first argument is unbound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, ulvalx_var_unk); ulvalx_var_nonvar: @@ -5548,7 +5548,7 @@ Yap_absmi(int inp) Op(unify_l_x_val_write, ox); /* we are in write mode */ - SREG[0] = XREG(PREG->u.ox.x); + SREG[0] = XREG(PREG->y_u.ox.x); PREG = NEXTOP(PREG, ox); GONext(); ENDOp(); @@ -5566,7 +5566,7 @@ Yap_absmi(int inp) uvaly_nonvar: /* first argument is bound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, uvaly_nonvar_unk); @@ -5590,7 +5590,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, uvaly_unk, uvaly_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, uvaly_var_unk); @@ -5616,10 +5616,10 @@ Yap_absmi(int inp) OpW(unify_y_val_write, oy); /* we are in write mode */ BEGD(d0); - d0 = YREG[PREG->u.oy.y]; + d0 = YREG[PREG->y_u.oy.y]; #ifdef YAPOR_SBA if (d0 == 0) /* free variable */ - *SREG++ = (CELL)(YREG+PREG->u.oy.y); + *SREG++ = (CELL)(YREG+PREG->y_u.oy.y); else #endif *SREG++ = d0; @@ -5641,7 +5641,7 @@ Yap_absmi(int inp) ulvaly_nonvar: /* first argument is bound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, ulvaly_nonvar_unk); @@ -5663,7 +5663,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ulvaly_unk, ulvaly_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, ulvaly_var_unk); @@ -5689,10 +5689,10 @@ Yap_absmi(int inp) Op(unify_l_y_val_write, oy); /* we are in write mode */ BEGD(d0); - d0 = YREG[PREG->u.oy.y]; + d0 = YREG[PREG->y_u.oy.y]; #ifdef YAPOR_SBA if (d0 == 0) /* new variable */ - SREG[0] = (CELL)(YREG+PREG->u.oy.y); + SREG[0] = (CELL)(YREG+PREG->y_u.oy.y); else #endif SREG[0] = d0; @@ -5713,7 +5713,7 @@ Yap_absmi(int inp) uvalx_loc_nonvar: /* first argument is bound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, uvalx_loc_nonvar_unk); uvalx_loc_nonvar_nonvar: @@ -5737,7 +5737,7 @@ Yap_absmi(int inp) /* first argument may be unbound */ derefa_body(d0, pt0, uvalx_loc_unk, uvalx_loc_nonvar); /* first argument is unbound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, uvalx_loc_var_unk); uvalx_loc_var_nonvar: @@ -5765,7 +5765,7 @@ Yap_absmi(int inp) OpW(unify_x_loc_write, ox); /* we are in write mode */ BEGD(d0); - d0 = XREG(PREG->u.ox.x); + d0 = XREG(PREG->y_u.ox.x); deref_head(d0, unify_x_loc_unk); unify_x_loc_nonvar: *SREG++ = d0; @@ -5808,7 +5808,7 @@ Yap_absmi(int inp) ulvalx_loc_nonvar: /* first argument is bound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, ulvalx_loc_nonvar_unk); ulvalx_loc_nonvar_nonvar: @@ -5827,7 +5827,7 @@ Yap_absmi(int inp) /* first argument may be unbound */ derefa_body(d0, pt0, ulvalx_loc_unk, ulvalx_loc_nonvar); /* first argument is unbound */ - d1 = XREG(PREG->u.ox.x); + d1 = XREG(PREG->y_u.ox.x); deref_head(d1, ulvalx_loc_var_unk); ulvalx_loc_var_nonvar: @@ -5851,7 +5851,7 @@ Yap_absmi(int inp) Op(unify_l_x_loc_write, ox); /* we are in write mode */ BEGD(d0); - d0 = XREG(PREG->u.ox.x); + d0 = XREG(PREG->y_u.ox.x); deref_head(d0, ulnify_x_loc_unk); ulnify_x_loc_nonvar: SREG[0] = d0; @@ -5889,7 +5889,7 @@ Yap_absmi(int inp) uvaly_loc_nonvar: /* structure is bound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, uvaly_loc_nonvar_unk); @@ -5913,7 +5913,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, uvaly_loc_unk, uvaly_loc_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, uvaly_loc_var_unk); @@ -5942,7 +5942,7 @@ Yap_absmi(int inp) /* we are in write mode */ BEGD(d0); BEGP(pt0); - pt0 = YREG+PREG->u.oy.y; + pt0 = YREG+PREG->y_u.oy.y; d0 = *pt0; deref_head(d0, unify_y_loc_unk); unify_y_loc_nonvar: @@ -5984,7 +5984,7 @@ Yap_absmi(int inp) ulvaly_loc_nonvar: /* structure is bound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, ulvaly_loc_nonvar_unk); @@ -6006,7 +6006,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ulvaly_loc_unk, ulvaly_loc_nonvar); /* first argument is unbound */ BEGP(pt1); - pt1 = YREG+PREG->u.oy.y; + pt1 = YREG+PREG->y_u.oy.y; d1 = *pt1; deref_head(d1, ulvaly_loc_var_unk); @@ -6033,7 +6033,7 @@ Yap_absmi(int inp) /* we are in write mode */ BEGD(d0); BEGP(pt0); - pt0 = YREG+PREG->u.oy.y; + pt0 = YREG+PREG->y_u.oy.y; d0 = *pt0; deref_head(d0, ulunify_y_loc_unk); ulunify_y_loc_nonvar: @@ -6092,7 +6092,7 @@ Yap_absmi(int inp) ENDOp(); Op(unify_n_voids, os); - SREG += PREG->u.os.s; + SREG += PREG->y_u.os.s; PREG = NEXTOP(PREG, os); GONext(); ENDOp(); @@ -6100,7 +6100,7 @@ Yap_absmi(int inp) OpW(unify_n_voids_write, os); BEGD(d0); CACHE_S(); - d0 = PREG->u.os.s; + d0 = PREG->y_u.os.s; READ_IN_S(); PREG = NEXTOP(PREG, os); for (; d0 > 0; d0--) { @@ -6120,7 +6120,7 @@ Yap_absmi(int inp) Op(unify_l_n_voids_write, os); BEGD(d0); - d0 = PREG->u.os.s; + d0 = PREG->y_u.os.s; PREG = NEXTOP(PREG, os); CACHE_S(); READ_IN_S(); @@ -6140,14 +6140,14 @@ Yap_absmi(int inp) d0 = *pt0; deref_head(d0, uatom_unk); uatom_nonvar: - if (d0 != PREG->u.oc.c) { + if (d0 != PREG->y_u.oc.c) { FAIL(); } PREG = NEXTOP(PREG, oc); GONext(); derefa_body(d0, pt0, uatom_unk, uatom_nonvar); - d0 = PREG->u.oc.c; + d0 = PREG->y_u.oc.c; PREG = NEXTOP(PREG, oc); Bind_Global(pt0, d0); GONext(); @@ -6156,7 +6156,7 @@ Yap_absmi(int inp) ENDOp(); OpW(unify_atom_write, oc); - * SREG++ = PREG->u.oc.c; + * SREG++ = PREG->y_u.oc.c; PREG = NEXTOP(PREG, oc); GONextW(); ENDOpW(); @@ -6168,14 +6168,14 @@ Yap_absmi(int inp) d0 = *SREG; deref_head(d0, ulatom_unk); ulatom_nonvar: - if (d0 != PREG->u.oc.c) { + if (d0 != PREG->y_u.oc.c) { FAIL(); } PREG = NEXTOP(PREG, oc); GONext(); derefa_body(d0, pt0, ulatom_unk, ulatom_nonvar); - d0 = PREG->u.oc.c; + d0 = PREG->y_u.oc.c; PREG = NEXTOP(PREG, oc); Bind_Global(pt0, d0); GONext(); @@ -6184,17 +6184,17 @@ Yap_absmi(int inp) ENDOp(); Op(unify_l_atom_write, oc); - SREG[0] = PREG->u.oc.c; + SREG[0] = PREG->y_u.oc.c; PREG = NEXTOP(PREG, oc); GONext(); ENDOp(); Op(unify_n_atoms, osc); { - register Int i = PREG->u.osc.s; /* not enough registers */ + register Int i = PREG->y_u.osc.s; /* not enough registers */ BEGD(d1); - d1 = PREG->u.osc.c; + d1 = PREG->y_u.osc.c; for (; i > 0; i--) { BEGD(d0); BEGP(pt0); @@ -6222,8 +6222,8 @@ Yap_absmi(int inp) OpW(unify_n_atoms_write, osc); BEGD(d0); BEGD(d1); - d0 = PREG->u.osc.s; - d1 = PREG->u.osc.c; + d0 = PREG->y_u.osc.s; + d1 = PREG->y_u.osc.c; /* write N atoms */ CACHE_S(); READ_IN_S(); @@ -6257,7 +6257,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = PREG->u.od.d; + pt1 = PREG->y_u.od.d; PREG = NEXTOP(PREG, od); if ( pt1[1] != pt0[1] @@ -6271,7 +6271,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ufloat_unk, ufloat_nonvar); BEGD(d1); - d1 = AbsAppl(PREG->u.od.d); + d1 = AbsAppl(PREG->y_u.od.d); PREG = NEXTOP(PREG, od); Bind_Global(pt0, d1); GONext(); @@ -6281,7 +6281,7 @@ Yap_absmi(int inp) ENDOp(); OpW(unify_float_write, od); - * SREG++ = AbsAppl(PREG->u.od.d); + * SREG++ = AbsAppl(PREG->y_u.od.d); PREG = NEXTOP(PREG, od); GONextW(); ENDOpW(); @@ -6305,7 +6305,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = PREG->u.od.d; + pt1 = PREG->y_u.od.d; PREG = NEXTOP(PREG, od); if ( pt1[1] != pt0[1] @@ -6319,7 +6319,7 @@ Yap_absmi(int inp) derefa_body(d0, S_SREG, ulfloat_unk, ulfloat_nonvar); BEGD(d1); - d1 = AbsAppl(PREG->u.od.d); + d1 = AbsAppl(PREG->y_u.od.d); PREG = NEXTOP(PREG, od); Bind_Global(S_SREG, d1); GONext(); @@ -6329,7 +6329,7 @@ Yap_absmi(int inp) ENDOp(); Op(unify_l_float_write, od); - SREG[0] = AbsAppl(PREG->u.od.d); + SREG[0] = AbsAppl(PREG->y_u.od.d); PREG = NEXTOP(PREG, od); GONext(); ENDOp(); @@ -6354,7 +6354,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = RepAppl(PREG->u.ou.ut); + pt1 = RepAppl(PREG->y_u.ou.ut); PREG = NEXTOP(PREG, ou); if ( pt1[1] != pt0[1] @@ -6366,7 +6366,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ustring_unk, ustring_nonvar); BEGD(d1); - d1 = PREG->u.ou.ut; + d1 = PREG->y_u.ou.ut; PREG = NEXTOP(PREG, ou); Bind_Global(pt0, d1); GONext(); @@ -6394,7 +6394,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = RepAppl(PREG->u.ou.ut); + pt1 = RepAppl(PREG->y_u.ou.ut); PREG = NEXTOP(PREG, ou); if ( pt1[1] != pt0[1] @@ -6406,7 +6406,7 @@ Yap_absmi(int inp) derefa_body(d0, S_SREG, ulstring_unk, ulstring_nonvar); BEGD(d1); - d1 = PREG->u.ou.ut; + d1 = PREG->y_u.ou.ut; PREG = NEXTOP(PREG, ou); Bind_Global(S_SREG, d1); GONext(); @@ -6435,7 +6435,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = PREG->u.oi.i; + pt1 = PREG->y_u.oi.i; PREG = NEXTOP(PREG, oi); if (pt1[1] != pt0[1]) FAIL(); ENDP(pt1); @@ -6444,7 +6444,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ulongint_unk, ulongint_nonvar); BEGD(d1); - d1 = AbsAppl(PREG->u.oi.i); + d1 = AbsAppl(PREG->y_u.oi.i); PREG = NEXTOP(PREG, oi); Bind_Global(pt0, d1); GONext(); @@ -6454,7 +6454,7 @@ Yap_absmi(int inp) ENDOp(); OpW(unify_longint_write, oi); - * SREG++ = AbsAppl(PREG->u.oi.i); + * SREG++ = AbsAppl(PREG->y_u.oi.i); PREG = NEXTOP(PREG, oi); GONextW(); ENDOpW(); @@ -6478,7 +6478,7 @@ Yap_absmi(int inp) } ENDD(d0); BEGP(pt1); - pt1 = PREG->u.oi.i; + pt1 = PREG->y_u.oi.i; PREG = NEXTOP(PREG, oi); if (pt1[1] != pt0[1]) FAIL(); ENDP(pt1); @@ -6487,7 +6487,7 @@ Yap_absmi(int inp) derefa_body(d0, S_SREG, ullongint_unk, ullongint_nonvar); BEGD(d1); - d1 = AbsAppl(PREG->u.oi.i); + d1 = AbsAppl(PREG->y_u.oi.i); PREG = NEXTOP(PREG, oi); Bind_Global(S_SREG, d1); GONext(); @@ -6497,7 +6497,7 @@ Yap_absmi(int inp) ENDOp(); Op(unify_l_longint_write, oi); - SREG[0] = AbsAppl(PREG->u.oi.i); + SREG[0] = AbsAppl(PREG->y_u.oi.i); PREG = NEXTOP(PREG, oi); GONext(); ENDOp(); @@ -6523,7 +6523,7 @@ Yap_absmi(int inp) FAIL(); } ENDD(d1); - if (Yap_gmp_tcmp_big_big(d0,PREG->u.oN.b)) + if (Yap_gmp_tcmp_big_big(d0,PREG->y_u.oN.b)) FAIL(); PREG = NEXTOP(PREG, oN); ENDP(pt0); @@ -6531,7 +6531,7 @@ Yap_absmi(int inp) derefa_body(d0, pt0, ubigint_unk, ubigint_nonvar); BEGD(d1); - d1 = PREG->u.oN.b; + d1 = PREG->y_u.oN.b; PREG = NEXTOP(PREG, oN); Bind_Global(pt0, d1); GONext(); @@ -6563,7 +6563,7 @@ Yap_absmi(int inp) FAIL(); } ENDD(d0); - if (Yap_gmp_tcmp_big_big(d0,PREG->u.oN.b)) + if (Yap_gmp_tcmp_big_big(d0,PREG->y_u.oN.b)) FAIL(); PREG = NEXTOP(PREG, oN); ENDP(pt0); @@ -6571,7 +6571,7 @@ Yap_absmi(int inp) derefa_body(d0, S_SREG, ulbigint_unk, ulbigint_nonvar); BEGD(d1); - d1 = PREG->u.oN.b; + d1 = PREG->y_u.oN.b; PREG = NEXTOP(PREG, oN); Bind_Global(S_SREG, d1); GONext(); @@ -6592,14 +6592,14 @@ Yap_absmi(int inp) udbterm_nonvar: BEGD(d1); /* we have met a preexisting dbterm */ - d1 = PREG->u.oD.D; + d1 = PREG->y_u.oD.D; PREG = NEXTOP(PREG, oD); UnifyBound(d0,d1); ENDD(d1); derefa_body(d0, pt0, udbterm_unk, udbterm_nonvar); BEGD(d1); - d1 = PREG->u.oD.D; + d1 = PREG->y_u.oD.D; PREG = NEXTOP(PREG, oD); Bind_Global(pt0, d1); GONext(); @@ -6617,14 +6617,14 @@ Yap_absmi(int inp) uldbterm_nonvar: BEGD(d1); /* we have met a preexisting dbterm */ - d1 = PREG->u.oD.D; + d1 = PREG->y_u.oD.D; PREG = NEXTOP(PREG, oD); UnifyBound(d0,d1); ENDD(d1); derefa_body(d0, S_SREG, uldbterm_unk, uldbterm_nonvar); BEGD(d1); - d1 = PREG->u.oD.D; + d1 = PREG->y_u.oD.D; PREG = NEXTOP(PREG, oD); Bind_Global(S_SREG, d1); GONext(); @@ -6761,7 +6761,7 @@ Yap_absmi(int inp) /* we continue in read mode */ S_SREG = RepAppl(d0); /* just check functor */ - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); if (*S_SREG != d0) { FAIL(); } @@ -6784,9 +6784,9 @@ Yap_absmi(int inp) pt0 = HR; ENDD(d1); /* first, put the functor */ - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); *pt0++ = d0; - HR = pt0 + PREG->u.ofa.a; + HR = pt0 + PREG->y_u.ofa.a; PREG = NEXTOP(PREG, ofa); /* set SREG */ SREG = pt0; @@ -6809,9 +6809,9 @@ Yap_absmi(int inp) d0 = AbsAppl(HR); S_SREG[0] = d0; S_SREG = HR; - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); *S_SREG++ = d0; - HR = S_SREG + PREG->u.ofa.a; + HR = S_SREG + PREG->y_u.ofa.a; PREG = NEXTOP(PREG, ofa); WRITEBACK_S(S_SREG); ENDCACHE_S(); @@ -6834,7 +6834,7 @@ Yap_absmi(int inp) /* we continue in read mode */ SREG = RepAppl(d0); /* just check functor */ - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); if (*SREG++ != d0) { FAIL(); } @@ -6855,9 +6855,9 @@ Yap_absmi(int inp) pt0 = HR; ENDD(d1); /* first, put the functor */ - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); *pt0++ = d0; - HR = pt0 + PREG->u.ofa.a; + HR = pt0 + PREG->y_u.ofa.a; PREG = NEXTOP(PREG, ofa); /* set SREG */ SREG = pt0; @@ -6876,9 +6876,9 @@ Yap_absmi(int inp) READ_IN_S(); S_SREG[0] = d0; S_SREG = HR; - d0 = (CELL) (PREG->u.ofa.f); + d0 = (CELL) (PREG->y_u.ofa.f); *S_SREG++ = d0; - HR = S_SREG + PREG->u.ofa.a; + HR = S_SREG + PREG->y_u.ofa.a; PREG = NEXTOP(PREG, ofa); WRITEBACK_S(S_SREG); ENDCACHE_S(); @@ -6894,9 +6894,9 @@ Yap_absmi(int inp) Op(put_x_var, xx); BEGP(pt0); pt0 = HR; - XREG(PREG->u.xx.xl) = Unsigned(pt0); + XREG(PREG->y_u.xx.xl) = Unsigned(pt0); HR = pt0 + 1; - XREG(PREG->u.xx.xr) = Unsigned(pt0); + XREG(PREG->y_u.xx.xr) = Unsigned(pt0); PREG = NEXTOP(PREG, xx); RESET_VARIABLE(pt0); ENDP(pt0); @@ -6905,8 +6905,8 @@ Yap_absmi(int inp) Op(put_y_var, yx); BEGP(pt0); - pt0 = YREG + PREG->u.yx.y; - XREG(PREG->u.yx.x) = (CELL) pt0; + pt0 = YREG + PREG->y_u.yx.y; + XREG(PREG->y_u.yx.x) = (CELL) pt0; PREG = NEXTOP(PREG, yx); #if defined(YAPOR_SBA) && defined(FROZEN_STACKS) /* We must initialise a shared variable to point to the SBA */ @@ -6922,8 +6922,8 @@ Yap_absmi(int inp) Op(put_x_val, xx); BEGD(d0); - d0 = XREG(PREG->u.xx.xl); - XREG(PREG->u.xx.xr) = d0; + d0 = XREG(PREG->y_u.xx.xl); + XREG(PREG->y_u.xx.xr) = d0; ENDD(d0); PREG = NEXTOP(PREG, xx); GONext(); @@ -6932,10 +6932,10 @@ Yap_absmi(int inp) Op(put_xx_val, xxxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxxx.xl1); - d1 = XREG(PREG->u.xxxx.xl2); - XREG(PREG->u.xxxx.xr1) = d0; - XREG(PREG->u.xxxx.xr2) = d1; + d0 = XREG(PREG->y_u.xxxx.xl1); + d1 = XREG(PREG->y_u.xxxx.xl2); + XREG(PREG->y_u.xxxx.xr1) = d0; + XREG(PREG->y_u.xxxx.xr2) = d1; ENDD(d1); ENDD(d0); PREG = NEXTOP(PREG, xxxx); @@ -6944,13 +6944,13 @@ Yap_absmi(int inp) Op(put_y_val, yx); BEGD(d0); - d0 = YREG[PREG->u.yx.y]; + d0 = YREG[PREG->y_u.yx.y]; #ifdef YAPOR_SBA if (d0 == 0) /* new variable */ - XREG(PREG->u.yx.x) = (CELL)(YREG+PREG->u.yx.y); + XREG(PREG->y_u.yx.x) = (CELL)(YREG+PREG->y_u.yx.y); else #endif - XREG(PREG->u.yx.x) = d0; + XREG(PREG->y_u.yx.x) = d0; ENDD(d0); PREG = NEXTOP(PREG, yx); GONext(); @@ -6959,24 +6959,24 @@ Yap_absmi(int inp) Op(put_y_vals, yyxx); ALWAYS_START_PREFETCH(yyxx); BEGD(d0); - d0 = YREG[PREG->u.yyxx.y1]; + d0 = YREG[PREG->y_u.yyxx.y1]; #ifdef YAPOR_SBA if (d0 == 0) /* new variable */ - XREG(PREG->u.yyxx.x1) = (CELL)(YREG+PREG->u.yyxx.y1); + XREG(PREG->y_u.yyxx.x1) = (CELL)(YREG+PREG->y_u.yyxx.y1); else #endif - XREG(PREG->u.yyxx.x1) = d0; + XREG(PREG->y_u.yyxx.x1) = d0; ENDD(d0); /* allow for some prefetching */ PREG = NEXTOP(PREG, yyxx); BEGD(d1); - d1 = YREG[PREVOP(PREG,yyxx)->u.yyxx.y2]; + d1 = YREG[PREVOP(PREG,yyxx)->y_u.yyxx.y2]; #ifdef YAPOR_SBA if (d1 == 0) /* new variable */ - XREG(PREVOP(PREG->u.yyxx,yyxx).x2) = (CELL)(YREG+PREG->u.yyxx.y2); + XREG(PREVOP(PREG->y_u.yyxx,yyxx).x2) = (CELL)(YREG+PREG->y_u.yyxx.y2); else #endif - XREG(PREVOP(PREG,yyxx)->u.yyxx.x2) = d1; + XREG(PREVOP(PREG,yyxx)->y_u.yyxx.x2) = d1; ENDD(d1); ALWAYS_GONext(); ALWAYS_END_PREFETCH(); @@ -6985,11 +6985,11 @@ Yap_absmi(int inp) Op(put_unsafe, yx); BEGD(d0); BEGP(pt0); - pt0 = YREG+PREG->u.yx.y; + pt0 = YREG+PREG->y_u.yx.y; d0 = *pt0; deref_head(d0, punsafe_unk); punsafe_nonvar: - XREG(PREG->u.yx.x) = d0; + XREG(PREG->y_u.yx.x) = d0; PREG = NEXTOP(PREG, yx); GONext(); @@ -6997,14 +6997,14 @@ Yap_absmi(int inp) /* d0 is a variable, check whether we need to globalise it */ if (pt0 <= HR || pt0 >= YREG) { /* variable is safe */ - XREG(PREG->u.yx.x) = Unsigned(pt0); + XREG(PREG->y_u.yx.x) = Unsigned(pt0); PREG = NEXTOP(PREG, yx); GONext(); } else { /* create a new Heap variable and bind our variable to it */ Bind_Local(pt0, Unsigned(HR)); - XREG(PREG->u.yx.x) = (CELL) HR; + XREG(PREG->y_u.yx.x) = (CELL) HR; RESET_VARIABLE(HR); HR++; PREG = NEXTOP(PREG, yx); @@ -7016,8 +7016,8 @@ Yap_absmi(int inp) Op(put_atom, xc); BEGD(d0); - d0 = PREG->u.xc.c; - XREG(PREG->u.xc.x) = d0; + d0 = PREG->y_u.xc.c; + XREG(PREG->y_u.xc.x) = d0; PREG = NEXTOP(PREG, xc); GONext(); ENDD(d0); @@ -7025,8 +7025,8 @@ Yap_absmi(int inp) Op(put_dbterm, xD); BEGD(d0); - d0 = PREG->u.xD.D; - XREG(PREG->u.xD.x) = d0; + d0 = PREG->y_u.xD.D; + XREG(PREG->y_u.xD.x) = d0; PREG = NEXTOP(PREG, xD); GONext(); ENDD(d0); @@ -7034,8 +7034,8 @@ Yap_absmi(int inp) Op(put_bigint, xN); BEGD(d0); - d0 = PREG->u.xN.b; - XREG(PREG->u.xN.x) = d0; + d0 = PREG->y_u.xN.b; + XREG(PREG->y_u.xN.x) = d0; PREG = NEXTOP(PREG, xN); GONext(); ENDD(d0); @@ -7043,8 +7043,8 @@ Yap_absmi(int inp) Op(put_float, xd); BEGD(d0); - d0 = AbsAppl(PREG->u.xd.d); - XREG(PREG->u.xd.x) = d0; + d0 = AbsAppl(PREG->y_u.xd.d); + XREG(PREG->y_u.xd.x) = d0; PREG = NEXTOP(PREG, xd); GONext(); ENDD(d0); @@ -7052,8 +7052,8 @@ Yap_absmi(int inp) Op(put_longint, xi); BEGD(d0); - d0 = AbsAppl(PREG->u.xi.i); - XREG(PREG->u.xi.x) = d0; + d0 = AbsAppl(PREG->y_u.xi.i); + XREG(PREG->y_u.xi.x) = d0; PREG = NEXTOP(PREG, xi); GONext(); ENDD(d0); @@ -7066,7 +7066,7 @@ Yap_absmi(int inp) HR += 2; BEGD(d0); d0 = AbsPair(S_SREG); - XREG(PREG->u.x.x) = d0; + XREG(PREG->y_u.x.x) = d0; PREG = NEXTOP(PREG, x); ENDD(d0); WRITEBACK_S(S_SREG); @@ -7077,11 +7077,11 @@ Yap_absmi(int inp) Op(put_struct, xfa); BEGD(d0); d0 = AbsAppl(HR); - XREG(PREG->u.xfa.x) = d0; - d0 = (CELL) (PREG->u.xfa.f); + XREG(PREG->y_u.xfa.x) = d0; + d0 = (CELL) (PREG->y_u.xfa.f); *HR++ = d0; SREG = HR; - HR += PREG->u.xfa.a; + HR += PREG->y_u.xfa.a; ENDD(d0); PREG = NEXTOP(PREG, xfa); GONext(); @@ -7092,7 +7092,7 @@ Yap_absmi(int inp) \************************************************************************/ Op(write_x_var, x); - XREG(PREG->u.x.x) = Unsigned(SREG); + XREG(PREG->y_u.x.x) = Unsigned(SREG); PREG = NEXTOP(PREG, x); RESET_VARIABLE(SREG); SREG++; @@ -7108,7 +7108,7 @@ Yap_absmi(int inp) Op(write_n_voids, s); BEGD(d0); - d0 = PREG->u.s.s; + d0 = PREG->y_u.s.s; PREG = NEXTOP(PREG, s); for (; d0 > 0; d0--) { RESET_VARIABLE(SREG); @@ -7119,7 +7119,7 @@ Yap_absmi(int inp) ENDOp(); Op(write_y_var, y); - INITIALIZE_PERMVAR(YREG+PREG->u.y.y,Unsigned(SREG)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.y.y,Unsigned(SREG)); PREG = NEXTOP(PREG, y); RESET_VARIABLE(SREG); SREG++; @@ -7128,7 +7128,7 @@ Yap_absmi(int inp) Op(write_x_val, x); BEGD(d0); - d0 = XREG(PREG->u.x.x); + d0 = XREG(PREG->y_u.x.x); *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, x); @@ -7137,7 +7137,7 @@ Yap_absmi(int inp) Op(write_x_loc, x); BEGD(d0); - d0 = XREG(PREG->u.x.x); + d0 = XREG(PREG->y_u.x.x); PREG = NEXTOP(PREG, x); deref_head(d0, w_x_unk); w_x_bound: @@ -7172,10 +7172,10 @@ Yap_absmi(int inp) Op(write_y_val, y); BEGD(d0); - d0 = YREG[PREG->u.y.y]; + d0 = YREG[PREG->y_u.y.y]; #ifdef YAPOR_SBA if (d0 == 0) /* new variable */ - *SREG++ = (CELL)(YREG+PREG->u.y.y); + *SREG++ = (CELL)(YREG+PREG->y_u.y.y); else #endif *SREG++ = d0; @@ -7187,7 +7187,7 @@ Yap_absmi(int inp) Op(write_y_loc, y); BEGD(d0); BEGP(pt0); - pt0 = YREG+PREG->u.y.y; + pt0 = YREG+PREG->y_u.y.y; d0 = *pt0; deref_head(d0, w_y_unk); w_y_bound: @@ -7223,7 +7223,7 @@ Yap_absmi(int inp) Op(write_atom, c); BEGD(d0); - d0 = PREG->u.c.c; + d0 = PREG->y_u.c.c; *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, c); @@ -7232,7 +7232,7 @@ Yap_absmi(int inp) Op(write_bigint, N); BEGD(d0); - d0 = PREG->u.N.b; + d0 = PREG->y_u.N.b; *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, N); @@ -7241,7 +7241,7 @@ Yap_absmi(int inp) Op(write_dbterm, D); BEGD(d0); - d0 = PREG->u.D.D; + d0 = PREG->y_u.D.D; *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, D); @@ -7250,7 +7250,7 @@ Yap_absmi(int inp) Op(write_float, d); BEGD(d0); - d0 = AbsAppl(PREG->u.d.d); + d0 = AbsAppl(PREG->y_u.d.d); *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, d); @@ -7259,7 +7259,7 @@ Yap_absmi(int inp) Op(write_longint, i); BEGD(d0); - d0 = AbsAppl(PREG->u.i.i); + d0 = AbsAppl(PREG->y_u.i.i); *SREG++ = d0; ENDD(d0); PREG = NEXTOP(PREG, i); @@ -7269,8 +7269,8 @@ Yap_absmi(int inp) Op(write_n_atoms, sc); BEGD(d0); BEGD(d1); - d0 = PREG->u.sc.s; - d1 = PREG->u.sc.c; + d0 = PREG->y_u.sc.s; + d1 = PREG->y_u.sc.c; for (; d0 > 0; d0--) *SREG++ = d1; ENDD(d1); @@ -7317,11 +7317,11 @@ Yap_absmi(int inp) SP[-1] = Unsigned(SREG); SP[-2] = 1; /* Put instructions follow the main stream */ SP -= 2; - d0 = (CELL) (PREG->u.fa.f); + d0 = (CELL) (PREG->y_u.fa.f); *HR++ = d0; ENDD(d0); BEGD(d0); - d0 = PREG->u.fa.a; + d0 = PREG->y_u.fa.a; PREG = NEXTOP(PREG, fa); SREG = HR; HR += d0; @@ -7333,12 +7333,12 @@ Yap_absmi(int inp) BEGD(d0); d0 = AbsAppl(HR); *SREG = d0; - d0 = (CELL) (PREG->u.fa.f); + d0 = (CELL) (PREG->y_u.fa.f); *HR++ = d0; SREG = HR; ENDD(d0); BEGD(d0); - d0 = PREG->u.fa.a; + d0 = PREG->y_u.fa.a; PREG = NEXTOP(PREG, fa); HR += d0; ENDD(d0); @@ -7354,49 +7354,49 @@ Yap_absmi(int inp) */ Op(save_pair_x, ox); - XREG(PREG->u.ox.x) = AbsPair(SREG); + XREG(PREG->y_u.ox.x) = AbsPair(SREG); PREG = NEXTOP(PREG, ox); GONext(); ENDOp(); OpW(save_pair_x_write, ox); - XREG(PREG->u.ox.x) = AbsPair(SREG); + XREG(PREG->y_u.ox.x) = AbsPair(SREG); PREG = NEXTOP(PREG, ox); GONextW(); ENDOpW(); Op(save_pair_y, oy); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,AbsPair(SREG)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,AbsPair(SREG)); PREG = NEXTOP(PREG, oy); GONext(); ENDOp(); OpW(save_pair_y_write, oy); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,AbsPair(SREG)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,AbsPair(SREG)); PREG = NEXTOP(PREG, oy); GONextW(); ENDOpW(); Op(save_appl_x, ox); - XREG(PREG->u.ox.x) = AbsAppl(SREG - 1); + XREG(PREG->y_u.ox.x) = AbsAppl(SREG - 1); PREG = NEXTOP(PREG, ox); GONext(); ENDOp(); OpW(save_appl_x_write, ox); - XREG(PREG->u.ox.x) = AbsAppl(SREG - 1); + XREG(PREG->y_u.ox.x) = AbsAppl(SREG - 1); PREG = NEXTOP(PREG, ox); GONextW(); ENDOpW(); Op(save_appl_y, oy); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,AbsAppl(SREG-1)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,AbsAppl(SREG-1)); PREG = NEXTOP(PREG, oy); GONext(); ENDOp(); OpW(save_appl_y_write, oy); - INITIALIZE_PERMVAR(YREG+PREG->u.oy.y,AbsAppl(SREG-1)); + INITIALIZE_PERMVAR(YREG+PREG->y_u.oy.y,AbsAppl(SREG-1)); PREG = NEXTOP(PREG, oy); GONextW(); ENDOpW(); @@ -7407,7 +7407,7 @@ Yap_absmi(int inp) \************************************************************************/ BOp(jump, l); - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; JMPNext(); ENDBOp(); @@ -7441,7 +7441,7 @@ Yap_absmi(int inp) #endif BEGD(d0); /* Try to preserve the environment */ - d0 = PREG->u.Osblp.s; + d0 = PREG->y_u.Osblp.s; BEGCHO(pt1); pt1 = (choiceptr) ((char *) YREG + (yslot) d0); #ifdef FROZEN_STACKS @@ -7460,7 +7460,7 @@ Yap_absmi(int inp) #endif /* FROZEN_STACKS */ pt1 = (choiceptr)(((CELL *) pt1)-1); *(CELL **) pt1 = YREG; - store_yaam_regs_for_either(PREG->u.Osblp.l, PREG); + store_yaam_regs_for_either(PREG->y_u.Osblp.l, PREG); SREG = (CELL *) (B = pt1); #ifdef YAPOR SCH_set_load(pt1); @@ -7489,10 +7489,10 @@ Yap_absmi(int inp) SET_BB(PROTECT_FROZEN_B(B)); #ifdef YAPOR if (SCH_top_shared_cp(B)) { - SCH_new_alternative(PREG, PREG->u.Osblp.l); + SCH_new_alternative(PREG, PREG->y_u.Osblp.l); } else #endif /* YAPOR */ - B->cp_ap = PREG->u.Osblp.l; + B->cp_ap = PREG->y_u.Osblp.l; PREG = NEXTOP(PREG, Osblp); YREG = (CELL *) B->cp_a1; GONext(); @@ -7544,7 +7544,7 @@ Yap_absmi(int inp) OpRW(pop_n, s); /* write mode might have been called from read mode */ BEGD(d0); - d0 = PREG->u.os.s; + d0 = PREG->y_u.os.s; SP = (CELL *) (((char *) SP) + d0); ENDD(d0); BEGD(d0); @@ -7594,8 +7594,8 @@ Yap_absmi(int inp) BOp(call_cpred, Osbpp); check_trail(TR); - if (!(PREG->u.Osbpp.p->PredFlags & (SafePredFlag)) && - !(PREG->u.Osbpp.p0->ExtraPredFlags & (NoDebugPredFlag|HiddenPredFlag))) { + if (!(PREG->y_u.Osbpp.p->PredFlags & (SafePredFlag)) && + !(PREG->y_u.Osbpp.p0->ExtraPredFlags & (NoDebugPredFlag|HiddenPredFlag))) { CACHE_Y_AS_ENV(YREG); check_stack(NoStackCCall, HR); ENDCACHE_Y_AS_ENV(); @@ -7610,18 +7610,18 @@ Yap_absmi(int inp) #else if (YREG > (CELL *) top_b) ASP = (CELL *)top_b; #endif /* YAPOR_SBA */ - else ASP = (CELL *)(((char *)YREG) + PREG->u.Osbpp.s); + else ASP = (CELL *)(((char *)YREG) + PREG->y_u.Osbpp.s); } #else - SET_ASP(YREG, PREG->u.Osbpp.s); + SET_ASP(YREG, PREG->y_u.Osbpp.s); /* for slots to work */ #endif /* FROZEN_STACKS */ #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) - low_level_trace(enter_pred,PREG->u.Osbpp.p,XREGS+1); + low_level_trace(enter_pred,PREG->y_u.Osbpp.p,XREGS+1); #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - CPredicate f = PREG->u.Osbpp.p->cs.f_code; + CPredicate f = PREG->y_u.Osbpp.p->cs.f_code; PREG = NEXTOP(PREG, Osbpp); saveregs(); d0 = (f)(PASS_REGS1); @@ -7668,7 +7668,7 @@ Yap_absmi(int inp) SET_ASP(YREG, E_CB*sizeof(CELL)); /* for slots to work */ #endif /* FROZEN_STACKS */ - pt0 = PREG->u.pp.p; + pt0 = PREG->y_u.pp.p; #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { low_level_trace(enter_pred,pt0,XREGS+1); @@ -7694,7 +7694,7 @@ Yap_absmi(int inp) #endif /* DEPTH_LIMIT */ /* now call C-Code */ { - CPredicate f = PREG->u.pp.p->cs.f_code; + CPredicate f = PREG->y_u.pp.p->cs.f_code; yamop *oldPREG = PREG; saveregs(); d0 = (f)(PASS_REGS1); @@ -7739,7 +7739,7 @@ Yap_absmi(int inp) do_user_call: #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - low_level_trace(enter_pred,PREG->u.Osbpp.p,XREGS+1); + low_level_trace(enter_pred,PREG->y_u.Osbpp.p,XREGS+1); } #endif /* LOW_LEVEL_TRACE */ #ifdef FROZEN_STACKS @@ -7750,10 +7750,10 @@ Yap_absmi(int inp) #else if (YREG > (CELL *) top_b) ASP = (CELL *) top_b; #endif /* YAPOR_SBA */ - else ASP = (CELL *)(((char *)YREG) + PREG->u.Osbpp.s); + else ASP = (CELL *)(((char *)YREG) + PREG->y_u.Osbpp.s); } #else - SET_ASP(YREG, PREG->u.Osbpp.s); + SET_ASP(YREG, PREG->y_u.Osbpp.s); /* for slots to work */ #endif /* FROZEN_STACKS */ { @@ -7762,7 +7762,7 @@ Yap_absmi(int inp) LOCAL_PrologMode |= UserCCallMode; { - PredEntry *p = PREG->u.Osbpp.p; + PredEntry *p = PREG->y_u.Osbpp.p; PREG = NEXTOP(PREG, Osbpp); savedP = PREG; @@ -7798,7 +7798,7 @@ Yap_absmi(int inp) BOp(call_c_wfail, slp); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - low_level_trace(enter_pred,PREG->u.slp.p,XREGS+1); + low_level_trace(enter_pred,PREG->y_u.slp.p,XREGS+1); } #endif /* LOW_LEVEL_TRACE */ #ifdef FROZEN_STACKS @@ -7811,7 +7811,7 @@ Yap_absmi(int inp) #endif /* YAPOR_SBA */ else { BEGD(d0); - d0 = PREG->u.slp.s; + d0 = PREG->y_u.slp.s; ASP = ((CELL *)YREG) + d0; ENDD(d0); } @@ -7821,13 +7821,13 @@ Yap_absmi(int inp) ASP = (CELL *) B; else { BEGD(d0); - d0 = PREG->u.slp.s; + d0 = PREG->y_u.slp.s; ASP = ((CELL *) YREG) + d0; ENDD(d0); } #endif /* FROZEN_STACKS */ { - CPredicate f = PREG->u.slp.p->cs.f_code; + CPredicate f = PREG->y_u.slp.p->cs.f_code; saveregs(); SREG = (CELL *)((f)(PASS_REGS1)); setregs(); @@ -7835,7 +7835,7 @@ Yap_absmi(int inp) if (!SREG) { /* be careful about error handling */ if (PREG != FAILCODE) - PREG = PREG->u.slp.l; + PREG = PREG->y_u.slp.l; } else { PREG = NEXTOP(PREG, slp); } @@ -7850,8 +7850,8 @@ Yap_absmi(int inp) CACHE_Y(YREG); /* Alocate space for the cut_c structure*/ CUT_C_PUSH(NEXTOP(NEXTOP(PREG,OtapFs),OtapFs),S_YREG); - S_YREG = S_YREG - PREG->u.OtapFs.extra; - store_args(PREG->u.OtapFs.s); + S_YREG = S_YREG - PREG->y_u.OtapFs.extra; + store_args(PREG->y_u.OtapFs.s); store_yaam_regs(NEXTOP(PREG, OtapFs), 0); B = B_YREG; #ifdef YAPOR @@ -7863,7 +7863,7 @@ Yap_absmi(int inp) TRYCC: ASP = (CELL *)B; { - CPredicate f = (CPredicate)(PREG->u.OtapFs.f); + CPredicate f = (CPredicate)(PREG->y_u.OtapFs.f); saveregs(); SREG = (CELL *) ((f) (PASS_REGS1)); /* This last instruction changes B B*/ @@ -7905,7 +7905,7 @@ Yap_absmi(int inp) DEPTH =B->cp_depth; #endif HBREG = HR; - restore_args(PREG->u.OtapFs.s); + restore_args(PREG->y_u.OtapFs.s); ENDCACHE_Y(); goto TRYCC; ENDBOp(); @@ -7926,8 +7926,8 @@ Yap_absmi(int inp) CACHE_Y(YREG); /* Alocate space for the cut_c structure*/ CUT_C_PUSH(NEXTOP(NEXTOP(PREG,OtapFs),OtapFs),S_YREG); - S_YREG = S_YREG - PREG->u.OtapFs.extra; - store_args(PREG->u.OtapFs.s); + S_YREG = S_YREG - PREG->y_u.OtapFs.extra; + store_args(PREG->y_u.OtapFs.s); store_yaam_regs(NEXTOP(PREG, OtapFs), 0); B = B_YREG; #ifdef YAPOR @@ -7939,7 +7939,7 @@ Yap_absmi(int inp) ASP = YREG; saveregs(); save_machine_regs(); - SREG = (CELL *) YAP_ExecuteFirst(PREG->u.OtapFs.p, (CPredicate)(PREG->u.OtapFs.f)); + SREG = (CELL *) YAP_ExecuteFirst(PREG->y_u.OtapFs.p, (CPredicate)(PREG->y_u.OtapFs.f)); EX = NULL; restore_machine_regs(); setregs(); @@ -7972,14 +7972,14 @@ Yap_absmi(int inp) DEPTH =B->cp_depth; #endif HBREG = HR; - restore_args(PREG->u.OtapFs.s); + restore_args(PREG->y_u.OtapFs.s); ENDCACHE_Y(); LOCAL_PrologMode |= UserCCallMode; SET_ASP(YREG, E_CB*sizeof(CELL)); saveregs(); save_machine_regs(); - SREG = (CELL *) YAP_ExecuteNext(PREG->u.OtapFs.p, (CPredicate)(PREG->u.OtapFs.f)); + SREG = (CELL *) YAP_ExecuteNext(PREG->y_u.OtapFs.p, (CPredicate)(PREG->y_u.OtapFs.f)); EX = NULL; restore_machine_regs(); setregs(); @@ -8146,7 +8146,7 @@ Yap_absmi(int inp) BOp(expand_clauses, sssllp); { - PredEntry *pe = PREG->u.sssllp.p; + PredEntry *pe = PREG->y_u.sssllp.p; yamop *pt0; /* update ASP before calling IPred */ @@ -8380,9 +8380,9 @@ Yap_absmi(int inp) check_trail(TR); CACHE_Y(YREG); /* Point AP to the code that follows this instruction */ - store_at_least_one_arg(PREG->u.Otapl.s); + store_at_least_one_arg(PREG->y_u.Otapl.s); store_yaam_regs(NEXTOP(PREG, Otapl), 0); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; set_cut(S_YREG, B); B = B_YREG; #ifdef YAPOR @@ -8405,7 +8405,7 @@ Yap_absmi(int inp) B_YREG->cp_a1 = x1; B_YREG->cp_a2 = x2; } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; set_cut(S_YREG, B); B = B_YREG; #ifdef YAPOR @@ -8426,7 +8426,7 @@ Yap_absmi(int inp) B_YREG->cp_a2 = ARG2; B_YREG->cp_a3 = ARG3; } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; set_cut(S_YREG, B); B = B_YREG; #ifdef YAPOR @@ -8448,7 +8448,7 @@ Yap_absmi(int inp) B_YREG->cp_a3 = ARG3; B_YREG->cp_a4 = ARG4; } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; set_cut(S_YREG, B); B = B_YREG; #ifdef YAPOR @@ -8462,7 +8462,7 @@ Yap_absmi(int inp) BOp(retry, Otapl); CACHE_Y(B); restore_yaam_regs(NEXTOP(PREG, Otapl)); - restore_at_least_one_arg(PREG->u.Otapl.s); + restore_at_least_one_arg(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -8471,14 +8471,14 @@ Yap_absmi(int inp) #endif /* FROZEN_STACKS */ SET_BB(B_YREG); ENDCACHE_Y(); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; JMPNext(); ENDBOp(); BOp(retry2, l); CACHE_Y(B); restore_yaam_regs(NEXTOP(PREG, l)); - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; ARG1 = B_YREG->cp_a1; ARG2 = B_YREG->cp_a2; #ifdef FROZEN_STACKS @@ -8495,7 +8495,7 @@ Yap_absmi(int inp) BOp(retry3, l); CACHE_Y(B); restore_yaam_regs(NEXTOP(PREG, l)); - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; ARG1 = B_YREG->cp_a1; ARG2 = B_YREG->cp_a2; ARG3 = B_YREG->cp_a3; @@ -8513,7 +8513,7 @@ Yap_absmi(int inp) BOp(retry4, l); CACHE_Y(B); restore_yaam_regs(NEXTOP(PREG, l)); - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; ARG1 = B_YREG->cp_a1; ARG2 = B_YREG->cp_a2; ARG3 = B_YREG->cp_a3; @@ -8534,7 +8534,7 @@ Yap_absmi(int inp) #ifdef YAPOR if (SCH_top_shared_cp(B)) { SCH_last_alternative(PREG, B_YREG); - restore_at_least_one_arg(PREG->u.Otapl.s); + restore_at_least_one_arg(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -8544,7 +8544,7 @@ Yap_absmi(int inp) #endif /* YAPOR */ { pop_yaam_regs(); - pop_at_least_one_arg(PREG->u.Otapl.s); + pop_at_least_one_arg(PREG->y_u.Otapl.s); #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); #endif /* FROZEN_STACKS */ @@ -8552,13 +8552,13 @@ Yap_absmi(int inp) } SET_BB(B_YREG); ENDCACHE_Y(); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; JMPNext(); ENDBOp(); BOp(try_in, l); B->cp_ap = NEXTOP(PREG, l); - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; JMPNext(); ENDBOp(); @@ -8573,7 +8573,7 @@ Yap_absmi(int inp) check_trail(TR); /* mark the indexing code */ { - LogUpdIndex *cl = PREG->u.Illss.I; + LogUpdIndex *cl = PREG->y_u.Illss.I; PredEntry *ap = cl->ClPred; if (!cl) { FAIL(); } /* in case the index is empty */ @@ -8589,8 +8589,8 @@ Yap_absmi(int inp) /* fprintf(stderr,"R %x--%d--%ul\n",ap,ap->TimeStampOfPred,ap->ArityOfPE);*/ } *--YREG = MkIntegerTerm(ap->TimeStampOfPred); - /* fprintf(stderr,"> %p/%p %d %d\n",cl,ap,ap->TimeStampOfPred,PREG->u.Illss.s);*/ - PREG = PREG->u.Illss.l1; + /* fprintf(stderr,"> %p/%p %d %d\n",cl,ap,ap->TimeStampOfPred,PREG->y_u.Illss.s);*/ + PREG = PREG->y_u.Illss.l1; /* indicate the indexing code is being used */ #if MULTIPLE_STACKS /* just store a reference */ @@ -8613,24 +8613,24 @@ Yap_absmi(int inp) CACHE_Y(YREG); timestamp = IntegerOfTerm(S_YREG[0]); - /* fprintf(stderr,"+ %p/%p %d %d %d--%u\n",PREG,PREG->u.OtaLl.d->ClPred,timestamp,PREG->u.OtaLl.d->ClPred->TimeStampOfPred,PREG->u.OtaLl.d->ClTimeStart,PREG->u.OtaLl.d->ClTimeEnd);*/ + /* fprintf(stderr,"+ %p/%p %d %d %d--%u\n",PREG,PREG->y_u.OtaLl.d->ClPred,timestamp,PREG->y_u.OtaLl.d->ClPred->TimeStampOfPred,PREG->y_u.OtaLl.d->ClTimeStart,PREG->y_u.OtaLl.d->ClTimeEnd);*/ /* Point AP to the code that follows this instruction */ /* always do this, even if we are not going to use it */ - store_args(PREG->u.OtaLl.s); - store_yaam_regs(PREG->u.OtaLl.n, 0); + store_args(PREG->y_u.OtaLl.s); + store_yaam_regs(PREG->y_u.OtaLl.n, 0); set_cut(S_YREG, B); B = B_YREG; #ifdef YAPOR SCH_set_load(B_YREG); #endif /* YAPOR */ #ifdef YAPOR - PP = PREG->u.OtaLl.d->ClPred; + PP = PREG->y_u.OtaLl.d->ClPred; #endif /* YAPOR */ - if (!VALID_TIMESTAMP(timestamp, PREG->u.OtaLl.d)) { + if (!VALID_TIMESTAMP(timestamp, PREG->y_u.OtaLl.d)) { /* jump to next alternative */ - PREG=PREG->u.OtaLl.n; + PREG=PREG->y_u.OtaLl.n; } else { - PREG = PREG->u.OtaLl.d->ClCode; + PREG = PREG->y_u.OtaLl.d->ClCode; } SET_BB(B_YREG); ENDCACHE_Y(); @@ -8646,23 +8646,23 @@ Yap_absmi(int inp) #if defined(YAPOR) || defined(THREADS) if (!PP) { - PP = PREG->u.OtaLl.d->ClPred; + PP = PREG->y_u.OtaLl.d->ClPred; PELOCK(15,PP); } #endif - timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->u.OtaLl.s]); - /* fprintf(stderr,"^ %p/%p %d %d %d--%u\n",PREG,PREG->u.OtaLl.d->ClPred,timestamp,PREG->u.OtaLl.d->ClPred->TimeStampOfPred,PREG->u.OtaLl.d->ClTimeStart,PREG->u.OtaLl.d->ClTimeEnd);*/ - if (!VALID_TIMESTAMP(timestamp, PREG->u.OtaLl.d)) { + timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[PREG->y_u.OtaLl.s]); + /* fprintf(stderr,"^ %p/%p %d %d %d--%u\n",PREG,PREG->y_u.OtaLl.d->ClPred,timestamp,PREG->y_u.OtaLl.d->ClPred->TimeStampOfPred,PREG->y_u.OtaLl.d->ClTimeStart,PREG->y_u.OtaLl.d->ClTimeEnd);*/ + if (!VALID_TIMESTAMP(timestamp, PREG->y_u.OtaLl.d)) { /* jump to next instruction */ - PREG=PREG->u.OtaLl.n; + PREG=PREG->y_u.OtaLl.n; JMPNext(); } - restore_yaam_regs(PREG->u.OtaLl.n); - restore_at_least_one_arg(PREG->u.OtaLl.s); + restore_yaam_regs(PREG->y_u.OtaLl.n); + restore_at_least_one_arg(PREG->y_u.OtaLl.s); #ifdef THREADS - PP = PREG->u.OtaLl.d->ClPred; + PP = PREG->y_u.OtaLl.d->ClPred; #endif - PREG = PREG->u.OtaLl.d->ClCode; + PREG = PREG->y_u.OtaLl.d->ClCode; #ifdef FROZEN_STACKS S_YREG = (CELL *) PROTECT_FROZEN_B(B_YREG); set_cut(S_YREG, B->cp_b); @@ -8678,12 +8678,12 @@ Yap_absmi(int inp) BOp(trust_logical, OtILl); CACHE_Y(B); { - LogUpdIndex *cl = PREG->u.OtILl.block; + LogUpdIndex *cl = PREG->y_u.OtILl.block; PredEntry *ap = cl->ClPred; - LogUpdClause *lcl = PREG->u.OtILl.d; + LogUpdClause *lcl = PREG->y_u.OtILl.d; UInt timestamp = IntegerOfTerm(((CELL *)(B_YREG+1))[ap->ArityOfPE]); - /* fprintf(stderr,"- %p/%p %d %d %p\n",PREG,ap,timestamp,ap->TimeStampOfPred,PREG->u.OtILl.d->ClCode);*/ + /* fprintf(stderr,"- %p/%p %d %d %p\n",PREG,ap,timestamp,ap->TimeStampOfPred,PREG->y_u.OtILl.d->ClCode);*/ #if defined(YAPOR) || defined(THREADS) if (!PP) { PELOCK(16,ap); @@ -8798,9 +8798,9 @@ Yap_absmi(int inp) BOp(user_switch, lp); { - yamop *new = Yap_udi_search(PREG->u.lp.p); + yamop *new = Yap_udi_search(PREG->y_u.lp.p); if (!new) { - PREG = PREG->u.lp.l; + PREG = PREG->y_u.lp.l; JMPNext(); } PREG = new; @@ -8817,21 +8817,21 @@ Yap_absmi(int inp) if (IsPairTerm(d0)) { /* pair */ SREG = RepPair(d0); - copy_jmp_address(PREG->u.llll.l1); - PREG = PREG->u.llll.l1; + copy_jmp_address(PREG->y_u.llll.l1); + PREG = PREG->y_u.llll.l1; JMPNext(); } else if (!IsApplTerm(d0)) { /* constant */ - copy_jmp_address(PREG->u.llll.l2); - PREG = PREG->u.llll.l2; + copy_jmp_address(PREG->y_u.llll.l2); + PREG = PREG->y_u.llll.l2; I_R = d0; JMPNext(); } else { /* appl */ - copy_jmp_address(PREG->u.llll.l3); - PREG = PREG->u.llll.l3; + copy_jmp_address(PREG->y_u.llll.l3); + PREG = PREG->y_u.llll.l3; SREG = RepAppl(d0); JMPNext(); } @@ -8839,8 +8839,8 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, swt_unk, swt_nvar); /* variable */ - copy_jmp_address(PREG->u.llll.l4); - PREG = PREG->u.llll.l4; + copy_jmp_address(PREG->y_u.llll.l4); + PREG = PREG->y_u.llll.l4; JMPNext(); ENDP(pt0); ENDD(d0); @@ -8854,7 +8854,7 @@ Yap_absmi(int inp) * */ BOp(switch_list_nl, ollll); - ALWAYS_LOOKAHEAD(PREG->u.ollll.pop); + ALWAYS_LOOKAHEAD(PREG->y_u.ollll.pop); BEGD(d0); d0 = CACHED_A1(); #if UNIQUE_TAG_FOR_PAIRS @@ -8868,8 +8868,8 @@ Yap_absmi(int inp) if (__builtin_expect(IsPairTerm(d0),1)) { /* pair */ #endif - copy_jmp_address(PREG->u.ollll.l1); - PREG = PREG->u.ollll.l1; + copy_jmp_address(PREG->y_u.ollll.l1); + PREG = PREG->y_u.ollll.l1; SREG = RepPair(d0); ALWAYS_GONext(); } @@ -8878,19 +8878,19 @@ Yap_absmi(int inp) #endif if (d0 == TermNil) { /* empty list */ - PREG = PREG->u.ollll.l2; + PREG = PREG->y_u.ollll.l2; JMPNext(); } else { /* appl or constant */ if (IsApplTerm(d0)) { - copy_jmp_address(PREG->u.ollll.l3); - PREG = PREG->u.ollll.l3; + copy_jmp_address(PREG->y_u.ollll.l3); + PREG = PREG->y_u.ollll.l3; SREG = RepAppl(d0); JMPNext(); } else { - copy_jmp_address(PREG->u.ollll.l3); - PREG = PREG->u.ollll.l3; + copy_jmp_address(PREG->y_u.ollll.l3); + PREG = PREG->y_u.ollll.l3; I_R = d0; JMPNext(); } @@ -8905,8 +8905,8 @@ Yap_absmi(int inp) #endif ENDP(pt0); /* variable */ - copy_jmp_address(PREG->u.ollll.l4); - PREG = PREG->u.ollll.l4; + copy_jmp_address(PREG->y_u.ollll.l4); + PREG = PREG->y_u.ollll.l4; JMPNext(); ENDD(d0); } @@ -8914,28 +8914,28 @@ Yap_absmi(int inp) BOp(switch_on_arg_type, xllll); BEGD(d0); - d0 = XREG(PREG->u.xllll.x); + d0 = XREG(PREG->y_u.xllll.x); deref_head(d0, arg_swt_unk); /* nonvar */ arg_swt_nvar: if (IsPairTerm(d0)) { /* pair */ - copy_jmp_address(PREG->u.xllll.l1); - PREG = PREG->u.xllll.l1; + copy_jmp_address(PREG->y_u.xllll.l1); + PREG = PREG->y_u.xllll.l1; SREG = RepPair(d0); JMPNext(); } else if (!IsApplTerm(d0)) { /* constant */ - copy_jmp_address(PREG->u.xllll.l2); - PREG = PREG->u.xllll.l2; + copy_jmp_address(PREG->y_u.xllll.l2); + PREG = PREG->y_u.xllll.l2; I_R = d0; JMPNext(); } else { /* appl */ - copy_jmp_address(PREG->u.xllll.l3); - PREG = PREG->u.xllll.l3; + copy_jmp_address(PREG->y_u.xllll.l3); + PREG = PREG->y_u.xllll.l3; SREG = RepAppl(d0); JMPNext(); } @@ -8943,8 +8943,8 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, arg_swt_unk, arg_swt_nvar); /* variable */ - copy_jmp_address(PREG->u.xllll.l4); - PREG = PREG->u.xllll.l4; + copy_jmp_address(PREG->y_u.xllll.l4); + PREG = PREG->y_u.xllll.l4; JMPNext(); ENDP(pt0); ENDD(d0); @@ -8952,28 +8952,28 @@ Yap_absmi(int inp) BOp(switch_on_sub_arg_type, sllll); BEGD(d0); - d0 = SREG[PREG->u.sllll.s]; + d0 = SREG[PREG->y_u.sllll.s]; deref_head(d0, sub_arg_swt_unk); /* nonvar */ sub_arg_swt_nvar: if (IsPairTerm(d0)) { /* pair */ - copy_jmp_address(PREG->u.sllll.l1); - PREG = PREG->u.sllll.l1; + copy_jmp_address(PREG->y_u.sllll.l1); + PREG = PREG->y_u.sllll.l1; SREG = RepPair(d0); JMPNext(); } else if (!IsApplTerm(d0)) { /* constant */ - copy_jmp_address(PREG->u.sllll.l2); - PREG = PREG->u.sllll.l2; + copy_jmp_address(PREG->y_u.sllll.l2); + PREG = PREG->y_u.sllll.l2; I_R = d0; JMPNext(); } else { /* appl */ - copy_jmp_address(PREG->u.sllll.l3); - PREG = PREG->u.sllll.l3; + copy_jmp_address(PREG->y_u.sllll.l3); + PREG = PREG->y_u.sllll.l3; SREG = RepAppl(d0); JMPNext(); } @@ -8981,8 +8981,8 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, sub_arg_swt_unk, sub_arg_swt_nvar); /* variable */ - copy_jmp_address(PREG->u.sllll.l4); - PREG = PREG->u.sllll.l4; + copy_jmp_address(PREG->y_u.sllll.l4); + PREG = PREG->y_u.sllll.l4; JMPNext(); ENDP(pt0); ENDD(d0); @@ -9000,8 +9000,8 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, jump_if_unk, jump0_if_nonvar); /* variable */ - copy_jmp_address(PREG->u.l.l); - PREG = PREG->u.l.l; + copy_jmp_address(PREG->y_u.l.l); + PREG = PREG->y_u.l.l; ENDP(pt0); JMPNext(); ENDD(d0); @@ -9009,12 +9009,12 @@ Yap_absmi(int inp) BOp(jump_if_nonvar, xll); BEGD(d0); - d0 = XREG(PREG->u.xll.x); + d0 = XREG(PREG->y_u.xll.x); deref_head(d0, jump2_if_unk); /* non var */ jump2_if_nonvar: - copy_jmp_address(PREG->u.xll.l1); - PREG = PREG->u.xll.l1; + copy_jmp_address(PREG->y_u.xll.l1); + PREG = PREG->y_u.xll.l1; JMPNext(); BEGP(pt0); @@ -9032,17 +9032,17 @@ Yap_absmi(int inp) deref_head(d0, if_n_unk); if_n_nvar: /* not variable */ - if (d0 == PREG->u.clll.c) { + if (d0 == PREG->y_u.clll.c) { /* equal to test value */ - copy_jmp_address(PREG->u.clll.l2); - PREG = PREG->u.clll.l2; + copy_jmp_address(PREG->y_u.clll.l2); + PREG = PREG->y_u.clll.l2; JMPNext(); } else { /* different from test value */ /* the case to optimise */ - copy_jmp_address(PREG->u.clll.l1); - PREG = PREG->u.clll.l1; + copy_jmp_address(PREG->y_u.clll.l1); + PREG = PREG->y_u.clll.l1; JMPNext(); } @@ -9050,8 +9050,8 @@ Yap_absmi(int inp) deref_body(d0, pt0, if_n_unk, if_n_nvar); ENDP(pt0); /* variable */ - copy_jmp_address(PREG->u.clll.l3); - PREG = PREG->u.clll.l3; + copy_jmp_address(PREG->y_u.clll.l3); + PREG = PREG->y_u.clll.l3; JMPNext(); ENDD(d0); ENDBOp(); @@ -9070,11 +9070,11 @@ Yap_absmi(int inp) { CELL /* first, calculate the mask */ - Mask = (PREG->u.sssl.s - 1) << 1, /* next, calculate the hash function */ + Mask = (PREG->y_u.sssl.s - 1) << 1, /* next, calculate the hash function */ hash = d1 >> (HASH_SHIFT - 1) & Mask; CELL *base; - base = (CELL *)PREG->u.sssl.l; + base = (CELL *)PREG->y_u.sssl.l; /* PREG now points at the beginning of the hash table */ BEGP(pt0); /* pt0 will always point at the item */ @@ -9117,11 +9117,11 @@ Yap_absmi(int inp) { CELL /* first, calculate the mask */ - Mask = (PREG->u.sssl.s - 1) << 1, /* next, calculate the hash function */ + Mask = (PREG->y_u.sssl.s - 1) << 1, /* next, calculate the hash function */ hash = d1 >> (HASH_SHIFT - 1) & Mask; CELL *base; - base = (CELL *)PREG->u.sssl.l; + base = (CELL *)PREG->y_u.sssl.l; /* PREG now points at the beginning of the hash table */ BEGP(pt0); /* pt0 will always point at the item */ @@ -9159,7 +9159,7 @@ Yap_absmi(int inp) BOp(go_on_func, sssl); BEGD(d0); { - CELL *pt = (CELL *)(PREG->u.sssl.l); + CELL *pt = (CELL *)(PREG->y_u.sssl.l); d0 = *SREG++; if (d0 == pt[0]) { @@ -9178,7 +9178,7 @@ Yap_absmi(int inp) BOp(go_on_cons, sssl); BEGD(d0); { - CELL *pt = (CELL *)(PREG->u.sssl.l); + CELL *pt = (CELL *)(PREG->y_u.sssl.l); d0 = I_R; if (d0 == pt[0]) { @@ -9197,7 +9197,7 @@ Yap_absmi(int inp) BOp(if_func, sssl); BEGD(d1); BEGP(pt0); - pt0 = (CELL *) PREG->u.sssl.l; + pt0 = (CELL *) PREG->y_u.sssl.l; d1 = *SREG++; while (pt0[0] != d1 && pt0[0] != (CELL)NULL ) { pt0 += 2; @@ -9212,7 +9212,7 @@ Yap_absmi(int inp) BOp(if_cons, sssl); BEGD(d1); BEGP(pt0); - pt0 = (CELL *) PREG->u.sssl.l; + pt0 = (CELL *) PREG->y_u.sssl.l; d1 = I_R; while (pt0[0] != d1 && pt0[0] != 0L ) { pt0 += 2; @@ -9251,12 +9251,12 @@ Yap_absmi(int inp) /* native_me */ BOp(native_me, aFlp); - if (PREG->u.aFlp.n) - EXEC_NATIVE(PREG->u.aFlp.n); + if (PREG->y_u.aFlp.n) + EXEC_NATIVE(PREG->y_u.aFlp.n); else { - PREG->u.aFlp.n++; - if (PREG->u.aFlp.n == MAX_INVOCATION) - PREG->u.aFlp.n = Yapc_Compile(PREG->u.aFlp.p); + PREG->y_u.aFlp.n++; + if (PREG->y_u.aFlp.n == MAX_INVOCATION) + PREG->y_u.aFlp.n = Yapc_Compile(PREG->y_u.aFlp.p); } PREG = NEXTOP(PREG, aFlp); @@ -9272,7 +9272,7 @@ Yap_absmi(int inp) Op(p_atom_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, atom_x_unk); atom_x_nvar: if (IsAtomTerm(d0) && !IsBlob(AtomOfTerm(d0))) { @@ -9280,13 +9280,13 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } BEGP(pt0); deref_body(d0, pt0, atom_x_unk, atom_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9295,7 +9295,7 @@ Yap_absmi(int inp) Op(p_atom_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, atom_y_unk); atom_y_nvar: @@ -9304,12 +9304,12 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } derefa_body(d0, pt0, atom_y_unk, atom_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9317,7 +9317,7 @@ Yap_absmi(int inp) Op(p_atomic_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, atomic_x_unk); atomic_x_nvar: /* non variable */ @@ -9326,13 +9326,13 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } BEGP(pt0); deref_body(d0, pt0, atomic_x_unk, atomic_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9341,7 +9341,7 @@ Yap_absmi(int inp) Op(p_atomic_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, atomic_y_unk); atomic_y_nvar: @@ -9351,12 +9351,12 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } derefa_body(d0, pt0, atomic_y_unk, atomic_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9364,7 +9364,7 @@ Yap_absmi(int inp) Op(p_integer_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, integer_x_unk); integer_x_nvar: /* non variable */ @@ -9379,7 +9379,7 @@ Yap_absmi(int inp) case (CELL)FunctorBigInt: { CELL *pt = RepAppl(d0); if ( pt[1] != BIG_RATIONAL || pt[1] != BIG_INT ) { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } } @@ -9389,17 +9389,17 @@ Yap_absmi(int inp) GONext(); break; default: - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } } } - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); BEGP(pt0); deref_body(d0, pt0, integer_x_unk, integer_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9408,7 +9408,7 @@ Yap_absmi(int inp) Op(p_integer_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, integer_y_unk); integer_y_nvar: @@ -9424,7 +9424,7 @@ Yap_absmi(int inp) case (CELL)FunctorBigInt: { CELL *pt = RepAppl(d0); if ( pt[1] != BIG_RATIONAL || pt[1] != BIG_INT ) { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } } @@ -9432,16 +9432,16 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, yl); GONext(); default: - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } } } - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); derefa_body(d0, pt0, integer_y_unk, integer_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9449,7 +9449,7 @@ Yap_absmi(int inp) Op(p_nonvar_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, nonvar_x_unk); nonvar_x_nvar: PREG = NEXTOP(PREG, xl); @@ -9457,7 +9457,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, nonvar_x_unk, nonvar_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9466,7 +9466,7 @@ Yap_absmi(int inp) Op(p_nonvar_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, nonvar_y_unk); nonvar_y_nvar: @@ -9474,7 +9474,7 @@ Yap_absmi(int inp) GONext(); derefa_body(d0, pt0, nonvar_y_unk, nonvar_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9482,7 +9482,7 @@ Yap_absmi(int inp) Op(p_number_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, number_x_unk); number_x_nvar: /* non variable */ @@ -9497,7 +9497,7 @@ Yap_absmi(int inp) case (CELL)FunctorBigInt: { CELL *pt = RepAppl(d0); if ( pt[1] != BIG_RATIONAL || pt[1] != BIG_INT ) { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } } @@ -9507,17 +9507,17 @@ Yap_absmi(int inp) GONext(); break; default: - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } } } - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); BEGP(pt0); deref_body(d0, pt0, number_x_unk, number_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9526,7 +9526,7 @@ Yap_absmi(int inp) Op(p_number_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, number_y_unk); number_y_nvar: @@ -9543,7 +9543,7 @@ Yap_absmi(int inp) case (CELL)FunctorBigInt: { CELL *pt = RepAppl(d0); if ( pt[1] != BIG_RATIONAL || pt[1] != BIG_INT ) { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } } @@ -9554,16 +9554,16 @@ Yap_absmi(int inp) GONext(); break; default: - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } } } - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); derefa_body(d0, pt0, number_y_unk, number_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9571,11 +9571,11 @@ Yap_absmi(int inp) Op(p_var_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, var_x_unk); var_x_nvar: /* non variable */ - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); BEGP(pt0); @@ -9589,12 +9589,12 @@ Yap_absmi(int inp) Op(p_var_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, var_y_unk); var_y_nvar: /* non variable */ - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); derefa_body(d0, pt0, var_y_unk, var_y_nvar); @@ -9606,7 +9606,7 @@ Yap_absmi(int inp) Op(p_db_ref_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, dbref_x_unk); dbref_x_nvar: /* non variable */ @@ -9617,13 +9617,13 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } BEGP(pt0); deref_body(d0, pt0, dbref_x_unk, dbref_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9632,7 +9632,7 @@ Yap_absmi(int inp) Op(p_db_ref_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, dbref_y_unk); dbref_y_nvar: @@ -9644,12 +9644,12 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } derefa_body(d0, pt0, dbref_y_unk, dbref_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9657,7 +9657,7 @@ Yap_absmi(int inp) Op(p_primitive_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, primi_x_unk); primi_x_nvar: /* non variable */ @@ -9666,13 +9666,13 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } BEGP(pt0); deref_body(d0, pt0, primi_x_unk, primi_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9681,7 +9681,7 @@ Yap_absmi(int inp) Op(p_primitive_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, primi_y_unk); primi_y_nvar: @@ -9691,12 +9691,12 @@ Yap_absmi(int inp) GONext(); } else { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } derefa_body(d0, pt0, primi_y_unk, primi_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9704,7 +9704,7 @@ Yap_absmi(int inp) Op(p_compound_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, compound_x_unk); compound_x_nvar: /* non variable */ @@ -9714,20 +9714,20 @@ Yap_absmi(int inp) } else if (IsApplTerm(d0)) { if (IsExtensionFunctor(FunctorOfTerm(d0))) { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } PREG = NEXTOP(PREG, xl); GONext(); } else { - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); } BEGP(pt0); deref_body(d0, pt0, compound_x_unk, compound_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9736,7 +9736,7 @@ Yap_absmi(int inp) Op(p_compound_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, compound_y_unk); compound_y_nvar: @@ -9747,19 +9747,19 @@ Yap_absmi(int inp) } else if (IsApplTerm(d0)) { if (IsExtensionFunctor(FunctorOfTerm(d0))) { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } PREG = NEXTOP(PREG, yl); GONext(); } else { - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); } derefa_body(d0, pt0, compound_y_unk, compound_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9767,7 +9767,7 @@ Yap_absmi(int inp) Op(p_float_x, xl); BEGD(d0); - d0 = XREG(PREG->u.xl.x); + d0 = XREG(PREG->y_u.xl.x); deref_head(d0, float_x_unk); float_x_nvar: /* non variable */ @@ -9775,12 +9775,12 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, xl); GONext(); } - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); BEGP(pt0); deref_body(d0, pt0, float_x_unk, float_x_nvar); - PREG = PREG->u.xl.F; + PREG = PREG->y_u.xl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9789,7 +9789,7 @@ Yap_absmi(int inp) Op(p_float_y, yl); BEGD(d0); BEGP(pt0); - pt0 = YREG + PREG->u.yl.y; + pt0 = YREG + PREG->y_u.yl.y; d0 = *pt0; deref_head(d0, float_y_unk); float_y_nvar: @@ -9798,11 +9798,11 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, yl); GONext(); } - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); derefa_body(d0, pt0, float_y_unk, float_y_nvar); - PREG = PREG->u.yl.F; + PREG = PREG->y_u.yl.F; GONext(); ENDP(pt0); ENDD(d0); @@ -9811,11 +9811,11 @@ Yap_absmi(int inp) Op(p_plus_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, plus_vv_unk); plus_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, plus_vv_nvar_unk); plus_vv_nvar_nvar: @@ -9834,7 +9834,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -9859,12 +9859,12 @@ Yap_absmi(int inp) Op(p_plus_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, plus_vc_unk); plus_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) + d1); } @@ -9880,14 +9880,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, plus_vc_unk, plus_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A + " Int_FORMAT, PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A + " Int_FORMAT, PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -9897,11 +9897,11 @@ Yap_absmi(int inp) Op(p_plus_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, plus_y_vv_unk); plus_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, plus_y_vv_nvar_unk); plus_y_vv_nvar_nvar: @@ -9921,7 +9921,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -9948,12 +9948,12 @@ Yap_absmi(int inp) Op(p_plus_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, plus_y_vc_unk); plus_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) + d1); } @@ -9970,7 +9970,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -9979,7 +9979,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, plus_y_vc_unk, plus_y_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A + " Int_FORMAT, PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A + " Int_FORMAT, PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -9989,11 +9989,11 @@ Yap_absmi(int inp) Op(p_minus_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, minus_vv_unk); minus_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, minus_vv_nvar_unk); minus_vv_nvar_nvar: @@ -10012,7 +10012,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -10037,12 +10037,12 @@ Yap_absmi(int inp) Op(p_minus_cv, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, minus_cv_unk); minus_cv_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(d1 - IntOfTerm(d0)); } @@ -10058,14 +10058,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, minus_cv_unk, minus_cv_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "-A", PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "-A", PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10075,11 +10075,11 @@ Yap_absmi(int inp) Op(p_minus_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, minus_y_vv_unk); minus_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, minus_y_vv_nvar_unk); minus_y_vv_nvar_nvar: @@ -10099,7 +10099,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10126,12 +10126,12 @@ Yap_absmi(int inp) Op(p_minus_y_cv, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, minus_y_cv_unk); minus_y_cv_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(d1 - IntOfTerm(d0)); } @@ -10148,7 +10148,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10157,7 +10157,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, minus_y_cv_unk, minus_y_cv_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "-A", PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "-A", PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10167,11 +10167,11 @@ Yap_absmi(int inp) Op(p_times_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, times_vv_unk); times_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, times_vv_nvar_unk); times_vv_nvar_nvar: @@ -10190,7 +10190,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -10215,12 +10215,12 @@ Yap_absmi(int inp) Op(p_times_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, times_vc_unk); times_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = times_int(IntOfTerm(d0), d1 PASS_REGS); } @@ -10236,14 +10236,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, times_vc_unk, times_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A* " Int_FORMAT, PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A* " Int_FORMAT, PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10253,11 +10253,11 @@ Yap_absmi(int inp) Op(p_times_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, times_y_vv_unk); times_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, times_y_vv_nvar_unk); times_y_vv_nvar_nvar: @@ -10277,7 +10277,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10304,12 +10304,12 @@ Yap_absmi(int inp) Op(p_times_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, times_y_vc_unk); times_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = times_int(IntOfTerm(d0), d1 PASS_REGS); } @@ -10326,7 +10326,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10335,7 +10335,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, times_y_vc_unk, times_y_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A* " Int_FORMAT, PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A* " Int_FORMAT, PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10345,11 +10345,11 @@ Yap_absmi(int inp) Op(p_div_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, div_vv_unk); div_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, div_vv_nvar_unk); div_vv_nvar_nvar: @@ -10375,7 +10375,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -10400,12 +10400,12 @@ Yap_absmi(int inp) Op(p_div_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, div_vc_unk); div_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntTerm(IntOfTerm(d0) / d1); } @@ -10421,7 +10421,7 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); @@ -10437,12 +10437,12 @@ Yap_absmi(int inp) Op(p_div_cv, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, div_cv_unk); div_cv_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { Int div = IntOfTerm(d0); if (div == 0){ @@ -10464,14 +10464,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, div_cv_unk, div_cv_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "// A", PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "// A", PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10481,11 +10481,11 @@ Yap_absmi(int inp) Op(p_div_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, div_y_vv_unk); div_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, div_y_vv_nvar_unk); div_y_vv_nvar_nvar: @@ -10512,7 +10512,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10539,12 +10539,12 @@ Yap_absmi(int inp) Op(p_div_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, div_y_vc_unk); div_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntTerm(IntOfTerm(d0)/d1); } @@ -10561,7 +10561,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10579,12 +10579,12 @@ Yap_absmi(int inp) Op(p_div_y_cv, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, div_y_cv_unk); div_y_cv_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { Int div = IntOfTerm(d0); if (div == 0) { @@ -10608,7 +10608,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10617,7 +10617,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, div_y_cv_unk, div_y_cv_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "// A", PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is " Int_FORMAT "// A", PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10628,11 +10628,11 @@ Yap_absmi(int inp) Op(p_and_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, and_vv_unk); and_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, and_vv_nvar_unk); and_vv_nvar_nvar: @@ -10651,7 +10651,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -10676,12 +10676,12 @@ Yap_absmi(int inp) Op(p_and_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, and_vc_unk); and_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) & d1); } @@ -10697,14 +10697,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, and_vc_unk, and_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A /\\ " Int_FORMAT , PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A /\\ " Int_FORMAT , PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10714,11 +10714,11 @@ Yap_absmi(int inp) Op(p_and_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, and_y_vv_unk); and_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, and_y_vv_nvar_unk); and_y_vv_nvar_nvar: @@ -10738,7 +10738,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10765,12 +10765,12 @@ Yap_absmi(int inp) Op(p_and_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, and_y_vc_unk); and_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) & d1); } @@ -10787,7 +10787,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10796,7 +10796,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, and_y_vc_unk, and_y_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A /\\ " Int_FORMAT , PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A /\\ " Int_FORMAT , PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10807,11 +10807,11 @@ Yap_absmi(int inp) Op(p_or_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, or_vv_unk); or_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, or_vv_nvar_unk); or_vv_nvar_nvar: @@ -10830,7 +10830,7 @@ Yap_absmi(int inp) FAIL(); } } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -10855,12 +10855,12 @@ Yap_absmi(int inp) Op(p_or_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, or_vc_unk); or_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) | d1); } @@ -10875,14 +10875,14 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); BEGP(pt0); deref_body(d0, pt0, or_vc_unk, or_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A \\/ " Int_FORMAT , PREG->u.xxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A \\/ " Int_FORMAT , PREG->y_u.xxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10892,11 +10892,11 @@ Yap_absmi(int inp) Op(p_or_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, or_y_vv_unk); or_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, or_y_vv_nvar_unk); or_y_vv_nvar_nvar: @@ -10916,7 +10916,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10943,12 +10943,12 @@ Yap_absmi(int inp) Op(p_or_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, or_y_vc_unk); or_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntegerTerm(IntOfTerm(d0) | d1); } @@ -10965,7 +10965,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -10974,7 +10974,7 @@ Yap_absmi(int inp) BEGP(pt0); deref_body(d0, pt0, or_y_vc_unk, or_y_vc_nvar); saveregs(); - Yap_NilError(INSTANTIATION_ERROR, "X is A \\/ " Int_FORMAT , PREG->u.yxn.c); + Yap_NilError(INSTANTIATION_ERROR, "X is A \\/ " Int_FORMAT , PREG->y_u.yxn.c); setregs(); FAIL(); ENDP(pt0); @@ -10984,11 +10984,11 @@ Yap_absmi(int inp) Op(p_sll_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, sll_vv_unk); sll_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, sll_vv_nvar_unk); sll_vv_nvar_nvar: @@ -11011,7 +11011,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -11036,12 +11036,12 @@ Yap_absmi(int inp) Op(p_sll_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, sll_vc_unk); sll_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = do_sll(IntOfTerm(d0), (Int)d1 PASS_REGS); } @@ -11057,7 +11057,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); @@ -11073,12 +11073,12 @@ Yap_absmi(int inp) Op(p_sll_cv, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, sll_cv_unk); sll_cv_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { Int i2 = IntOfTerm(d0); if (i2 < 0) @@ -11098,7 +11098,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); @@ -11115,11 +11115,11 @@ Yap_absmi(int inp) Op(p_sll_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, sll_y_vv_unk); sll_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, sll_y_vv_nvar_unk); sll_y_vv_nvar_nvar: @@ -11143,7 +11143,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt0); - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11170,12 +11170,12 @@ Yap_absmi(int inp) Op(p_sll_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, sll_y_vc_unk); sll_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = do_sll(IntOfTerm(d0), Yap_Eval(d1) PASS_REGS); } @@ -11192,7 +11192,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11211,12 +11211,12 @@ Yap_absmi(int inp) Op(p_sll_y_cv, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, sll_y_cv_unk); sll_y_cv_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { Int i2 = IntOfTerm(d0); if (i2 < 0) @@ -11237,7 +11237,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11256,11 +11256,11 @@ Yap_absmi(int inp) Op(p_slr_vv, xxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); /* first check pt1 */ deref_head(d0, slr_vv_unk); slr_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, slr_vv_nvar_unk); slr_vv_nvar_nvar: @@ -11283,7 +11283,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(PREG, xxx); GONext(); @@ -11308,12 +11308,12 @@ Yap_absmi(int inp) Op(p_slr_vc, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, slr_vc_unk); slr_vc_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { d0 = MkIntTerm(SLR(IntOfTerm(d0), d1)); } @@ -11329,7 +11329,7 @@ Yap_absmi(int inp) } } } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); @@ -11345,12 +11345,12 @@ Yap_absmi(int inp) Op(p_slr_cv, xxn); BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); /* first check pt1 */ deref_head(d0, slr_cv_unk); slr_cv_nvar: { - Int d1 = PREG->u.xxn.c; + Int d1 = PREG->y_u.xxn.c; if (IsIntTerm(d0)) { Int i2 = IntOfTerm(d0); if (i2 < 0) @@ -11370,7 +11370,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(PREG, xxn); GONext(); @@ -11387,11 +11387,11 @@ Yap_absmi(int inp) Op(p_slr_y_vv, yxx); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); /* first check pt1 */ deref_head(d0, slr_y_vv_unk); slr_y_vv_nvar: - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); /* next check A2 */ deref_head(d1, slr_y_vv_nvar_unk); slr_y_vv_nvar_nvar: @@ -11415,7 +11415,7 @@ Yap_absmi(int inp) setregs(); FAIL(); } - pt0 = YREG + PREG->u.yxx.y; + pt0 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11442,12 +11442,12 @@ Yap_absmi(int inp) Op(p_slr_y_vc, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, slr_y_vc_unk); slr_y_vc_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { d0 = MkIntTerm(SLR(IntOfTerm(d0), d1)); } @@ -11464,7 +11464,7 @@ Yap_absmi(int inp) } } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11481,12 +11481,12 @@ Yap_absmi(int inp) Op(p_slr_y_cv, yxn); BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); /* first check pt1 */ deref_head(d0, slr_y_cv_unk); slr_y_cv_nvar: { - Int d1 = PREG->u.yxn.c; + Int d1 = PREG->y_u.yxn.c; if (IsIntTerm(d0)) { Int i2 = IntOfTerm(d0); if (i2 < 0) @@ -11507,7 +11507,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt0); - pt0 = YREG + PREG->u.yxn.y; + pt0 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt0,d0); ENDP(pt0); @@ -11526,9 +11526,9 @@ Yap_absmi(int inp) BOp(call_bfunc_xx, plxxs); BEGD(d0); BEGD(d1); - d0 = XREG(PREG->u.plxxs.x1); + d0 = XREG(PREG->y_u.plxxs.x1); call_bfunc_xx_nvar: - d1 = XREG(PREG->u.plxxs.x2); + d1 = XREG(PREG->y_u.plxxs.x2); call_bfunc_xx2_nvar: deref_head(d0, call_bfunc_xx_unk); deref_head(d1, call_bfunc_xx2_unk); @@ -11536,7 +11536,7 @@ Yap_absmi(int inp) COUNT flags; Int v = IntOfTerm(d0) - IntOfTerm(d1); - flags = PREG->u.plxxs.flags; + flags = PREG->y_u.plxxs.flags; if (v > 0) { if (flags & GT_OK_IN_CMP) { yamop *nextp = NEXTOP(PREG, plxxs); @@ -11545,7 +11545,7 @@ Yap_absmi(int inp) ALWAYS_GONext(); ALWAYS_END_PREFETCH(); } else { - yamop *nextp = PREG->u.plxxs.f; + yamop *nextp = PREG->y_u.plxxs.f; ALWAYS_LOOKAHEAD(nextp->opc); PREG = nextp; ALWAYS_GONext(); @@ -11559,7 +11559,7 @@ Yap_absmi(int inp) ALWAYS_GONext(); ALWAYS_END_PREFETCH(); } else { - yamop *nextp = PREG->u.plxxs.f; + yamop *nextp = PREG->y_u.plxxs.f; ALWAYS_LOOKAHEAD(nextp->opc); PREG = nextp; ALWAYS_GONext(); @@ -11573,7 +11573,7 @@ Yap_absmi(int inp) ALWAYS_GONext(); ALWAYS_END_PREFETCH(); } else { - yamop *nextp = PREG->u.plxxs.f; + yamop *nextp = PREG->y_u.plxxs.f; ALWAYS_LOOKAHEAD(nextp->opc); PREG = nextp; ALWAYS_GONext(); @@ -11583,7 +11583,7 @@ Yap_absmi(int inp) } exec_bin_cmp_xx: { - CmpPredicate f = PREG->u.plxxs.p->cs.d_code; + CmpPredicate f = PREG->y_u.plxxs.p->cs.d_code; saveregs(); d0 = (CELL) (f) (d0,d1); setregs(); @@ -11592,7 +11592,7 @@ Yap_absmi(int inp) JMPNext(); } if (!d0) { - PREG = PREG->u.plxxs.f; + PREG = PREG->y_u.plxxs.f; JMPNext(); } PREG = NEXTOP(PREG, plxxs); @@ -11617,8 +11617,8 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); BEGP(pt0); - pt0 = YREG + PREG->u.plxys.y; - d1 = XREG(PREG->u.plxys.x); + pt0 = YREG + PREG->y_u.plxys.y; + d1 = XREG(PREG->y_u.plxys.x); d0 = *pt0; ENDP(pt0); deref_head(d0, call_bfunc_yx_unk); @@ -11629,13 +11629,13 @@ Yap_absmi(int inp) int flags; Int v = IntOfTerm(d0) - IntOfTerm(d1); - flags = PREG->u.plxys.flags; + flags = PREG->y_u.plxys.flags; if (v > 0) { if (flags & GT_OK_IN_CMP) { PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } else if (v < 0) { @@ -11643,7 +11643,7 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } else /* if (v == 0) */ { @@ -11651,21 +11651,21 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } } exec_bin_cmp_yx: { - CmpPredicate f = PREG->u.plxys.p->cs.d_code; + CmpPredicate f = PREG->y_u.plxys.p->cs.d_code; saveregs(); d0 = (CELL) (f) (d0,d1); setregs(); } if (!d0 || PREG == FAILCODE) { if (PREG != FAILCODE) - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } PREG = NEXTOP(PREG, plxys); @@ -11690,8 +11690,8 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); BEGP(pt0); - pt0 = YREG + PREG->u.plxys.y; - d0 = XREG(PREG->u.plxys.x); + pt0 = YREG + PREG->y_u.plxys.y; + d0 = XREG(PREG->y_u.plxys.x); d1 = *pt0; ENDP(pt0); deref_head(d0, call_bfunc_xy_unk); @@ -11702,13 +11702,13 @@ Yap_absmi(int inp) int flags; Int v = IntOfTerm(d0) - IntOfTerm(d1); - flags = PREG->u.plxys.flags; + flags = PREG->y_u.plxys.flags; if (v > 0) { if (flags & GT_OK_IN_CMP) { PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } else if (v < 0) { @@ -11716,7 +11716,7 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } else /* if (v == 0) */ { @@ -11724,21 +11724,21 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plxys); JMPNext(); } else { - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } } } exec_bin_cmp_xy: { - CmpPredicate f = PREG->u.plxys.p->cs.d_code; + CmpPredicate f = PREG->y_u.plxys.p->cs.d_code; saveregs(); d0 = (CELL) (f) (d0,d1); setregs(); } if (!d0 || PREG == FAILCODE) { if (PREG != FAILCODE) - PREG = PREG->u.plxys.f; + PREG = PREG->y_u.plxys.f; JMPNext(); } PREG = NEXTOP(PREG, plxys); @@ -11763,9 +11763,9 @@ Yap_absmi(int inp) BEGD(d0); BEGD(d1); BEGP(pt0); - pt0 = YREG + PREG->u.plyys.y1; + pt0 = YREG + PREG->y_u.plyys.y1; BEGP(pt1); - pt1 = YREG + PREG->u.plyys.y2; + pt1 = YREG + PREG->y_u.plyys.y2; d0 = *pt0; d1 = *pt1; ENDP(pt1); @@ -11778,13 +11778,13 @@ Yap_absmi(int inp) int flags; Int v = IntOfTerm(d0) - IntOfTerm(d1); - flags = PREG->u.plyys.flags; + flags = PREG->y_u.plyys.flags; if (v > 0) { if (flags & GT_OK_IN_CMP) { PREG = NEXTOP(PREG, plyys); JMPNext(); } else { - PREG = PREG->u.plyys.f; + PREG = PREG->y_u.plyys.f; JMPNext(); } } else if (v < 0) { @@ -11792,7 +11792,7 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plyys); JMPNext(); } else { - PREG = PREG->u.plyys.f; + PREG = PREG->y_u.plyys.f; JMPNext(); } } else /* if (v == 0) */ { @@ -11800,21 +11800,21 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, plyys); JMPNext(); } else { - PREG = PREG->u.plyys.f; + PREG = PREG->y_u.plyys.f; JMPNext(); } } } exec_bin_cmp_yy: { - CmpPredicate f = PREG->u.plyys.p->cs.d_code; + CmpPredicate f = PREG->y_u.plyys.p->cs.d_code; saveregs(); d0 = (CELL) (f) (d0,d1); setregs(); } if (!d0 || PREG == FAILCODE) { if (PREG != FAILCODE) - PREG = PREG->u.plyys.f; + PREG = PREG->y_u.plyys.f; JMPNext(); } PREG = NEXTOP(PREG, plyys); @@ -11860,7 +11860,7 @@ Yap_absmi(int inp) dif_nvar1_nvar2: /* both arguments are bound */ if (d0 == d1) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } if (IsAtomOrIntTerm(d0) || IsAtomOrIntTerm(d1)) { @@ -11942,7 +11942,7 @@ Yap_absmi(int inp) } if (opresult) { /* restore B, no need to restore HB */ - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } /* restore B, and later HB */ @@ -11955,14 +11955,14 @@ Yap_absmi(int inp) deref_body(d0, pt0, dif_unk1, dif_nvar1); ENDP(pt0); /* first argument is unbound */ - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); BEGP(pt0); deref_body(d1, pt0, dif_nvar1_unk2, dif_nvar1_nvar2); ENDP(pt0); /* second argument is unbound */ - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); ENDD(d1); ENDD(d0); @@ -11989,14 +11989,14 @@ Yap_absmi(int inp) } if (IsPairTerm(d0)) { if (!IsPairTerm(d1)) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } BEGD(d2); always_save_pc(); d2 = iequ_complex(RepPair(d0)-1, RepPair(d0)+1,RepPair(d1)-1); if (d2 == FALSE) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } ENDD(d2); @@ -12010,7 +12010,7 @@ Yap_absmi(int inp) /* f1 must be a compound term, even if it is a suspension */ if (!IsApplTerm(d1)) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } f1 = FunctorOfTerm(d1); @@ -12024,47 +12024,47 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, l); GONext(); } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); case (CELL)FunctorLongInt: if (f1 != FunctorLongInt) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } if (LongIntOfTerm(d0) == LongIntOfTerm(d1)) { PREG = NEXTOP(PREG, l); GONext(); } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); case (CELL)FunctorString: if (f1 != FunctorString) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } if (strcmp((char *)(RepAppl(d0)+2),(char *)(RepAppl(d1)+2)) == 0) { PREG = NEXTOP(PREG, l); GONext(); } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); break; #ifdef USE_GMP case (CELL)FunctorBigInt: if (f1 != FunctorBigInt) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } if (Yap_gmp_tcmp_big_big(d0,d1) == 0) { PREG = NEXTOP(PREG, l); GONext(); } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); #endif case (CELL)FunctorDouble: if (f1 != FunctorDouble) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } if (FloatOfTerm(d0) == FloatOfTerm(d1)) { @@ -12073,19 +12073,19 @@ Yap_absmi(int inp) } break; default: - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } } if (f0 != f1) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } always_save_pc(); BEGD(d2); d2 = iequ_complex(RepAppl(d0), RepAppl(d0)+ArityOfFunctor(f0), RepAppl(d1)); if (d2 == FALSE) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } ENDD(d2); @@ -12093,7 +12093,7 @@ Yap_absmi(int inp) PREG = NEXTOP(PREG, l); GONext(); } - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); BEGP(pt0); @@ -12103,7 +12103,7 @@ Yap_absmi(int inp) /* second argument is unbound */ /* I don't need to worry about co-routining because an unbound variable may never be == to a constrained variable!! */ - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); ENDD(d1); @@ -12115,7 +12115,7 @@ Yap_absmi(int inp) p_eq_var1_nvar2: /* I don't need to worry about co-routining because an unbound variable may never be == to a constrained variable!! */ - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); BEGP(pt1); @@ -12123,7 +12123,7 @@ Yap_absmi(int inp) /* first argument is unbound */ /* second argument is unbound */ if (pt1 != pt0) { - PREG = PREG->u.l.l; + PREG = PREG->y_u.l.l; GONext(); } PREG = NEXTOP(PREG, l); @@ -12138,14 +12138,14 @@ Yap_absmi(int inp) Op(p_arg_vv, xxx); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.xxx.x1); - HR[1] = XREG(PREG->u.xxx.x2); + HR[0] = XREG(PREG->y_u.xxx.x1); + HR[1] = XREG(PREG->y_u.xxx.x2); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorArg,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); deref_head(d0, arg_arg1_unk); arg_arg1_nvar: /* ARG1 is ok! */ @@ -12164,7 +12164,7 @@ Yap_absmi(int inp) /* d0 now got the argument we want */ BEGD(d1); - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); deref_head(d1, arg_arg2_unk); arg_arg2_nvar: /* d1 now got the structure we want to fetch the argument @@ -12188,7 +12188,7 @@ Yap_absmi(int inp) */ FAIL(); } - XREG(PREG->u.xxx.x) = pt0[d0]; + XREG(PREG->y_u.xxx.x) = pt0[d0]; PREG = NEXTOP(PREG, xxx); GONext(); ENDP(pt0); @@ -12205,7 +12205,7 @@ Yap_absmi(int inp) } FAIL(); } - XREG(PREG->u.xxx.x) = pt0[d0-1]; + XREG(PREG->y_u.xxx.x) = pt0[d0-1]; PREG = NEXTOP(PREG, xxx); GONext(); ENDP(pt0); @@ -12243,19 +12243,19 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { CELL *Ho = HR; - Term t = MkIntegerTerm(PREG->u.xxn.c); + Term t = MkIntegerTerm(PREG->y_u.xxn.c); HR[0] = t; - HR[1] = XREG(PREG->u.xxn.xi); + HR[1] = XREG(PREG->y_u.xxn.xi); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorArg,0)),HR); HR = Ho; } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = PREG->u.xxn.c; + d0 = PREG->y_u.xxn.c; /* d0 now got the argument we want */ BEGD(d1); - d1 = XREG(PREG->u.xxn.xi); + d1 = XREG(PREG->y_u.xxn.xi); deref_head(d1, arg_arg2_vc_unk); arg_arg2_vc_nvar: /* d1 now got the structure we want to fetch the argument @@ -12279,7 +12279,7 @@ Yap_absmi(int inp) */ FAIL(); } - XREG(PREG->u.xxn.x) = pt0[d0]; + XREG(PREG->y_u.xxn.x) = pt0[d0]; PREG = NEXTOP(PREG, xxn); GONext(); ENDP(pt0); @@ -12296,7 +12296,7 @@ Yap_absmi(int inp) } FAIL(); } - XREG(PREG->u.xxn.x) = pt0[d0-1]; + XREG(PREG->y_u.xxn.x) = pt0[d0-1]; PREG = NEXTOP(PREG, xxn); GONext(); ENDP(pt0); @@ -12326,15 +12326,15 @@ Yap_absmi(int inp) Op(p_arg_y_vv, yxx); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.yxx.x1); - HR[1] = XREG(PREG->u.yxx.x2); - HR[2] = YREG[PREG->u.yxx.y]; + HR[0] = XREG(PREG->y_u.yxx.x1); + HR[1] = XREG(PREG->y_u.yxx.x2); + HR[2] = YREG[PREG->y_u.yxx.y]; RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorArg,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); deref_head(d0, arg_y_arg1_unk); arg_y_arg1_nvar: /* ARG1 is ok! */ @@ -12353,7 +12353,7 @@ Yap_absmi(int inp) /* d0 now got the argument we want */ BEGD(d1); - d1 = XREG(PREG->u.yxx.x2); + d1 = XREG(PREG->y_u.yxx.x2); deref_head(d1, arg_y_arg2_unk); arg_y_arg2_nvar: /* d1 now got the structure we want to fetch the argument @@ -12378,7 +12378,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = YREG + PREG->u.yxx.y; + pt1 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt1,pt0[d0]); ENDP(pt1); @@ -12398,7 +12398,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = YREG + PREG->u.yxx.y; + pt1 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt1,pt0[d0-1]); GONext(); @@ -12438,20 +12438,20 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { CELL *Ho = HR; - Term t = MkIntegerTerm(PREG->u.yxn.c); + Term t = MkIntegerTerm(PREG->y_u.yxn.c); HR[0] = t; - HR[1] = XREG(PREG->u.yxn.xi); - HR[2] = YREG[PREG->u.yxn.y]; + HR[1] = XREG(PREG->y_u.yxn.xi); + HR[2] = YREG[PREG->y_u.yxn.y]; RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorArg,0)),HR); HR = Ho; } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = PREG->u.yxn.c; + d0 = PREG->y_u.yxn.c; /* d0 now got the argument we want */ BEGD(d1); - d1 = XREG(PREG->u.yxn.xi); + d1 = XREG(PREG->y_u.yxn.xi); deref_head(d1, arg_y_arg2_vc_unk); arg_y_arg2_vc_nvar: /* d1 now got the structure we want to fetch the argument @@ -12476,7 +12476,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = YREG + PREG->u.yxn.y; + pt1 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt1,pt0[d0]); ENDP(pt1); @@ -12496,7 +12496,7 @@ Yap_absmi(int inp) FAIL(); } BEGP(pt1); - pt1 = YREG + PREG->u.yxn.y; + pt1 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(PREG, yxn); INITIALIZE_PERMVAR(pt1,pt0[d0-1]); ENDP(pt1); @@ -12531,19 +12531,19 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { RESET_VARIABLE(HR); - HR[1] = XREG(PREG->u.xxx.x1); - HR[2] = XREG(PREG->u.xxx.x2); + HR[1] = XREG(PREG->y_u.xxx.x1); + HR[2] = XREG(PREG->y_u.xxx.x2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ /* We have to build the structure */ BEGD(d0); - d0 = XREG(PREG->u.xxx.x1); + d0 = XREG(PREG->y_u.xxx.x1); deref_head(d0, func2s_unk); func2s_nvar: /* we do, let's get the third argument */ BEGD(d1); - d1 = XREG(PREG->u.xxx.x2); + d1 = XREG(PREG->y_u.xxx.x2); deref_head(d1, func2s_unk2); func2s_nvar2: /* Uuuff, the second and third argument are bound */ @@ -12574,7 +12574,7 @@ Yap_absmi(int inp) HR += 2; /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx),Osbpp),l); GONext(); } @@ -12616,11 +12616,11 @@ Yap_absmi(int inp) ENDP(pt1); /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx),Osbpp),l); GONext(); } else if ((Int)d1 == 0) { - XREG(PREG->u.xxx.x) = d0; + XREG(PREG->y_u.xxx.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxx),Osbpp),l); GONext(); } else { @@ -12657,17 +12657,17 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { RESET_VARIABLE(HR); - HR[1] = PREG->u.xxc.c; - HR[2] = XREG(PREG->u.xxc.xi); + HR[1] = PREG->y_u.xxc.c; + HR[2] = XREG(PREG->y_u.xxc.xi); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); /* We have to build the structure */ - d0 = PREG->u.xxc.c; + d0 = PREG->y_u.xxc.c; /* we do, let's get the third argument */ BEGD(d1); - d1 = XREG(PREG->u.xxc.xi); + d1 = XREG(PREG->y_u.xxc.xi); deref_head(d1, func2s_unk2_cv); func2s_nvar2_cv: /* Uuuff, the second and third argument are bound */ @@ -12692,7 +12692,7 @@ Yap_absmi(int inp) HR += 2; /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxc.x) = d0; + XREG(PREG->y_u.xxc.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc),Osbpp),l); GONext(); } else if ((Int)d1 > 0) { @@ -12733,11 +12733,11 @@ Yap_absmi(int inp) ENDP(pt1); /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxc.x) = d0; + XREG(PREG->y_u.xxc.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc),Osbpp),l); GONext(); } else if (d1 == 0) { - XREG(PREG->u.xxc.x) = d0; + XREG(PREG->y_u.xxc.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxc),Osbpp),l); GONext(); } else { @@ -12767,9 +12767,9 @@ Yap_absmi(int inp) Term ti; CELL *hi = HR; - ti = MkIntegerTerm(PREG->u.xxn.c); + ti = MkIntegerTerm(PREG->y_u.xxn.c); RESET_VARIABLE(HR); - HR[1] = XREG(PREG->u.xxn.xi); + HR[1] = XREG(PREG->y_u.xxn.xi); HR[2] = ti; low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); HR = hi; @@ -12777,11 +12777,11 @@ Yap_absmi(int inp) #endif /* LOW_LEVEL_TRACE */ /* We have to build the structure */ BEGD(d0); - d0 = XREG(PREG->u.xxn.xi); + d0 = XREG(PREG->y_u.xxn.xi); deref_head(d0, func2s_unk_vc); func2s_nvar_vc: BEGD(d1); - d1 = PREG->u.xxn.c; + d1 = PREG->y_u.xxn.c; if (!IsAtomicTerm(d0)) { saveregs(); Yap_Error(TYPE_ERROR_ATOM,d0,"functor/3"); @@ -12797,13 +12797,13 @@ Yap_absmi(int inp) HR += 2; /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn),Osbpp),l); GONext(); } /* now let's build a compound term */ if (d1 == 0) { - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn),Osbpp),l); GONext(); } @@ -12844,7 +12844,7 @@ Yap_absmi(int inp) ENDD(d1); /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ - XREG(PREG->u.xxn.x) = d0; + XREG(PREG->y_u.xxn.x) = d0; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, xxn),Osbpp),l); GONext(); @@ -12865,19 +12865,19 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { RESET_VARIABLE(HR); - HR[1] = XREG(PREG->u.yxx.x1); - HR[2] = XREG(PREG->u.yxx.x2); + HR[1] = XREG(PREG->y_u.yxx.x1); + HR[2] = XREG(PREG->y_u.yxx.x2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ /* We have to build the structure */ BEGD(d0); - d0 = XREG(PREG->u.yxx.x1); + d0 = XREG(PREG->y_u.yxx.x1); deref_head(d0, func2s_y_unk); func2s_y_nvar: /* we do, let's get the third argument */ BEGD(d1); - d1 = XREG(PREG->u.yxx.x2); + d1 = XREG(PREG->y_u.yxx.x2); deref_head(d1, func2s_y_unk2); func2s_y_nvar2: /* Uuuff, the second and third argument are bound */ @@ -12907,7 +12907,7 @@ Yap_absmi(int inp) d0 = AbsPair(HR); HR += 2; BEGP(pt1); - pt1 = YREG + PREG->u.yxx.y; + pt1 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -12951,14 +12951,14 @@ Yap_absmi(int inp) /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ BEGP(pt1); - pt1 = YREG + PREG->u.yxx.y; + pt1 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); GONext(); } else if (d1 == 0) { BEGP(pt1); - pt1 = YREG + PREG->u.yxx.y; + pt1 = YREG + PREG->y_u.yxx.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxx),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -12997,17 +12997,17 @@ Yap_absmi(int inp) #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { RESET_VARIABLE(HR); - HR[1] = PREG->u.yxc.c; - HR[2] = XREG(PREG->u.yxc.xi); + HR[1] = PREG->y_u.yxc.c; + HR[2] = XREG(PREG->y_u.yxc.xi); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ /* We have to build the structure */ BEGD(d0); - d0 = PREG->u.yxc.c; + d0 = PREG->y_u.yxc.c; /* we do, let's get the third argument */ BEGD(d1); - d1 = XREG(PREG->u.yxc.xi); + d1 = XREG(PREG->y_u.yxc.xi); deref_head(d1, func2s_y_unk_cv); func2s_y_nvar_cv: /* Uuuff, the second and third argument are bound */ @@ -13033,7 +13033,7 @@ Yap_absmi(int inp) /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ BEGP(pt1); - pt1 = YREG + PREG->u.yxc.y; + pt1 = YREG + PREG->y_u.yxc.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -13078,14 +13078,14 @@ Yap_absmi(int inp) /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ BEGP(pt1); - pt1 = YREG + PREG->u.yxc.y; + pt1 = YREG + PREG->y_u.yxc.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); GONext(); } else if (d1 == 0) { BEGP(pt1); - pt1 = YREG + PREG->u.yxc.y; + pt1 = YREG + PREG->y_u.yxc.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxc),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -13117,9 +13117,9 @@ Yap_absmi(int inp) Term ti; CELL *hi = HR; - ti = MkIntegerTerm((Int)(PREG->u.yxn.c)); + ti = MkIntegerTerm((Int)(PREG->y_u.yxn.c)); RESET_VARIABLE(HR); - HR[1] = XREG(PREG->u.yxn.xi); + HR[1] = XREG(PREG->y_u.yxn.xi); HR[2] = ti; low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); HR = hi; @@ -13127,11 +13127,11 @@ Yap_absmi(int inp) #endif /* LOW_LEVEL_TRACE */ /* We have to build the structure */ BEGD(d0); - d0 = XREG(PREG->u.yxn.xi); + d0 = XREG(PREG->y_u.yxn.xi); deref_head(d0, func2s_y_unk_vc); func2s_y_nvar_vc: BEGD(d1); - d1 = PREG->u.yxn.c; + d1 = PREG->y_u.yxn.c; if (!IsAtomicTerm(d0)) { saveregs(); Yap_Error(TYPE_ERROR_ATOM,d0,"functor/3"); @@ -13148,7 +13148,7 @@ Yap_absmi(int inp) /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ BEGP(pt1); - pt1 = YREG + PREG->u.yxn.y; + pt1 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -13156,7 +13156,7 @@ Yap_absmi(int inp) } if (d1 == 0) { BEGP(pt1); - pt1 = YREG + PREG->u.yxn.y; + pt1 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -13206,7 +13206,7 @@ Yap_absmi(int inp) /* else if arity is 0 just pass d0 through */ /* Ding, ding, we made it */ BEGP(pt1); - pt1 = YREG + PREG->u.yxn.y; + pt1 = YREG + PREG->y_u.yxn.y; PREG = NEXTOP(NEXTOP(NEXTOP(PREG, yxn),Osbpp),l); INITIALIZE_PERMVAR(pt1,d0); ENDP(pt1); @@ -13227,36 +13227,36 @@ Yap_absmi(int inp) Op(p_func2f_xx, xxx); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.xxx.x); + HR[0] = XREG(PREG->y_u.xxx.x); RESET_VARIABLE(HR+1); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.xxx.x); + d0 = XREG(PREG->y_u.xxx.x); deref_head(d0, func2f_xx_unk); func2f_xx_nvar: if (IsApplTerm(d0)) { Functor d1 = FunctorOfTerm(d0); if (IsExtensionFunctor(d1)) { - XREG(PREG->u.xxx.x1) = d0; - XREG(PREG->u.xxx.x2) = MkIntTerm(0); + XREG(PREG->y_u.xxx.x1) = d0; + XREG(PREG->y_u.xxx.x2) = MkIntTerm(0); PREG = NEXTOP(PREG, xxx); GONext(); } - XREG(PREG->u.xxx.x1) = MkAtomTerm(NameOfFunctor(d1)); - XREG(PREG->u.xxx.x2) = MkIntegerTerm(ArityOfFunctor(d1)); + XREG(PREG->y_u.xxx.x1) = MkAtomTerm(NameOfFunctor(d1)); + XREG(PREG->y_u.xxx.x2) = MkIntegerTerm(ArityOfFunctor(d1)); PREG = NEXTOP(PREG, xxx); GONext(); } else if (IsPairTerm(d0)) { - XREG(PREG->u.xxx.x1) = TermDot; - XREG(PREG->u.xxx.x2) = MkIntTerm(2); + XREG(PREG->y_u.xxx.x1) = TermDot; + XREG(PREG->y_u.xxx.x2) = MkIntTerm(2); PREG = NEXTOP(PREG, xxx); GONext(); } else { - XREG(PREG->u.xxx.x1) = d0; - XREG(PREG->u.xxx.x2) = MkIntTerm(0); + XREG(PREG->y_u.xxx.x1) = d0; + XREG(PREG->y_u.xxx.x2) = MkIntTerm(0); PREG = NEXTOP(PREG, xxx); GONext(); } @@ -13275,38 +13275,38 @@ Yap_absmi(int inp) Op(p_func2f_xy, xxy); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.xxy.x); + HR[0] = XREG(PREG->y_u.xxy.x); RESET_VARIABLE(HR+1); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.xxy.x); + d0 = XREG(PREG->y_u.xxy.x); deref_head(d0, func2f_xy_unk); func2f_xy_nvar: if (IsApplTerm(d0)) { Functor d1 = FunctorOfTerm(d0); - CELL *pt0 = YREG+PREG->u.xxy.y2; + CELL *pt0 = YREG+PREG->y_u.xxy.y2; if (IsExtensionFunctor(d1)) { - XREG(PREG->u.xxy.x1) = d0; + XREG(PREG->y_u.xxy.x1) = d0; PREG = NEXTOP(PREG, xxy); INITIALIZE_PERMVAR(pt0, MkIntTerm(0)); GONext(); } - XREG(PREG->u.xxy.x1) = MkAtomTerm(NameOfFunctor(d1)); + XREG(PREG->y_u.xxy.x1) = MkAtomTerm(NameOfFunctor(d1)); PREG = NEXTOP(PREG, xxy); INITIALIZE_PERMVAR(pt0, MkIntegerTerm(ArityOfFunctor(d1))); GONext(); } else if (IsPairTerm(d0)) { - CELL *pt0 = YREG+PREG->u.xxy.y2; - XREG(PREG->u.xxy.x1) = TermDot; + CELL *pt0 = YREG+PREG->y_u.xxy.y2; + XREG(PREG->y_u.xxy.x1) = TermDot; PREG = NEXTOP(PREG, xxy); INITIALIZE_PERMVAR(pt0, MkIntTerm(2)); GONext(); } else { - CELL *pt0 = YREG+PREG->u.xxy.y2; - XREG(PREG->u.xxy.x1) = d0; + CELL *pt0 = YREG+PREG->y_u.xxy.y2; + XREG(PREG->y_u.xxy.x1) = d0; PREG = NEXTOP(PREG, xxy); INITIALIZE_PERMVAR(pt0, MkIntTerm(0)); GONext(); @@ -13326,38 +13326,38 @@ Yap_absmi(int inp) Op(p_func2f_yx, yxx); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.yxx.x2); + HR[0] = XREG(PREG->y_u.yxx.x2); RESET_VARIABLE(HR+1); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.yxx.x2); + d0 = XREG(PREG->y_u.yxx.x2); deref_head(d0, func2f_yx_unk); func2f_yx_nvar: if (IsApplTerm(d0)) { Functor d1 = FunctorOfTerm(d0); - CELL *pt0 = YREG+PREG->u.yxx.y; + CELL *pt0 = YREG+PREG->y_u.yxx.y; if (IsExtensionFunctor(d1)) { - XREG(PREG->u.yxx.x1) = MkIntTerm(0); + XREG(PREG->y_u.yxx.x1) = MkIntTerm(0); PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0, d0); GONext(); } - XREG(PREG->u.yxx.x1) = MkIntegerTerm(ArityOfFunctor(d1)); + XREG(PREG->y_u.yxx.x1) = MkIntegerTerm(ArityOfFunctor(d1)); PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0, MkAtomTerm(NameOfFunctor(d1))); GONext(); } else if (IsPairTerm(d0)) { - CELL *pt0 = YREG+PREG->u.yxx.y; - XREG(PREG->u.yxx.x1) = MkIntTerm(2); + CELL *pt0 = YREG+PREG->y_u.yxx.y; + XREG(PREG->y_u.yxx.x1) = MkIntTerm(2); PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0 ,TermDot); GONext(); } else { - CELL *pt0 = YREG+PREG->u.yxx.y; - XREG(PREG->u.yxx.x1) = MkIntTerm(0); + CELL *pt0 = YREG+PREG->y_u.yxx.y; + XREG(PREG->y_u.yxx.x1) = MkIntTerm(0); PREG = NEXTOP(PREG, yxx); INITIALIZE_PERMVAR(pt0, d0); GONext(); @@ -13377,20 +13377,20 @@ Yap_absmi(int inp) Op(p_func2f_yy, yyx); #ifdef LOW_LEVEL_TRACER if (Yap_do_low_level_trace) { - HR[0] = XREG(PREG->u.yyx.x); + HR[0] = XREG(PREG->y_u.yyx.x); RESET_VARIABLE(HR+1); RESET_VARIABLE(HR+2); low_level_trace(enter_pred,RepPredProp(Yap_GetPredPropByFunc(FunctorFunctor,0)),HR); } #endif /* LOW_LEVEL_TRACE */ BEGD(d0); - d0 = XREG(PREG->u.yyx.x); + d0 = XREG(PREG->y_u.yyx.x); deref_head(d0, func2f_yy_unk); func2f_yy_nvar: if (IsApplTerm(d0)) { Functor d1 = FunctorOfTerm(d0); - CELL *pt0 = YREG+PREG->u.yyx.y1; - CELL *pt1 = YREG+PREG->u.yyx.y2; + CELL *pt0 = YREG+PREG->y_u.yyx.y1; + CELL *pt1 = YREG+PREG->y_u.yyx.y2; if (IsExtensionFunctor(d1)) { PREG = NEXTOP(PREG, yyx); INITIALIZE_PERMVAR(pt0, d0); @@ -13402,15 +13402,15 @@ Yap_absmi(int inp) INITIALIZE_PERMVAR(pt1, MkIntegerTerm(ArityOfFunctor(d1))); GONext(); } else if (IsPairTerm(d0)) { - CELL *pt0 = YREG+PREG->u.yyx.y1; - CELL *pt1 = YREG+PREG->u.yyx.y2; + CELL *pt0 = YREG+PREG->y_u.yyx.y1; + CELL *pt1 = YREG+PREG->y_u.yyx.y2; PREG = NEXTOP(PREG, yyx); INITIALIZE_PERMVAR(pt0, TermDot); INITIALIZE_PERMVAR(pt1, MkIntTerm(2)); GONext(); } else { - CELL *pt0 = YREG+PREG->u.yyx.y1; - CELL *pt1 = YREG+PREG->u.yyx.y2; + CELL *pt0 = YREG+PREG->y_u.yyx.y1; + CELL *pt1 = YREG+PREG->y_u.yyx.y2; PREG = NEXTOP(PREG, yyx); INITIALIZE_PERMVAR(pt0, d0); INITIALIZE_PERMVAR(pt1, MkIntTerm(0)); @@ -13637,7 +13637,7 @@ Yap_absmi(int inp) mod = ENV_YREG[-EnvSizeInCells-3]; /* set YREG */ /* Try to preserve the environment */ - ENV_YREG = (CELL *) (((char *) YREG) + PREG->u.Osbmp.s); + ENV_YREG = (CELL *) (((char *) YREG) + PREG->y_u.Osbmp.s); #ifdef FROZEN_STACKS { choiceptr top_b = PROTECT_FROZEN_B(B); @@ -13693,12 +13693,12 @@ Yap_absmi(int inp) BOp(p_execute, Osbmp); /* fetch the module from PREG */ - mod = PREG->u.Osbmp.mod; + mod = PREG->y_u.Osbmp.mod; start_execute: b_ptr = B; /* we have mod, and ARG1 has the goal, let us roll */ /* Try to preserve the environment */ - ENV_YREG = (CELL *) (((char *) YREG) + PREG->u.Osbmp.s); + ENV_YREG = (CELL *) (((char *) YREG) + PREG->y_u.Osbmp.s); #ifdef FROZEN_STACKS { choiceptr top_b = PROTECT_FROZEN_B(B); diff --git a/C/amasm.c b/C/amasm.c index 0a909ee86..eae3a6ac7 100755 --- a/C/amasm.c +++ b/C/amasm.c @@ -283,7 +283,7 @@ static void a_fetch_cv(cmp_op_info *, int, struct intermediates *); static void a_fetch_vc(cmp_op_info *, int, struct intermediates *); static yamop *a_f2(cmp_op_info *, yamop *, int, struct intermediates *); -#define GONEXT(TYPE) code_p = ((yamop *)(&(code_p->u.TYPE.next))) +#define GONEXT(TYPE) code_p = ((yamop *)(&(code_p->y_u.TYPE.next))) inline static yslot emit_y(Ventry *ve) @@ -471,14 +471,14 @@ a_lucl(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip, if (pass_no) { LogUpdIndex *lcl = (LogUpdIndex *)cip->code_addr; code_p->opc = emit_op(opcode); - code_p->u.Illss.I = lcl; + code_p->y_u.Illss.I = lcl; cip->cpc->rnd4 = (CELL)code_p; - cip->current_try_lab = &code_p->u.Illss.l1; - cip->current_trust_lab = &code_p->u.Illss.l2; - code_p->u.Illss.l1 = NULL; - code_p->u.Illss.l2 = NULL; - code_p->u.Illss.s = cip->cpc->rnd3; - code_p->u.Illss.e = 0; + cip->current_try_lab = &code_p->y_u.Illss.l1; + cip->current_trust_lab = &code_p->y_u.Illss.l2; + code_p->y_u.Illss.l1 = NULL; + code_p->y_u.Illss.l2 = NULL; + code_p->y_u.Illss.s = cip->cpc->rnd3; + code_p->y_u.Illss.e = 0; } GONEXT(Illss); return code_p; @@ -491,7 +491,7 @@ a_cle(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) LogUpdClause *cl = (LogUpdClause *)cip->code_addr; code_p->opc = emit_op(opcode); - code_p->u.L.ClBase = cl; + code_p->y_u.L.ClBase = cl; cl->ClExt = code_p; cl->ClFlags |= LogUpdRuleMask; } @@ -515,7 +515,7 @@ a_p0(op_numbers opcode, yamop *code_p, int pass_no, PredEntry *p0) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.p.p = p0; + code_p->y_u.p.p = p0; } GONEXT(p); return code_p; @@ -526,8 +526,8 @@ a_lp(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.lp.p = (PredEntry *)cip->cpc->rnd1; - code_p->u.lp.l = (yamop *)cip->cpc->rnd2; + code_p->y_u.lp.p = (PredEntry *)cip->cpc->rnd1; + code_p->y_u.lp.l = (yamop *)cip->cpc->rnd2; } GONEXT(lp); return code_p; @@ -538,7 +538,7 @@ a_ue(op_numbers opcode, op_numbers opcodew, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.o.opcw = emit_op(opcodew); + code_p->y_u.o.opcw = emit_op(opcodew); } GONEXT(o); return code_p; @@ -565,14 +565,14 @@ a_v(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct P if (is_y_var) { if (pass_no) { code_p->opc = emit_op(opcodey); - code_p->u.y.y = emit_yreg(var_offset); + code_p->y_u.y.y = emit_yreg(var_offset); } GONEXT(y); } else { if (pass_no) { code_p->opc = emit_op(opcodex); - code_p->u.x.x = emit_xreg(var_offset); + code_p->y_u.x.x = emit_xreg(var_offset); } GONEXT(x); } @@ -590,18 +590,18 @@ a_vp(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct if (is_y_var) { if (pass_no) { code_p->opc = emit_op(opcodey); - code_p->u.yps.y = emit_yreg(var_offset); - code_p->u.yps.p0 = clinfo->CurrentPred; - code_p->u.yps.s = -Signed(RealEnvSize) - CELLSIZE * cpc->rnd2; + code_p->y_u.yps.y = emit_yreg(var_offset); + code_p->y_u.yps.p0 = clinfo->CurrentPred; + code_p->y_u.yps.s = -Signed(RealEnvSize) - CELLSIZE * cpc->rnd2; } GONEXT(yps); } else { if (pass_no) { code_p->opc = emit_op(opcodex); - code_p->u.xps.x = emit_xreg(var_offset); - code_p->u.xps.p0 = clinfo->CurrentPred; - code_p->u.xps.s = -Signed(RealEnvSize) - CELLSIZE * cpc->rnd2; + code_p->y_u.xps.x = emit_xreg(var_offset); + code_p->y_u.xps.p0 = clinfo->CurrentPred; + code_p->y_u.xps.s = -Signed(RealEnvSize) - CELLSIZE * cpc->rnd2; } GONEXT(xps); } @@ -618,16 +618,16 @@ a_uv(Ventry *ve, op_numbers opcodex, op_numbers opcodexw, op_numbers opcodey, op if (is_y_var) { if (pass_no) { code_p->opc = emit_op(opcodey); - code_p->u.oy.opcw = emit_op(opcodeyw); - code_p->u.oy.y = emit_yreg(var_offset); + code_p->y_u.oy.opcw = emit_op(opcodeyw); + code_p->y_u.oy.y = emit_yreg(var_offset); } GONEXT(oy); } else { if (pass_no) { code_p->opc = emit_op(opcodex); - code_p->u.ox.opcw = emit_op(opcodexw); - code_p->u.ox.x = emit_xreg(var_offset); + code_p->y_u.ox.opcw = emit_op(opcodexw); + code_p->y_u.ox.x = emit_xreg(var_offset); } GONEXT(ox); } @@ -643,8 +643,8 @@ a_vv(op_numbers opcode, op_numbers opcodew, yamop *code_p, int pass_no, struct i if (pass_no) { OPREG var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(opcode); - code_p->u.oxx.opcw = emit_op(opcodew); - code_p->u.oxx.xl = emit_xreg(var_offset); + code_p->y_u.oxx.opcw = emit_op(opcodew); + code_p->y_u.oxx.xl = emit_xreg(var_offset); } cip->cpc = cip->cpc->nextInst; if (pass_no) { @@ -654,7 +654,7 @@ a_vv(op_numbers opcode, op_numbers opcodew, yamop *code_p, int pass_no, struct i ve = (Ventry *) cip->cpc->rnd1; is_y_var = (ve->KindOfVE == PermVar); var_offset = Var_Ref(ve, is_y_var); - code_p->u.oxx.xr = emit_xreg(var_offset); + code_p->y_u.oxx.xr = emit_xreg(var_offset); } GONEXT(oxx); return code_p; @@ -680,11 +680,11 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(_put_y_vals); - code_p->u.yyxx.y1 = emit_yreg(var_offset); - code_p->u.yyxx.x1 = emit_x(cpc->rnd2); + code_p->y_u.yyxx.y1 = emit_yreg(var_offset); + code_p->y_u.yyxx.x1 = emit_x(cpc->rnd2); var_offset2 = Var_Ref(ve2, is_y_var); - code_p->u.yyxx.y2 = emit_yreg(var_offset2); - code_p->u.yyxx.x2 = emit_x(ncpc->rnd2); + code_p->y_u.yyxx.y2 = emit_yreg(var_offset2); + code_p->y_u.yyxx.x2 = emit_x(ncpc->rnd2); } cip->cpc = ncpc; GONEXT(yyxx); @@ -702,8 +702,8 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct code_p->opc = emit_op(_put_y_var); var_offset = Var_Ref(ve, is_y_var); var_offset2 = Var_Ref(ve2, !is_y_var); - code_p->u.yx.x = emit_xreg(var_offset2); - code_p->u.yx.y = emit_yreg(var_offset); + code_p->y_u.yx.x = emit_xreg(var_offset2); + code_p->y_u.yx.y = emit_yreg(var_offset); } cip->cpc = ncpc; GONEXT(yx); @@ -721,11 +721,11 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(_get_yy_var); - code_p->u.yyxx.y1 = emit_yreg(var_offset); - code_p->u.yyxx.x1 = emit_x(cpc->rnd2); + code_p->y_u.yyxx.y1 = emit_yreg(var_offset); + code_p->y_u.yyxx.x1 = emit_x(cpc->rnd2); var_offset2 = Var_Ref(ve2, is_y_var); - code_p->u.yyxx.y2 = emit_yreg(var_offset2); - code_p->u.yyxx.x2 = emit_x(ncpc->rnd2); + code_p->y_u.yyxx.y2 = emit_yreg(var_offset2); + code_p->y_u.yyxx.x2 = emit_x(ncpc->rnd2); } cip->cpc = ncpc; GONEXT(yyxx); @@ -736,8 +736,8 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct OPREG var_offset; var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(opcodey); - code_p->u.yx.y = emit_yreg(var_offset); - code_p->u.yx.x = emit_x(cpc->rnd2); + code_p->y_u.yx.y = emit_yreg(var_offset); + code_p->y_u.yx.x = emit_x(cpc->rnd2); } GONEXT(yx); return code_p; @@ -755,11 +755,11 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(_put_xx_val); - code_p->u.xxxx.xl1 = emit_xreg(var_offset); - code_p->u.xxxx.xr1 = emit_x(cpc->rnd2); + code_p->y_u.xxxx.xl1 = emit_xreg(var_offset); + code_p->y_u.xxxx.xr1 = emit_x(cpc->rnd2); var_offset2 = Var_Ref(ve2, is_y_var); - code_p->u.xxxx.xl2 = emit_xreg(var_offset2); - code_p->u.xxxx.xr2 = emit_x(ncpc->rnd2); + code_p->y_u.xxxx.xl2 = emit_xreg(var_offset2); + code_p->y_u.xxxx.xr2 = emit_x(ncpc->rnd2); } cip->cpc = ncpc; GONEXT(xxxx); @@ -787,8 +787,8 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct code_p->opc = emit_op(_get_y_var); else code_p->opc = emit_op(_get_y_val); - code_p->u.yx.x = emit_xreg(var_offset); - code_p->u.yx.y = emit_yreg(var_offset2); + code_p->y_u.yx.x = emit_xreg(var_offset); + code_p->y_u.yx.y = emit_yreg(var_offset2); } GONEXT(yx); cip->cpc = ncpc; @@ -797,8 +797,8 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct if (pass_no) { var_offset = Var_Ref(ve, is_y_var); var_offset2 = Var_Ref(ve2, is_y_var2); - code_p->u.xx.xl = emit_xreg(var_offset); - code_p->u.xx.xr = emit_xreg(var_offset2); + code_p->y_u.xx.xl = emit_xreg(var_offset); + code_p->y_u.xx.xr = emit_xreg(var_offset2); if (ncpc->op == get_var_op) code_p->opc = emit_op(_put_x_val); else { @@ -817,13 +817,13 @@ a_vr(op_numbers opcodex, op_numbers opcodey, yamop *code_p, int pass_no, struct var_offset = Var_Ref(ve, is_y_var); code_p->opc = emit_op(opcodex); - code_p->u.xx.xl = emit_xreg(var_offset); - code_p->u.xx.xr = emit_x(cpc->rnd2); + code_p->y_u.xx.xl = emit_xreg(var_offset); + code_p->y_u.xx.xr = emit_x(cpc->rnd2); /* a small trick, usualy the lower argument is the one bound */ - if (opcodex == _get_x_val && code_p->u.xx.xl > code_p->u.xx.xr) { - wamreg x1 = code_p->u.xx.xl; - code_p->u.xx.xl = code_p->u.xx.xr; - code_p->u.xx.xr = x1; + if (opcodex == _get_x_val && code_p->y_u.xx.xl > code_p->y_u.xx.xr) { + wamreg x1 = code_p->y_u.xx.xl; + code_p->y_u.xx.xl = code_p->y_u.xx.xr; + code_p->y_u.xx.xr = x1; } } GONEXT(xx); @@ -839,16 +839,16 @@ a_rv(op_numbers opcodex, op_numbers opcodey, OPREG var_offset, yamop *code_p, in if (is_y_var) { if (pass_no) { code_p->opc = emit_op(opcodey); - code_p->u.yx.x = emit_x(cpc->rnd2); - code_p->u.yx.y = emit_yreg(var_offset); + code_p->y_u.yx.x = emit_x(cpc->rnd2); + code_p->y_u.yx.y = emit_yreg(var_offset); } GONEXT(yx); } else { if (pass_no) { code_p->opc = emit_op(opcodex); - code_p->u.xx.xl = emit_x(cpc->rnd2); - code_p->u.xx.xr = emit_xreg(var_offset); + code_p->y_u.xx.xl = emit_x(cpc->rnd2); + code_p->y_u.xx.xr = emit_xreg(var_offset); } GONEXT(xx); } @@ -870,18 +870,18 @@ a_vsf(int opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) if (is_y_var) { if (pass_no) { code_p->opc = emit_op((op_numbers)((int)opcode + is_y_var)); - code_p->u.fy.f = emit_f(cpc->rnd2); - code_p->u.fy.a = ArityOfFunctor(emit_f(cpc->rnd2)); - code_p->u.fy.y = emit_yreg(var_offset); + code_p->y_u.fy.f = emit_f(cpc->rnd2); + code_p->y_u.fy.a = ArityOfFunctor(emit_f(cpc->rnd2)); + code_p->y_u.fy.y = emit_yreg(var_offset); } GONEXT(fy); } else { if (pass_no) { code_p->opc = emit_op((op_numbers)((int)opcode + is_y_var)); - code_p->u.fx.f = emit_f(cpc->rnd2); - code_p->u.fx.a = ArityOfFunctor(emit_f(cpc->rnd2)); - code_p->u.fx.x = emit_xreg(var_offset); + code_p->y_u.fx.f = emit_f(cpc->rnd2); + code_p->y_u.fx.a = ArityOfFunctor(emit_f(cpc->rnd2)); + code_p->y_u.fx.x = emit_xreg(var_offset); } GONEXT(fx); } @@ -893,9 +893,9 @@ a_asf(int opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op((op_numbers)((int)opcode + is_y_var)); - code_p->u.fn.f = emit_f(cpc->rnd2); - code_p->u.fn.a = ArityOfFunctor(emit_f(cpc->rnd2)); - code_p->u.fn.n = emit_count(cpc->rnd1); + code_p->y_u.fn.f = emit_f(cpc->rnd2); + code_p->y_u.fn.a = ArityOfFunctor(emit_f(cpc->rnd2)); + code_p->y_u.fn.n = emit_count(cpc->rnd1); } GONEXT(fn); return code_p; @@ -918,7 +918,7 @@ a_n(op_numbers opcode, int count, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.s.s = count; + code_p->y_u.s.s = count; } GONEXT(s); return code_p; @@ -930,8 +930,8 @@ a_eam(op_numbers opcode, int pred, long cl, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.os.opcw = cl; - code_p->u.os.s = pred; + code_p->y_u.os.opcw = cl; + code_p->y_u.os.s = pred; } GONEXT(os); return code_p; @@ -943,8 +943,8 @@ a_un(op_numbers opcode, op_numbers opcodew, int count, yamop *code_p, int pass_n { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.os.opcw = emit_op(opcodew); - code_p->u.os.s = count; + code_p->y_u.os.opcw = emit_op(opcodew); + code_p->y_u.os.s = count; } GONEXT(os); return code_p; @@ -957,8 +957,8 @@ a_f(CELL rnd1, op_numbers opcode, yamop *code_p, int pass_no) Functor f = emit_f(rnd1); code_p->opc = emit_op(opcode); - code_p->u.fa.f = f; - code_p->u.fa.a = ArityOfFunctor(f); + code_p->y_u.fa.f = f; + code_p->y_u.fa.a = ArityOfFunctor(f); } GONEXT(fa); return code_p; @@ -971,9 +971,9 @@ a_uf(CELL rnd1, op_numbers opcode, op_numbers opcodew, yamop *code_p, int pass_n Functor f = emit_f(rnd1); code_p->opc = emit_op(opcode); - code_p->u.ofa.opcw = emit_op(opcodew); - code_p->u.ofa.f = f; - code_p->u.ofa.a = ArityOfFunctor(f); + code_p->y_u.ofa.opcw = emit_op(opcodew); + code_p->y_u.ofa.f = f; + code_p->y_u.ofa.a = ArityOfFunctor(f); } GONEXT(ofa); return code_p; @@ -984,7 +984,7 @@ a_c(CELL rnd1, op_numbers opcode, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.c.c = emit_c(rnd1); + code_p->y_u.c.c = emit_c(rnd1); } GONEXT(c); return code_p; @@ -995,8 +995,8 @@ a_uc(CELL rnd1, op_numbers opcode, op_numbers opcode_w, yamop *code_p, int pass_ { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.oc.opcw = emit_op(opcode_w); - code_p->u.oc.c = emit_c(rnd1); + code_p->y_u.oc.opcw = emit_op(opcode_w); + code_p->y_u.oc.c = emit_c(rnd1); } GONEXT(oc); return code_p; @@ -1007,7 +1007,7 @@ a_wblob(CELL rnd1, op_numbers opcode, int *clause_has_blobsp, yamop *code_p, int { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.N.b = + code_p->y_u.N.b = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[rnd1])); } *clause_has_blobsp = TRUE; @@ -1021,10 +1021,10 @@ a_ensure_space(op_numbers opcode, yamop *code_p, int pass_no, struct intermediat if (cip->cpc->rnd1 > 4096) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.Osbpa.i = sizeof(CELL) * cip->cpc->rnd1; - code_p->u.Osbpa.p = clinfo->CurrentPred; - code_p->u.Osbpa.bmap = NULL; - code_p->u.Osbpa.s = emit_count(-Signed(RealEnvSize)); + code_p->y_u.Osbpa.i = sizeof(CELL) * cip->cpc->rnd1; + code_p->y_u.Osbpa.p = clinfo->CurrentPred; + code_p->y_u.Osbpa.bmap = NULL; + code_p->y_u.Osbpa.s = emit_count(-Signed(RealEnvSize)); } GONEXT(Osbpa); } @@ -1037,7 +1037,7 @@ a_wdbt(CELL rnd1, op_numbers opcode, int *clause_has_dbtermp, yamop *code_p, int { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.D.D = rnd1; + code_p->y_u.D.D = rnd1; add_to_dbtermsl(cip, cip->cpc->rnd1); } *clause_has_dbtermp = TRUE; @@ -1050,8 +1050,8 @@ a_ublob(CELL rnd1, op_numbers opcode, op_numbers opcode_w, int *clause_has_blobs { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.oN.opcw = emit_op(opcode_w); - code_p->u.oN.b = + code_p->y_u.oN.opcw = emit_op(opcode_w); + code_p->y_u.oN.b = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[rnd1])); } @@ -1066,8 +1066,8 @@ a_ustring(CELL rnd1, op_numbers opcode, op_numbers opcode_w, int *clause_has_blo { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.ou.opcw = emit_op(opcode_w); - code_p->u.ou.ut = + code_p->y_u.ou.opcw = emit_op(opcode_w); + code_p->y_u.ou.ut = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[rnd1])); } *clause_has_blobsp = TRUE; @@ -1080,8 +1080,8 @@ a_udbt(CELL rnd1, op_numbers opcode, op_numbers opcode_w, int *clause_has_dbterm { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.oD.opcw = emit_op(opcode_w); - code_p->u.oD.D = cip->cpc->rnd1; + code_p->y_u.oD.opcw = emit_op(opcode_w); + code_p->y_u.oD.D = cip->cpc->rnd1; add_to_dbtermsl(cip, cip->cpc->rnd1); } *clause_has_dbtermp = TRUE; @@ -1094,11 +1094,11 @@ a_ud(op_numbers opcode, op_numbers opcode_w, yamop *code_p, int pass_no, struct { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.od.opcw = emit_op(opcode_w); - code_p->u.od.d[0] = (CELL)FunctorDouble; - code_p->u.od.d[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.od.opcw = emit_op(opcode_w); + code_p->y_u.od.d[0] = (CELL)FunctorDouble; + code_p->y_u.od.d[1] = RepAppl(cpc->rnd1)[1]; #if SIZEOF_DOUBLE == 2*SIZEOF_INT_P - code_p->u.od.d[2] = RepAppl(cpc->rnd1)[2]; + code_p->y_u.od.d[2] = RepAppl(cpc->rnd1)[2]; #endif } GONEXT(od); @@ -1110,9 +1110,9 @@ a_ui(op_numbers opcode, op_numbers opcode_w, yamop *code_p, int pass_no, struct { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.oi.opcw = emit_op(opcode_w); - code_p->u.oi.i[0] = (CELL)FunctorLongInt; - code_p->u.oi.i[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.oi.opcw = emit_op(opcode_w); + code_p->y_u.oi.i[0] = (CELL)FunctorLongInt; + code_p->y_u.oi.i[1] = RepAppl(cpc->rnd1)[1]; } GONEXT(oi); return code_p; @@ -1123,10 +1123,10 @@ a_wd(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.d.d[0] = (CELL)FunctorDouble; - code_p->u.d.d[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.d.d[0] = (CELL)FunctorDouble; + code_p->y_u.d.d[1] = RepAppl(cpc->rnd1)[1]; #if SIZEOF_DOUBLE == 2*SIZEOF_INT_P - code_p->u.d.d[2] = RepAppl(cpc->rnd1)[2]; + code_p->y_u.d.d[2] = RepAppl(cpc->rnd1)[2]; #endif } GONEXT(d); @@ -1138,8 +1138,8 @@ a_wi(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.i.i[0] = (CELL)FunctorLongInt; - code_p->u.i.i[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.i.i[0] = (CELL)FunctorLongInt; + code_p->y_u.i.i[1] = RepAppl(cpc->rnd1)[1]; } GONEXT(i); return code_p; @@ -1150,8 +1150,8 @@ a_nc(CELL rnd1, op_numbers opcode, int i, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.sc.s = i; - code_p->u.sc.c = emit_c(rnd1); + code_p->y_u.sc.s = i; + code_p->y_u.sc.c = emit_c(rnd1); } GONEXT(sc); return code_p; @@ -1162,9 +1162,9 @@ a_unc(CELL rnd1, op_numbers opcode, op_numbers opcodew, int i, yamop *code_p, in { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.osc.opcw = emit_op(opcodew); - code_p->u.osc.s = i; - code_p->u.osc.c = emit_c(rnd1); + code_p->y_u.osc.opcw = emit_op(opcodew); + code_p->y_u.osc.s = i; + code_p->y_u.osc.c = emit_c(rnd1); } GONEXT(osc); return code_p; @@ -1175,9 +1175,9 @@ a_rf(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xfa.x = emit_x(cpc->rnd2); - code_p->u.xfa.f = emit_f(cpc->rnd1); - code_p->u.xfa.a = ArityOfFunctor(emit_f(cpc->rnd1)); + code_p->y_u.xfa.x = emit_x(cpc->rnd2); + code_p->y_u.xfa.f = emit_f(cpc->rnd1); + code_p->y_u.xfa.a = ArityOfFunctor(emit_f(cpc->rnd1)); } GONEXT(xfa); return code_p; @@ -1188,11 +1188,11 @@ a_rd(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xd.x = emit_x(cpc->rnd2); - code_p->u.xd.d[0] = (CELL)FunctorDouble; - code_p->u.xd.d[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.xd.x = emit_x(cpc->rnd2); + code_p->y_u.xd.d[0] = (CELL)FunctorDouble; + code_p->y_u.xd.d[1] = RepAppl(cpc->rnd1)[1]; #if SIZEOF_DOUBLE == 2*SIZEOF_INT_P - code_p->u.xd.d[2] = RepAppl(cpc->rnd1)[2]; + code_p->y_u.xd.d[2] = RepAppl(cpc->rnd1)[2]; #endif } GONEXT(xd); @@ -1204,9 +1204,9 @@ a_ri(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xi.x = emit_x(cpc->rnd2); - code_p->u.xi.i[0] = (CELL)FunctorLongInt; - code_p->u.xi.i[1] = RepAppl(cpc->rnd1)[1]; + code_p->y_u.xi.x = emit_x(cpc->rnd2); + code_p->y_u.xi.i[0] = (CELL)FunctorLongInt; + code_p->y_u.xi.i[1] = RepAppl(cpc->rnd1)[1]; } GONEXT(xi); return code_p; @@ -1239,23 +1239,23 @@ a_rc(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) s3next->nextInst->op == get_num_op)) { if (pass_no) { code_p->opc = emit_op(_get_6atoms); - code_p->u.cccccc.c1 = emit_c(cip->cpc->rnd1); - code_p->u.cccccc.c2 = emit_c(next->rnd1); - code_p->u.cccccc.c3 = emit_c(snext->rnd1); - code_p->u.cccccc.c4 = emit_c(s2next->rnd1); - code_p->u.cccccc.c5 = emit_c(s3next->rnd1); - code_p->u.cccccc.c6 = emit_c(s3next->nextInst->rnd1); + code_p->y_u.cccccc.c1 = emit_c(cip->cpc->rnd1); + code_p->y_u.cccccc.c2 = emit_c(next->rnd1); + code_p->y_u.cccccc.c3 = emit_c(snext->rnd1); + code_p->y_u.cccccc.c4 = emit_c(s2next->rnd1); + code_p->y_u.cccccc.c5 = emit_c(s3next->rnd1); + code_p->y_u.cccccc.c6 = emit_c(s3next->nextInst->rnd1); } cip->cpc = s3next->nextInst; GONEXT(cccccc); } else { if (pass_no) { code_p->opc = emit_op(_get_5atoms); - code_p->u.ccccc.c1 = emit_c(cip->cpc->rnd1); - code_p->u.ccccc.c2 = emit_c(next->rnd1); - code_p->u.ccccc.c3 = emit_c(snext->rnd1); - code_p->u.ccccc.c4 = emit_c(s2next->rnd1); - code_p->u.ccccc.c5 = emit_c(s3next->rnd1); + code_p->y_u.ccccc.c1 = emit_c(cip->cpc->rnd1); + code_p->y_u.ccccc.c2 = emit_c(next->rnd1); + code_p->y_u.ccccc.c3 = emit_c(snext->rnd1); + code_p->y_u.ccccc.c4 = emit_c(s2next->rnd1); + code_p->y_u.ccccc.c5 = emit_c(s3next->rnd1); } cip->cpc = s3next; GONEXT(ccccc); @@ -1263,10 +1263,10 @@ a_rc(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) } else { if (pass_no) { code_p->opc = emit_op(_get_4atoms); - code_p->u.cccc.c1 = emit_c(cip->cpc->rnd1); - code_p->u.cccc.c2 = emit_c(next->rnd1); - code_p->u.cccc.c3 = emit_c(snext->rnd1); - code_p->u.cccc.c4 = emit_c(s2next->rnd1); + code_p->y_u.cccc.c1 = emit_c(cip->cpc->rnd1); + code_p->y_u.cccc.c2 = emit_c(next->rnd1); + code_p->y_u.cccc.c3 = emit_c(snext->rnd1); + code_p->y_u.cccc.c4 = emit_c(s2next->rnd1); } cip->cpc = s2next; GONEXT(cccc); @@ -1274,9 +1274,9 @@ a_rc(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) } else { if (pass_no) { code_p->opc = emit_op(_get_3atoms); - code_p->u.ccc.c1 = emit_c(cip->cpc->rnd1); - code_p->u.ccc.c2 = emit_c(next->rnd1); - code_p->u.ccc.c3 = emit_c(snext->rnd1); + code_p->y_u.ccc.c1 = emit_c(cip->cpc->rnd1); + code_p->y_u.ccc.c2 = emit_c(next->rnd1); + code_p->y_u.ccc.c3 = emit_c(snext->rnd1); } cip->cpc = snext; GONEXT(ccc); @@ -1284,8 +1284,8 @@ a_rc(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) } else { if (pass_no) { code_p->opc = emit_op(_get_2atoms); - code_p->u.cc.c1 = emit_c(cip->cpc->rnd1); - code_p->u.cc.c2 = emit_c(next->rnd1); + code_p->y_u.cc.c1 = emit_c(cip->cpc->rnd1); + code_p->y_u.cc.c2 = emit_c(next->rnd1); } cip->cpc = next; GONEXT(cc); @@ -1293,8 +1293,8 @@ a_rc(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) } else { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xc.x = emit_x(cip->cpc->rnd2); - code_p->u.xc.c = emit_c(cip->cpc->rnd1); + code_p->y_u.xc.x = emit_x(cip->cpc->rnd2); + code_p->y_u.xc.c = emit_c(cip->cpc->rnd1); } GONEXT(xc); } @@ -1307,8 +1307,8 @@ a_rb(op_numbers opcode, int *clause_has_blobsp, yamop *code_p, int pass_no, stru { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xN.x = emit_x(cip->cpc->rnd2); - code_p->u.xN.b = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1])); + code_p->y_u.xN.x = emit_x(cip->cpc->rnd2); + code_p->y_u.xN.b = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1])); } *clause_has_blobsp = TRUE; GONEXT(xN); @@ -1320,8 +1320,8 @@ a_rstring(op_numbers opcode, int *clause_has_blobsp, yamop *code_p, int pass_no, { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xu.x = emit_x(cip->cpc->rnd2); - code_p->u.xu.ut = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1])); + code_p->y_u.xu.x = emit_x(cip->cpc->rnd2); + code_p->y_u.xu.ut = AbsAppl((CELL *)(Unsigned(cip->code_addr) + cip->label_offset[cip->cpc->rnd1])); } *clause_has_blobsp = TRUE; GONEXT(xu); @@ -1333,8 +1333,8 @@ a_dbt(op_numbers opcode, int *clause_has_dbtermp, yamop *code_p, int pass_no, st { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xD.x = emit_x(cip->cpc->rnd2); - code_p->u.xD.D = cip->cpc->rnd1; + code_p->y_u.xD.x = emit_x(cip->cpc->rnd2); + code_p->y_u.xD.D = cip->cpc->rnd1; add_to_dbtermsl(cip, cip->cpc->rnd1); } *clause_has_dbtermp = TRUE; @@ -1347,7 +1347,7 @@ a_r(CELL arnd2, op_numbers opcode, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.x.x = emit_x(arnd2); + code_p->y_u.x.x = emit_x(arnd2); } GONEXT(x); return code_p; @@ -1370,7 +1370,7 @@ a_l(CELL rnd1, op_numbers opcode, yamop *code_p, int pass_no, struct intermediat { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.l.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[rnd1]); + code_p->y_u.l.l = emit_a(Unsigned(cip->code_addr) + cip->label_offset[rnd1]); } GONEXT(l); return code_p; @@ -1381,7 +1381,7 @@ a_il(CELL rnd1, op_numbers opcode, yamop *code_p, int pass_no, struct intermedia { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.l.l = emit_ilabel(rnd1, cip); + code_p->y_u.l.l = emit_ilabel(rnd1, cip); } GONEXT(l); return code_p; @@ -1442,21 +1442,21 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i siglongjmp(cip->CompilerBotch, 1); } else code_p->opc = emit_op(_call_c_wfail); - code_p->u.slp.s = + code_p->y_u.slp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * cip->cpc->rnd2); - code_p->u.slp.l = emit_fail(cip); - code_p->u.slp.p = + code_p->y_u.slp.l = emit_fail(cip); + code_p->y_u.slp.p = emit_pe(RepPredProp(fe)); } GONEXT(slp); } else { if (pass_no) { - code_p->u.Osbpp.p = RepPredProp(fe); + code_p->y_u.Osbpp.p = RepPredProp(fe); if (Flags & UserCPredFlag) { code_p->opc = emit_op(_call_usercpred); } else { if (RepPredProp(fe)->FunctorOfPred == FunctorExecuteInMod) { - code_p->u.Osbmp.mod = cip->cpc->rnd4; + code_p->y_u.Osbmp.mod = cip->cpc->rnd4; code_p->opc = emit_op(_p_execute); } else if (RepPredProp(fe)->FunctorOfPred == FunctorExecute2InMod) { code_p->opc = emit_op(_p_execute2); @@ -1464,14 +1464,14 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i code_p->opc = emit_op(_call_cpred); } } - code_p->u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE + code_p->y_u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * (cip->cpc->rnd2)); - code_p->u.Osbpp.p0 = clinfo->CurrentPred; + code_p->y_u.Osbpp.p0 = clinfo->CurrentPred; if (cip->cpc->rnd2) { - code_p->u.Osbpp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); + code_p->y_u.Osbpp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); } else { /* there is no bitmap as there are no variables in the environment */ - code_p->u.Osbpp.bmap = NULL; + code_p->y_u.Osbpp.bmap = NULL; } } GONEXT(Osbpp); @@ -1494,15 +1494,15 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i } if (opcode == _call) { if (pass_no) { - code_p->u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * + code_p->y_u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * cip->cpc->rnd2); - code_p->u.Osbpp.p = RepPredProp(fe); - code_p->u.Osbpp.p0 = clinfo->CurrentPred; + code_p->y_u.Osbpp.p = RepPredProp(fe); + code_p->y_u.Osbpp.p0 = clinfo->CurrentPred; if (cip->cpc->rnd2) - code_p->u.Osbpp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); + code_p->y_u.Osbpp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); else /* there is no bitmap as there are no variables in the environment */ - code_p->u.Osbpp.bmap = NULL; + code_p->y_u.Osbpp.bmap = NULL; } GONEXT(Osbpp); } @@ -1512,13 +1512,13 @@ a_p(op_numbers opcode, clause_info *clinfo, yamop *code_p, int pass_no, struct i if (Flags & CPredFlag) { code_p->opc = emit_op(_execute_cpred); } - code_p->u.pp.p = RepPredProp(fe); - code_p->u.pp.p0 = clinfo->CurrentPred; + code_p->y_u.pp.p = RepPredProp(fe); + code_p->y_u.pp.p0 = clinfo->CurrentPred; } GONEXT(pp); } else { if (pass_no) - code_p->u.p.p = RepPredProp(fe); + code_p->y_u.p.p = RepPredProp(fe); GONEXT(p); } return code_p; @@ -1543,15 +1543,15 @@ a_empty_call(clause_info *clinfo, yamop *code_p, int pass_no, struct intermedia } if (pass_no) { PredEntry *pe = RepPredProp(Yap_GetPredPropByAtom(AtomTrue,0)); - code_p->u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * + code_p->y_u.Osbpp.s = emit_count(-Signed(RealEnvSize) - CELLSIZE * cip->cpc->rnd2); - code_p->u.Osbpp.p = pe; - code_p->u.Osbpp.p0 = clinfo->CurrentPred; + code_p->y_u.Osbpp.p = pe; + code_p->y_u.Osbpp.p0 = clinfo->CurrentPred; if (cip->cpc->rnd2) - code_p->u.Osbpp.bmap = emit_bmlabel(cip->cpc->rnd1, cip); + code_p->y_u.Osbpp.bmap = emit_bmlabel(cip->cpc->rnd1, cip); else /* there is no bitmap as there are no variables in the environment */ - code_p->u.Osbpp.bmap = NULL; + code_p->y_u.Osbpp.bmap = NULL; } GONEXT(Osbpp); return code_p; @@ -1562,10 +1562,10 @@ a_cnp(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.aFlp.n = 0; - code_p->u.aFlp.native = NULL; - code_p->u.aFlp.native_next = 0; - code_p->u.aFlp.p = cip->CurrentPred; + code_p->y_u.aFlp.n = 0; + code_p->y_u.aFlp.native = NULL; + code_p->y_u.aFlp.native_next = 0; + code_p->y_u.aFlp.p = cip->CurrentPred; } GONEXT(aFlp); return code_p; @@ -1577,7 +1577,7 @@ a_pl(op_numbers opcode, PredEntry *pred, yamop *code_p, int pass_no) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.p.p = pred; + code_p->y_u.p.p = pred; } GONEXT(p); return code_p; @@ -1638,21 +1638,21 @@ a_bfunc(CELL pred, clause_info *clinfo, yamop *code_p, int pass_no, struct inter if (is_y_var) { if (pass_no) { code_p->opc = emit_op(_call_bfunc_yy); - code_p->u.plyys.p = RepPredProp(((Prop)pred)); - code_p->u.plyys.f = emit_fail(cip); - code_p->u.plyys.y1 = v1; - code_p->u.plyys.y2 = emit_yreg(var_offset); - code_p->u.plyys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); + code_p->y_u.plyys.p = RepPredProp(((Prop)pred)); + code_p->y_u.plyys.f = emit_fail(cip); + code_p->y_u.plyys.y1 = v1; + code_p->y_u.plyys.y2 = emit_yreg(var_offset); + code_p->y_u.plyys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); } GONEXT(plyys); } else { if (pass_no) { code_p->opc = emit_op(_call_bfunc_yx); - code_p->u.plxys.p = RepPredProp(((Prop)pred)); - code_p->u.plxys.f = emit_fail(cip); - code_p->u.plxys.x = emit_xreg(var_offset); - code_p->u.plxys.y = v1; - code_p->u.plxys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); + code_p->y_u.plxys.p = RepPredProp(((Prop)pred)); + code_p->y_u.plxys.f = emit_fail(cip); + code_p->y_u.plxys.x = emit_xreg(var_offset); + code_p->y_u.plxys.y = v1; + code_p->y_u.plxys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); } GONEXT(plxys); } @@ -1667,21 +1667,21 @@ a_bfunc(CELL pred, clause_info *clinfo, yamop *code_p, int pass_no, struct inter if (is_y_var) { if (pass_no) { code_p->opc = emit_op(_call_bfunc_xy); - code_p->u.plxys.p = RepPredProp(((Prop)pred)); - code_p->u.plxys.f = emit_fail(cip); - code_p->u.plxys.x = x1; - code_p->u.plxys.y = emit_yreg(var_offset); - code_p->u.plxys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); + code_p->y_u.plxys.p = RepPredProp(((Prop)pred)); + code_p->y_u.plxys.f = emit_fail(cip); + code_p->y_u.plxys.x = x1; + code_p->y_u.plxys.y = emit_yreg(var_offset); + code_p->y_u.plxys.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); } GONEXT(plxys); } else { if (pass_no) { code_p->opc = emit_op(_call_bfunc_xx); - code_p->u.plxxs.p = RepPredProp(((Prop)pred)); - code_p->u.plxxs.f = emit_fail(cip); - code_p->u.plxxs.x1 = x1; - code_p->u.plxxs.x2 = emit_xreg(var_offset); - code_p->u.plxxs.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); + code_p->y_u.plxxs.p = RepPredProp(((Prop)pred)); + code_p->y_u.plxxs.f = emit_fail(cip); + code_p->y_u.plxxs.x1 = x1; + code_p->y_u.plxxs.x2 = emit_xreg(var_offset); + code_p->y_u.plxxs.flags = compile_cmp_flags(RepAtom(NameOfFunctor(RepPredProp(((Prop)pred))->FunctorOfPred))->StrOfAE); } GONEXT(plxxs); } @@ -1694,7 +1694,7 @@ a_igl(CELL rnd1, op_numbers opcode, yamop *code_p, int pass_no, struct intermedi { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.l.l = emit_ilabel(rnd1, cip); + code_p->y_u.l.l = emit_ilabel(rnd1, cip); } GONEXT(l); return code_p; @@ -1705,9 +1705,9 @@ a_xigl(op_numbers opcode, yamop *code_p, int pass_no, struct PSEUDO *cpc) { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xll.x = emit_x(cpc->rnd2); - code_p->u.xll.l1 = emit_a(cpc->rnd1); - code_p->u.xll.l2 = NEXTOP(code_p,xll); + code_p->y_u.xll.x = emit_x(cpc->rnd2); + code_p->y_u.xll.l1 = emit_a(cpc->rnd1); + code_p->y_u.xll.l2 = NEXTOP(code_p,xll); } GONEXT(xll); return code_p; @@ -1769,11 +1769,11 @@ a_4sw(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) CELL *ars = (CELL *)(cip->cpc->nextInst->nextInst->rnd2); code_p->opc = emit_op(_switch_list_nl); seq_ptr = cip->cpc->arnds; - code_p->u.ollll.pop = ((yamop *)(seq_ptr[0]))->opc; - code_p->u.ollll.l1 = emit_ilabel(seq_ptr[0], cip); - code_p->u.ollll.l2 = emit_ilabel(ars[1], cip); - code_p->u.ollll.l3 = emit_ilabel(seq_ptr[2], cip); - code_p->u.ollll.l4 = emit_ilabel(seq_ptr[3], cip); + code_p->y_u.ollll.pop = ((yamop *)(seq_ptr[0]))->opc; + code_p->y_u.ollll.l1 = emit_ilabel(seq_ptr[0], cip); + code_p->y_u.ollll.l2 = emit_ilabel(ars[1], cip); + code_p->y_u.ollll.l3 = emit_ilabel(seq_ptr[2], cip); + code_p->y_u.ollll.l4 = emit_ilabel(seq_ptr[3], cip); if (cip->CurrentPred->PredFlags & LogUpdatePredFlag) { LogUpdIndex *icl = ClauseCodeToLogUpdIndex(ars); @@ -1793,10 +1793,10 @@ a_4sw(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip) if (pass_no) { code_p->opc = emit_op(opcode); seq_ptr = cip->cpc->arnds; - code_p->u.llll.l1 = emit_ilabel(seq_ptr[0], cip); - code_p->u.llll.l2 = emit_ilabel(seq_ptr[1], cip); - code_p->u.llll.l3 = emit_ilabel(seq_ptr[2], cip); - code_p->u.llll.l4 = emit_ilabel(seq_ptr[3], cip); + code_p->y_u.llll.l1 = emit_ilabel(seq_ptr[0], cip); + code_p->y_u.llll.l2 = emit_ilabel(seq_ptr[1], cip); + code_p->y_u.llll.l3 = emit_ilabel(seq_ptr[2], cip); + code_p->y_u.llll.l4 = emit_ilabel(seq_ptr[3], cip); } GONEXT(llll); } @@ -1810,13 +1810,13 @@ a_4sw_x(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.xllll.x = emit_x(cip->cpc->rnd2); + code_p->y_u.xllll.x = emit_x(cip->cpc->rnd2); cip->cpc = cip->cpc->nextInst; seq_ptr = cip->cpc->arnds; - code_p->u.xllll.l1 = emit_ilabel(seq_ptr[0], cip); - code_p->u.xllll.l2 = emit_ilabel(seq_ptr[1], cip); - code_p->u.xllll.l3 = emit_ilabel(seq_ptr[2], cip); - code_p->u.xllll.l4 = emit_ilabel(seq_ptr[3], cip); + code_p->y_u.xllll.l1 = emit_ilabel(seq_ptr[0], cip); + code_p->y_u.xllll.l2 = emit_ilabel(seq_ptr[1], cip); + code_p->y_u.xllll.l3 = emit_ilabel(seq_ptr[2], cip); + code_p->y_u.xllll.l4 = emit_ilabel(seq_ptr[3], cip); } else { /* skip one */ cip->cpc = cip->cpc->nextInst; @@ -1832,13 +1832,13 @@ a_4sw_s(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.sllll.s = cip->cpc->rnd2; + code_p->y_u.sllll.s = cip->cpc->rnd2; cip->cpc = cip->cpc->nextInst; seq_ptr = cip->cpc->arnds; - code_p->u.sllll.l1 = emit_ilabel(seq_ptr[0], cip); - code_p->u.sllll.l2 = emit_ilabel(seq_ptr[1], cip); - code_p->u.sllll.l3 = emit_ilabel(seq_ptr[2], cip); - code_p->u.sllll.l4 = emit_ilabel(seq_ptr[3], cip); + code_p->y_u.sllll.l1 = emit_ilabel(seq_ptr[0], cip); + code_p->y_u.sllll.l2 = emit_ilabel(seq_ptr[1], cip); + code_p->y_u.sllll.l3 = emit_ilabel(seq_ptr[2], cip); + code_p->y_u.sllll.l4 = emit_ilabel(seq_ptr[3], cip); } else { /* skip one */ cip->cpc = cip->cpc->nextInst; @@ -1884,8 +1884,8 @@ a_hx(op_numbers opcode, union clause_obj *cl_u, int log_update, yamop *code_p, i imax = cip->cpc->rnd1; if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.sssl.s = emit_c(imax); - code_p->u.sssl.l = emit_a(cip->cpc->rnd2); + code_p->y_u.sssl.s = emit_c(imax); + code_p->y_u.sssl.l = emit_a(cip->cpc->rnd2); if (log_update) { init_log_upd_table(ClauseCodeToLogUpdIndex(cip->cpc->rnd2), cl_u); } else { @@ -1901,8 +1901,8 @@ a_hx(op_numbers opcode, union clause_obj *cl_u, int log_update, yamop *code_p, i } seq_ptr += 2; } - code_p->u.sssl.e = j; - code_p->u.sssl.w = 0; + code_p->y_u.sssl.e = j; + code_p->y_u.sssl.w = 0; } GONEXT(sssl); return code_p; @@ -1917,9 +1917,9 @@ a_if(op_numbers opcode, union clause_obj *cl_u, int log_update, yamop *code_p, i imax = cip->cpc->rnd1; if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.sssl.s = code_p->u.sssl.e = emit_count(imax); - code_p->u.sssl.w = 0; - code_p->u.sssl.l = emit_a(cip->cpc->rnd2); + code_p->y_u.sssl.s = code_p->y_u.sssl.e = emit_count(imax); + code_p->y_u.sssl.w = 0; + code_p->y_u.sssl.l = emit_a(cip->cpc->rnd2); if (log_update) { init_log_upd_table(ClauseCodeToLogUpdIndex(cip->cpc->rnd2), cl_u); } else { @@ -1946,10 +1946,10 @@ a_ifnot(op_numbers opcode, yamop *code_p, int pass_no, struct intermediates *cip CELL *seq_ptr = cip->cpc->arnds; if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.clll.c = seq_ptr[0]; /* tag */ - code_p->u.clll.l1 = emit_ilabel(seq_ptr[1], cip); /* success point */ - code_p->u.clll.l2 = emit_ilabel(seq_ptr[2], cip); /* fail point */ - code_p->u.clll.l3 = emit_ilabel(seq_ptr[3], cip); /* delay point */ + code_p->y_u.clll.c = seq_ptr[0]; /* tag */ + code_p->y_u.clll.l1 = emit_ilabel(seq_ptr[1], cip); /* success point */ + code_p->y_u.clll.l2 = emit_ilabel(seq_ptr[2], cip); /* fail point */ + code_p->y_u.clll.l3 = emit_ilabel(seq_ptr[3], cip); /* delay point */ } GONEXT(clll); return code_p; @@ -1995,11 +1995,11 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod Yap_NewCps++; Yap_LiveCps++; #endif - newcp->u.OtaLl.n = NULL; + newcp->y_u.OtaLl.n = NULL; *cip->current_try_lab = newcp; if (opcode == _try_clause) { newcp->opc = emit_op(_try_logical); - newcp->u.OtaLl.s = emit_count(opr); + newcp->y_u.OtaLl.s = emit_count(opr); } else if (opcode == _retry) { if (ap->PredFlags & CountPredFlag) newcp->opc = emit_op(_count_retry_logical); @@ -2007,7 +2007,7 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod newcp->opc = emit_op(_profiled_retry_logical); else newcp->opc = emit_op(_retry_logical); - newcp->u.OtaLl.s = emit_count(opr); + newcp->y_u.OtaLl.s = emit_count(opr); } else { /* trust */ if (ap->PredFlags & CountPredFlag) @@ -2016,11 +2016,11 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod newcp->opc = emit_op(_profiled_trust_logical); else newcp->opc = emit_op(_trust_logical); - newcp->u.OtILl.block = (LogUpdIndex *)(cip->code_addr); + newcp->y_u.OtILl.block = (LogUpdIndex *)(cip->code_addr); *cip->current_trust_lab = newcp; } - newcp->u.OtaLl.d = ClauseCodeToLogUpdClause(emit_a(lab)); - cip->current_try_lab = &(newcp->u.OtaLl.n); + newcp->y_u.OtaLl.d = ClauseCodeToLogUpdClause(emit_a(lab)); + cip->current_try_lab = &(newcp->y_u.OtaLl.n); } return code_p; } @@ -2030,14 +2030,14 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod if (opcode == _try_clause) { if (pass_no) { code_p->opc = emit_op(_try_clause2); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; } else if (opcode == _retry) { if (pass_no) { code_p->opc = emit_op(_retry2); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; @@ -2046,14 +2046,14 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod if (opcode == _try_clause) { if (pass_no) { code_p->opc = emit_op(_try_clause3); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; } else if (opcode == _retry) { if (pass_no) { code_p->opc = emit_op(_retry3); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; @@ -2062,14 +2062,14 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod if (opcode == _try_clause) { if (pass_no) { code_p->opc = emit_op(_try_clause4); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; } else if (opcode == _retry) { if (pass_no) { code_p->opc = emit_op(_retry4); - code_p->u.l.l = emit_a(lab); + code_p->y_u.l.l = emit_a(lab); } GONEXT(l); return code_p; @@ -2078,11 +2078,11 @@ a_try(op_numbers opcode, CELL lab, CELL opr, int nofalts, int hascut, yamop *cod #endif if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.Otapl.d = emit_a(lab); - code_p->u.Otapl.s = emit_count(opr); - code_p->u.Otapl.p = ap; + code_p->y_u.Otapl.d = emit_a(lab); + code_p->y_u.Otapl.s = emit_count(opr); + code_p->y_u.Otapl.p = ap; #ifdef TABLING - code_p->u.Otapl.te = ap->TableOfPred; + code_p->y_u.Otapl.te = ap->TableOfPred; #endif #ifdef YAPOR INIT_YAMOP_LTT(code_p, nofalts); @@ -2105,9 +2105,9 @@ a_either(op_numbers opcode, CELL opr, CELL lab, yamop *code_p, int pass_no, stru { if (pass_no) { code_p->opc = emit_op(opcode); - code_p->u.Osblp.s = emit_count(opr); - code_p->u.Osblp.l = emit_a(lab); - code_p->u.Osblp.p0 = cip->CurrentPred; + code_p->y_u.Osblp.s = emit_count(opr); + code_p->y_u.Osblp.l = emit_a(lab); + code_p->y_u.Osblp.p0 = cip->CurrentPred; #ifdef YAPOR INIT_YAMOP_LTT(code_p, nofalts); if (cip->clause_has_cut) @@ -2115,10 +2115,10 @@ a_either(op_numbers opcode, CELL opr, CELL lab, yamop *code_p, int pass_no, stru if (cip->CurrentPred->PredFlags & SequentialPredFlag) PUT_YAMOP_SEQ(code_p); if(opcode != _or_last) { - code_p->u.Osblp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); + code_p->y_u.Osblp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); } #else - code_p->u.Osblp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); + code_p->y_u.Osblp.bmap = emit_bmlabel(cip->cpc->arnds[1], cip); #endif /* YAPOR */ } GONEXT(Osblp); @@ -2451,7 +2451,7 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci if (opc <= _primitive) { if (is_y_var) { if (pass_no) { - code_p->u.yl.y = emit_y(ve); + code_p->y_u.yl.y = emit_y(ve); switch (opc) { case _atom: code_p->opc = opcode(_p_atom_y); @@ -2487,13 +2487,13 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = opcode(_p_primitive_y); break; } - code_p->u.yl.F = emit_fail(cip); + code_p->y_u.yl.F = emit_fail(cip); } GONEXT(yl); return code_p; } else { if (pass_no) { - code_p->u.xl.x = emit_x(xpos); + code_p->y_u.xl.x = emit_x(xpos); switch (opc) { case _atom: code_p->opc = opcode(_p_atom_x); @@ -2529,7 +2529,7 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = opcode(_p_primitive_x); break; } - code_p->u.xl.F = emit_fail(cip); + code_p->y_u.xl.F = emit_fail(cip); } GONEXT(xl); return code_p; @@ -2552,18 +2552,18 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci if (is_y_nvar) { if (pass_no) { code_p->opc = emit_op(_p_func2f_yy); - code_p->u.yyx.y1 = emit_y(ve); - code_p->u.yyx.y2 = emit_y(nve); - code_p->u.yyx.x = cmp_info->x1_arg; + code_p->y_u.yyx.y1 = emit_y(ve); + code_p->y_u.yyx.y2 = emit_y(nve); + code_p->y_u.yyx.x = cmp_info->x1_arg; } GONEXT(yyx); return code_p; } else { if (pass_no) { code_p->opc = emit_op(_p_func2f_yx); - code_p->u.yxx.y = emit_y(ve); - code_p->u.yxx.x1 = emit_x(nxpos); - code_p->u.yxx.x2 = cmp_info->x1_arg; + code_p->y_u.yxx.y = emit_y(ve); + code_p->y_u.yxx.x1 = emit_x(nxpos); + code_p->y_u.yxx.x2 = cmp_info->x1_arg; } GONEXT(yxx); return code_p; @@ -2572,18 +2572,18 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci if (is_y_nvar) { if (pass_no) { code_p->opc = emit_op(_p_func2f_xy); - code_p->u.xxy.x1 = emit_x(xpos); - code_p->u.xxy.y2 = emit_y(nve); - code_p->u.xxy.x = cmp_info->x1_arg; + code_p->y_u.xxy.x1 = emit_x(xpos); + code_p->y_u.xxy.y2 = emit_y(nve); + code_p->y_u.xxy.x = cmp_info->x1_arg; } GONEXT(xxy); return code_p; } else { if (pass_no) { code_p->opc = emit_op(_p_func2f_xx); - code_p->u.xxx.x1 = emit_x(xpos); - code_p->u.xxx.x2 = emit_x(nxpos); - code_p->u.xxx.x = cmp_info->x1_arg; + code_p->y_u.xxx.x1 = emit_x(xpos); + code_p->y_u.xxx.x2 = emit_x(nxpos); + code_p->y_u.xxx.x = cmp_info->x1_arg; } GONEXT(xxx); return code_p; @@ -2626,9 +2626,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_y_vv); break; } - code_p->u.yxx.y = emit_y(ve); - code_p->u.yxx.x1 = cmp_info->x1_arg; - code_p->u.yxx.x2 = cmp_info->x2_arg; + code_p->y_u.yxx.y = emit_y(ve); + code_p->y_u.yxx.x1 = cmp_info->x1_arg; + code_p->y_u.yxx.x2 = cmp_info->x2_arg; } GONEXT(yxx); break; @@ -2674,9 +2674,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_y_cv); break; } - code_p->u.yxn.y = emit_y(ve); - code_p->u.yxn.c = cmp_info->c_arg; - code_p->u.yxn.xi = cmp_info->x1_arg; + code_p->y_u.yxn.y = emit_y(ve); + code_p->y_u.yxn.c = cmp_info->c_arg; + code_p->y_u.yxn.xi = cmp_info->x1_arg; } GONEXT(yxn); break; @@ -2728,9 +2728,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_y_vc); break; } - code_p->u.yxn.y = emit_y(ve); - code_p->u.yxn.c = cmp_info->c_arg; - code_p->u.yxn.xi = cmp_info->x1_arg; + code_p->y_u.yxn.y = emit_y(ve); + code_p->y_u.yxn.c = cmp_info->c_arg; + code_p->y_u.yxn.xi = cmp_info->x1_arg; } GONEXT(yxn); break; @@ -2771,9 +2771,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_vv); break; } - code_p->u.xxx.x = emit_x(xpos); - code_p->u.xxx.x1 = cmp_info->x1_arg; - code_p->u.xxx.x2 = cmp_info->x2_arg; + code_p->y_u.xxx.x = emit_x(xpos); + code_p->y_u.xxx.x1 = cmp_info->x1_arg; + code_p->y_u.xxx.x2 = cmp_info->x2_arg; } GONEXT(xxx); break; @@ -2819,9 +2819,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_cv); break; } - code_p->u.xxn.x = emit_x(xpos); - code_p->u.xxn.c = cmp_info->c_arg; - code_p->u.xxn.xi = cmp_info->x1_arg; + code_p->y_u.xxn.x = emit_x(xpos); + code_p->y_u.xxn.c = cmp_info->c_arg; + code_p->y_u.xxn.xi = cmp_info->x1_arg; } GONEXT(xxn); break; @@ -2873,9 +2873,9 @@ a_f2(cmp_op_info *cmp_info, yamop *code_p, int pass_no, struct intermediates *ci code_p->opc = emit_op(_p_func2s_vc); break; } - code_p->u.xxn.x = emit_x(xpos); - code_p->u.xxn.c = cmp_info->c_arg; - code_p->u.xxn.xi = cmp_info->x1_arg; + code_p->y_u.xxn.x = emit_x(xpos); + code_p->y_u.xxn.c = cmp_info->c_arg; + code_p->y_u.xxn.xi = cmp_info->x1_arg; } GONEXT(xxn); break; @@ -3937,24 +3937,24 @@ Yap_InitComma(void) { yamop *code_p = COMMA_CODE; code_p->opc = opcode(_call); - code_p->u.Osbpp.s = emit_count(-Signed(RealEnvSize) - sizeof(CELL) * 3); - code_p->u.Osbpp.p = - code_p->u.Osbpp.p0 = + code_p->y_u.Osbpp.s = emit_count(-Signed(RealEnvSize) - sizeof(CELL) * 3); + code_p->y_u.Osbpp.p = + code_p->y_u.Osbpp.p0 = RepPredProp(PredPropByFunc(FunctorComma,0)); - code_p->u.Osbpp.bmap = NULL; + code_p->y_u.Osbpp.bmap = NULL; GONEXT(Osbpp); code_p->opc = opcode(_p_execute_tail); - code_p->u.Osbmp.s = emit_count(-Signed(RealEnvSize)-3*sizeof(CELL)); - code_p->u.Osbmp.bmap = NULL; - code_p->u.Osbmp.mod = + code_p->y_u.Osbmp.s = emit_count(-Signed(RealEnvSize)-3*sizeof(CELL)); + code_p->y_u.Osbmp.bmap = NULL; + code_p->y_u.Osbmp.mod = MkAtomTerm(AtomUser); - code_p->u.Osbmp.p0 = + code_p->y_u.Osbmp.p0 = RepPredProp(PredPropByFunc(FunctorComma,0)); GONEXT(Osbmp); code_p->opc = emit_op(_deallocate); - code_p->u.p.p = PredMetaCall; + code_p->y_u.p.p = PredMetaCall; GONEXT(p); code_p->opc = emit_op(_procceed); - code_p->u.p.p = PredMetaCall; + code_p->y_u.p.p = PredMetaCall; GONEXT(p); } diff --git a/C/c_interface.c b/C/c_interface.c index 298f2e05c..8ce538322 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -463,7 +463,7 @@ current_arity(void) { CACHE_REGS if (P && PREVOP(P,Osbpp)->opc == Yap_opcode(_call_usercpred)) { - return PREVOP(P,Osbpp)->u.Osbpp.p->ArityOfPE; + return PREVOP(P,Osbpp)->y_u.Osbpp.p->ArityOfPE; } else { return 0; } @@ -476,7 +476,7 @@ doexpand(UInt sz) UInt arity; if (P && PREVOP(P,Osbpp)->opc == Yap_opcode(_call_usercpred)) { - arity = PREVOP(P,Osbpp)->u.Osbpp.p->ArityOfPE; + arity = PREVOP(P,Osbpp)->y_u.Osbpp.p->ArityOfPE; } else { arity = 0; } @@ -1068,7 +1068,7 @@ YAP_ExtraSpaceCut(void) void *ptr; BACKUP_B(); - ptr = (void *)(((CELL *)(Yap_REGS.CUT_C_TOP))-(((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->u.OtapFs.extra)); + ptr = (void *)(((CELL *)(Yap_REGS.CUT_C_TOP))-(((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->y_u.OtapFs.extra)); RECOVER_B(); return(ptr); @@ -1083,7 +1083,7 @@ YAP_ExtraSpace(void) BACKUP_H(); /* find a pointer to extra space allocable */ - ptr = (void *)((CELL *)(B+1)+P->u.OtapFs.s); + ptr = (void *)((CELL *)(B+1)+P->y_u.OtapFs.s); B->cp_h = HR; RECOVER_H(); diff --git a/C/cdmgr.c b/C/cdmgr.c index 48f176c32..f37df2a4d 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -537,14 +537,14 @@ PredForChoicePt(yamop *p_code) { case _Nstop: return NULL; case _jump: - p_code = p_code->u.l.l; + p_code = p_code->y_u.l.l; break; case _retry_me: case _trust_me: - return p_code->u.Otapl.p; + return p_code->y_u.Otapl.p; case _retry_exo: case _retry_all_exo: - return p_code->u.lp.p; + return p_code->y_u.lp.p; case _try_logical: case _retry_logical: case _trust_logical: @@ -552,7 +552,7 @@ PredForChoicePt(yamop *p_code) { case _count_trust_logical: case _profiled_retry_logical: case _profiled_trust_logical: - return p_code->u.OtaLl.d->ClPred; + return p_code->y_u.OtaLl.d->ClPred; #ifdef TABLING case _trie_trust_var: case _trie_retry_var: @@ -596,19 +596,19 @@ PredForChoicePt(yamop *p_code) { /* compile error --> return ENV_ToP(gc_B->cp_cp); */ #endif /* TABLING */ case _or_else: - if (p_code == p_code->u.Osblp.l) { + if (p_code == p_code->y_u.Osblp.l) { /* repeat */ Atom at = AtomRepeatSpace; return RepPredProp(PredPropByAtom(at, PROLOG_MODULE)); } else { - return p_code->u.Osblp.p0; + return p_code->y_u.Osblp.p0; } break; case _or_last: #ifdef YAPOR - return p_code->u.Osblp.p0; + return p_code->y_u.Osblp.p0; #else - return p_code->u.p.p; + return p_code->y_u.p.p; #endif /* YAPOR */ break; case _count_retry_me: @@ -619,7 +619,7 @@ PredForChoicePt(yamop *p_code) { p_code = NEXTOP(p_code,l); break; default: - return p_code->u.Otapl.p; + return p_code->y_u.Otapl.p; } } return NULL; @@ -1040,7 +1040,7 @@ Yap_IPred(PredEntry *p, UInt NSlots, yamop *next_pc) IPred(p, NSlots, next_pc); } -#define GONEXT(TYPE) code_p = ((yamop *)(&(code_p->u.TYPE.next))) +#define GONEXT(TYPE) code_p = ((yamop *)(&(code_p->y_u.TYPE.next))) static void RemoveMainIndex(PredEntry *ap) @@ -1097,29 +1097,29 @@ static yamop * release_wcls(yamop *cop, OPCODE ecs) { if (cop->opc == ecs) { - cop->u.sssllp.s3--; - if (!cop->u.sssllp.s3) { - UInt sz = (UInt)NEXTOP((yamop *)NULL,sssllp)+cop->u.sssllp.s1*sizeof(yamop *); + cop->y_u.sssllp.s3--; + if (!cop->y_u.sssllp.s3) { + UInt sz = (UInt)NEXTOP((yamop *)NULL,sssllp)+cop->y_u.sssllp.s1*sizeof(yamop *); LOCK(ExpandClausesListLock); #ifdef DEBUG Yap_expand_clauses_sz -= sz; Yap_ExpandClauses--; #endif - if (cop->u.sssllp.p->PredFlags & LogUpdatePredFlag) { + if (cop->y_u.sssllp.p->PredFlags & LogUpdatePredFlag) { Yap_LUIndexSpace_EXT -= sz; } else { Yap_IndexSpace_EXT -= sz; } if (ExpandClausesFirst == cop) - ExpandClausesFirst = cop->u.sssllp.snext; + ExpandClausesFirst = cop->y_u.sssllp.snext; if (ExpandClausesLast == cop) { - ExpandClausesLast = cop->u.sssllp.sprev; + ExpandClausesLast = cop->y_u.sssllp.sprev; } - if (cop->u.sssllp.sprev) { - cop->u.sssllp.sprev->u.sssllp.snext = cop->u.sssllp.snext; + if (cop->y_u.sssllp.sprev) { + cop->y_u.sssllp.sprev->y_u.sssllp.snext = cop->y_u.sssllp.snext; } - if (cop->u.sssllp.snext) { - cop->u.sssllp.snext->u.sssllp.sprev = cop->u.sssllp.sprev; + if (cop->y_u.sssllp.snext) { + cop->y_u.sssllp.snext->y_u.sssllp.sprev = cop->y_u.sssllp.sprev; } UNLOCK(ExpandClausesListLock); Yap_InformOfRemoval(cop); @@ -1163,12 +1163,12 @@ cleanup_dangling_indices(yamop *ipc, yamop *beg, yamop *end, yamop *suspend_code case _retry2: case _retry3: case _retry4: - decrease_ref_counter(ipc->u.l.l, beg, end, suspend_code); + decrease_ref_counter(ipc->y_u.l.l, beg, end, suspend_code); ipc = NEXTOP(ipc,l); break; case _retry: case _trust: - decrease_ref_counter(ipc->u.Otapl.d, beg, end, suspend_code); + decrease_ref_counter(ipc->y_u.Otapl.d, beg, end, suspend_code); ipc = NEXTOP(ipc,Otapl); break; case _try_clause: @@ -1185,8 +1185,8 @@ cleanup_dangling_indices(yamop *ipc, yamop *beg, yamop *end, yamop *suspend_code case _profiled_retry_logical: { yamop *oipc = ipc; - decrease_ref_counter(ipc->u.OtaLl.d->ClCode, beg, end, suspend_code); - ipc = ipc->u.OtaLl.n; + decrease_ref_counter(ipc->y_u.OtaLl.d->ClCode, beg, end, suspend_code); + ipc = ipc->y_u.OtaLl.n; Yap_LUIndexSpace_CP -= (UInt)NEXTOP((yamop *)NULL,OtaLl); Yap_FreeCodeSpace((ADDR)oipc); #ifdef DEBUG @@ -1202,35 +1202,35 @@ cleanup_dangling_indices(yamop *ipc, yamop *beg, yamop *end, yamop *suspend_code Yap_DirtyCps--; Yap_FreedCps++; #endif - decrease_ref_counter(ipc->u.OtILl.d->ClCode, beg, end, suspend_code); + decrease_ref_counter(ipc->y_u.OtILl.d->ClCode, beg, end, suspend_code); Yap_LUIndexSpace_CP -= (UInt)NEXTOP((yamop *)NULL,OtILl); Yap_FreeCodeSpace((ADDR)ipc); return; case _enter_lu_pred: { yamop *oipc = ipc; - if (ipc->u.Illss.I->ClFlags & InUseMask || ipc->u.Illss.I->ClRefCount) + if (ipc->y_u.Illss.I->ClFlags & InUseMask || ipc->y_u.Illss.I->ClRefCount) return; #ifdef DEBUG - Yap_DirtyCps+=ipc->u.Illss.s; - Yap_LiveCps-=ipc->u.Illss.s; + Yap_DirtyCps+=ipc->y_u.Illss.s; + Yap_LiveCps-=ipc->y_u.Illss.s; #endif - ipc = ipc->u.Illss.l1; + ipc = ipc->y_u.Illss.l1; /* in case we visit again */ - oipc->u.Illss.l1 = FAILCODE; - oipc->u.Illss.s = 0; - oipc->u.Illss.e = 0; + oipc->y_u.Illss.l1 = FAILCODE; + oipc->y_u.Illss.s = 0; + oipc->y_u.Illss.e = 0; } break; case _try_in: case _jump: case _jump_if_var: - ipc->u.l.l = release_wcls(ipc->u.l.l, ecs); + ipc->y_u.l.l = release_wcls(ipc->y_u.l.l, ecs); ipc = NEXTOP(ipc,l); break; /* instructions type xl */ case _jump_if_nonvar: - ipc->u.xll.l1 = release_wcls(ipc->u.xll.l1, ecs); + ipc->y_u.xll.l1 = release_wcls(ipc->y_u.xll.l1, ecs); ipc = NEXTOP(ipc,xll); break; /* instructions type p */ @@ -1239,31 +1239,31 @@ cleanup_dangling_indices(yamop *ipc, yamop *beg, yamop *end, yamop *suspend_code break; /* instructions type e */ case _switch_on_type: - ipc->u.llll.l1 = release_wcls(ipc->u.llll.l1, ecs); - ipc->u.llll.l2 = release_wcls(ipc->u.llll.l2, ecs); - ipc->u.llll.l3 = release_wcls(ipc->u.llll.l3, ecs); - ipc->u.llll.l4 = release_wcls(ipc->u.llll.l4, ecs); + ipc->y_u.llll.l1 = release_wcls(ipc->y_u.llll.l1, ecs); + ipc->y_u.llll.l2 = release_wcls(ipc->y_u.llll.l2, ecs); + ipc->y_u.llll.l3 = release_wcls(ipc->y_u.llll.l3, ecs); + ipc->y_u.llll.l4 = release_wcls(ipc->y_u.llll.l4, ecs); ipc = NEXTOP(ipc,llll); break; case _switch_list_nl: - ipc->u.ollll.l1 = release_wcls(ipc->u.ollll.l1, ecs); - ipc->u.ollll.l2 = release_wcls(ipc->u.ollll.l2, ecs); - ipc->u.ollll.l3 = release_wcls(ipc->u.ollll.l3, ecs); - ipc->u.ollll.l4 = release_wcls(ipc->u.ollll.l4, ecs); + ipc->y_u.ollll.l1 = release_wcls(ipc->y_u.ollll.l1, ecs); + ipc->y_u.ollll.l2 = release_wcls(ipc->y_u.ollll.l2, ecs); + ipc->y_u.ollll.l3 = release_wcls(ipc->y_u.ollll.l3, ecs); + ipc->y_u.ollll.l4 = release_wcls(ipc->y_u.ollll.l4, ecs); ipc = NEXTOP(ipc,ollll); break; case _switch_on_arg_type: - ipc->u.xllll.l1 = release_wcls(ipc->u.xllll.l1, ecs); - ipc->u.xllll.l2 = release_wcls(ipc->u.xllll.l2, ecs); - ipc->u.xllll.l3 = release_wcls(ipc->u.xllll.l3, ecs); - ipc->u.xllll.l4 = release_wcls(ipc->u.xllll.l4, ecs); + ipc->y_u.xllll.l1 = release_wcls(ipc->y_u.xllll.l1, ecs); + ipc->y_u.xllll.l2 = release_wcls(ipc->y_u.xllll.l2, ecs); + ipc->y_u.xllll.l3 = release_wcls(ipc->y_u.xllll.l3, ecs); + ipc->y_u.xllll.l4 = release_wcls(ipc->y_u.xllll.l4, ecs); ipc = NEXTOP(ipc,xllll); break; case _switch_on_sub_arg_type: - ipc->u.sllll.l1 = release_wcls(ipc->u.sllll.l1, ecs); - ipc->u.sllll.l2 = release_wcls(ipc->u.sllll.l2, ecs); - ipc->u.sllll.l3 = release_wcls(ipc->u.sllll.l3, ecs); - ipc->u.sllll.l4 = release_wcls(ipc->u.sllll.l4, ecs); + ipc->y_u.sllll.l1 = release_wcls(ipc->y_u.sllll.l1, ecs); + ipc->y_u.sllll.l2 = release_wcls(ipc->y_u.sllll.l2, ecs); + ipc->y_u.sllll.l3 = release_wcls(ipc->y_u.sllll.l3, ecs); + ipc->y_u.sllll.l4 = release_wcls(ipc->y_u.sllll.l4, ecs); ipc = NEXTOP(ipc,sllll); break; case _if_not_then: @@ -1276,7 +1276,7 @@ cleanup_dangling_indices(yamop *ipc, yamop *beg, yamop *end, yamop *suspend_code case _if_cons: case _go_on_cons: /* make sure we don't leave dangling references to memory that is going to be removed */ - ipc->u.sssl.l = NULL; + ipc->y_u.sssl.l = NULL; ipc = NEXTOP(ipc,sssl); break; case _op_fail: @@ -1755,9 +1755,9 @@ add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag) p->OpcodeOfPred = ncp->opc = Yap_opcode(_spy_or_trymark); else p->OpcodeOfPred = ncp->opc = Yap_opcode(_try_and_mark); - ncp->u.Otapl.s = p->ArityOfPE; - ncp->u.Otapl.p = p; - ncp->u.Otapl.d = cp; + ncp->y_u.Otapl.s = p->ArityOfPE; + ncp->y_u.Otapl.p = p; + ncp->y_u.Otapl.d = cp; /* This is the point we enter the code */ p->cs.p_code.TrueCodeOfPred = p->CodeOfPred = ncp; p->cs.p_code.NOfClauses = 1; @@ -1777,9 +1777,9 @@ add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag) cp->opc = Yap_opcode(_count_retry_and_mark); else cp->opc = Yap_opcode(_retry_and_mark); - cp->u.Otapl.s = p->ArityOfPE; - cp->u.Otapl.p = p; - cp->u.Otapl.d = ncp; + cp->y_u.Otapl.s = p->ArityOfPE; + cp->y_u.Otapl.p = p; + cp->y_u.Otapl.d = ncp; /* also, keep a backpointer for the days you delete the clause */ ClauseCodeToDynamicClause(cp)->ClPrevious = ncp; /* Don't forget to say who is the only clause for the predicate so @@ -1796,7 +1796,7 @@ add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag) /* and close the code */ ncp = NEXTOP(ncp,e); ncp->opc = Yap_opcode(_Ystop); - ncp->u.l.l = cl->ClCode; + ncp->y_u.l.l = cl->ClCode; } /* p is already locked */ @@ -1840,7 +1840,7 @@ asserta_stat_clause(PredEntry *p, yamop *q, int spy_flag) p->OpcodeOfPred = INDEX_OPCODE; p->CodeOfPred = (yamop *)(&(p->OpcodeOfPred)); } - p->cs.p_code.LastClause->u.Otapl.d = q; + p->cs.p_code.LastClause->y_u.Otapl.d = q; } /* p is already locked */ @@ -1856,22 +1856,22 @@ asserta_dynam_clause(PredEntry *p, yamop *cp) cl->ClPrevious = (yamop *)(p->CodeOfPred); cl->ClFlags |= DynamicMask; UNLOCK(ClauseCodeToDynamicClause(p->cs.p_code.FirstClause)->ClLock); - q->u.Otapl.d = p->cs.p_code.FirstClause; - q->u.Otapl.s = p->ArityOfPE; - q->u.Otapl.p = p; + q->y_u.Otapl.d = p->cs.p_code.FirstClause; + q->y_u.Otapl.s = p->ArityOfPE; + q->y_u.Otapl.p = p; if (p->PredFlags & ProfiledPredFlag) cp->opc = Yap_opcode(_profiled_retry_and_mark); else if (p->PredFlags & CountPredFlag) cp->opc = Yap_opcode(_count_retry_and_mark); else cp->opc = Yap_opcode(_retry_and_mark); - cp->u.Otapl.s = p->ArityOfPE; - cp->u.Otapl.p = p; + cp->y_u.Otapl.s = p->ArityOfPE; + cp->y_u.Otapl.p = p; p->cs.p_code.FirstClause = cp; q = p->CodeOfPred; - q->u.Otapl.d = cp; - q->u.Otapl.s = p->ArityOfPE; - q->u.Otapl.p = p; + q->y_u.Otapl.d = cp; + q->y_u.Otapl.s = p->ArityOfPE; + q->y_u.Otapl.p = p; } @@ -1931,7 +1931,7 @@ assertz_dynam_clause(PredEntry *p, yamop *cp) q = p->cs.p_code.LastClause; LOCK(ClauseCodeToDynamicClause(q)->ClLock); - q->u.Otapl.d = cp; + q->y_u.Otapl.d = cp; p->cs.p_code.LastClause = cp; /* also, keep backpointers for the days we'll delete all the clause */ cl->ClPrevious = q; @@ -1944,9 +1944,9 @@ assertz_dynam_clause(PredEntry *p, yamop *cp) q->opc = Yap_opcode(_count_retry_and_mark); else q->opc = Yap_opcode(_retry_and_mark); - q->u.Otapl.d = p->CodeOfPred; - q->u.Otapl.s = p->ArityOfPE; - q->u.Otapl.p = p; + q->y_u.Otapl.d = p->CodeOfPred; + q->y_u.Otapl.s = p->ArityOfPE; + q->y_u.Otapl.p = p; p->cs.p_code.NOfClauses++; } @@ -3553,16 +3553,16 @@ search_for_static_predicate_in_use(PredEntry *p, int check_everything) if (p->PredFlags & LogUpdatePredFlag) { LogUpdIndex *cl = ClauseCodeToLogUpdIndex(code_beg); if (find_owner_log_index(cl, code_p)) - b_ptr->cp_ap = cur_log_upd_clause(pe, b_ptr->cp_ap->u.Otapl.d); + b_ptr->cp_ap = cur_log_upd_clause(pe, b_ptr->cp_ap->y_u.Otapl.d); } else if (p->PredFlags & MegaClausePredFlag) { StaticIndex *cl = ClauseCodeToStaticIndex(code_beg); if (find_owner_static_index(cl, code_p)) - b_ptr->cp_ap = cur_clause(pe, b_ptr->cp_ap->u.Otapl.d); + b_ptr->cp_ap = cur_clause(pe, b_ptr->cp_ap->y_u.Otapl.d); } else { /* static clause */ StaticIndex *cl = ClauseCodeToStaticIndex(code_beg); if (find_owner_static_index(cl, code_p)) { - b_ptr->cp_ap = cur_clause(pe, b_ptr->cp_ap->u.Otapl.d); + b_ptr->cp_ap = cur_clause(pe, b_ptr->cp_ap->y_u.Otapl.d); } } } @@ -4151,7 +4151,7 @@ found_idb_clause(yamop *pc, CODEADDR *startp, CODEADDR *endp) static PredEntry * found_expand_index(yamop *pc, CODEADDR *startp, CODEADDR *endp, yamop *codeptr USES_REGS) { - PredEntry *pp = codeptr->u.sssllp.p; + PredEntry *pp = codeptr->y_u.sssllp.p; if (pc == codeptr) { *startp = (CODEADDR)codeptr; *endp = (CODEADDR)NEXTOP(codeptr,sssllp); @@ -4199,30 +4199,30 @@ found_ystop(yamop *pc, int clause_code, CODEADDR *startp, CODEADDR *endp, PredEn } if (!pp) { /* must be an index */ - PredEntry **pep = (PredEntry **)pc->u.l.l; + PredEntry **pep = (PredEntry **)pc->y_u.l.l; pp = pep[-1]; } if (pp->PredFlags & LogUpdatePredFlag) { if (clause_code) { - LogUpdClause *cl = ClauseCodeToLogUpdClause(pc->u.l.l); + LogUpdClause *cl = ClauseCodeToLogUpdClause(pc->y_u.l.l); *startp = (CODEADDR)cl; *endp = (CODEADDR)cl+cl->ClSize; } else { - LogUpdIndex *cl = ClauseCodeToLogUpdIndex(pc->u.l.l); + LogUpdIndex *cl = ClauseCodeToLogUpdIndex(pc->y_u.l.l); *startp = (CODEADDR)cl; *endp = (CODEADDR)cl+cl->ClSize; } } else if (pp->PredFlags & DynamicPredFlag) { - DynamicClause *cl = ClauseCodeToDynamicClause(pc->u.l.l); + DynamicClause *cl = ClauseCodeToDynamicClause(pc->y_u.l.l); *startp = (CODEADDR)cl; *endp = (CODEADDR)cl+cl->ClSize; } else { if (clause_code) { - StaticClause *cl = ClauseCodeToStaticClause(pc->u.l.l); + StaticClause *cl = ClauseCodeToStaticClause(pc->y_u.l.l); *startp = (CODEADDR)cl; *endp = (CODEADDR)cl+cl->ClSize; } else { - StaticIndex *cl = ClauseCodeToStaticIndex(pc->u.l.l); + StaticIndex *cl = ClauseCodeToStaticIndex(pc->y_u.l.l); *startp = (CODEADDR)cl; *endp = (CODEADDR)cl+cl->ClSize; } @@ -5150,7 +5150,7 @@ Yap_UpdateTimestamps(PredEntry *ap) case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: - if (bptr->cp_ap->u.OtaLl.d->ClPred == ap) { + if (bptr->cp_ap->y_u.OtaLl.d->ClPred == ap) { UInt ts = IntegerOfTerm(bptr->cp_args[ar]); if (ts != arp[0]) { if (arp-HR < 1024) { @@ -5214,7 +5214,7 @@ Yap_UpdateTimestamps(PredEntry *ap) case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: - if (bptr->cp_ap->u.OtaLl.d->ClPred == ap) { + if (bptr->cp_ap->y_u.OtaLl.d->ClPred == ap) { UInt ts = IntegerOfTerm(bptr->cp_args[ar]); while (ts != arp[0]) arp--; @@ -5579,9 +5579,9 @@ index_ssz(StaticIndex *x, PredEntry *pe) } /* expand clause blocks */ while (ep) { - if (ep->u.sssllp.p == pe) - sz += (UInt)NEXTOP((yamop *)NULL,sssllp)+ep->u.sssllp.s1*sizeof(yamop *); - ep = ep->u.sssllp.snext; + if (ep->y_u.sssllp.p == pe) + sz += (UInt)NEXTOP((yamop *)NULL,sssllp)+ep->y_u.sssllp.s1*sizeof(yamop *); + ep = ep->y_u.sssllp.snext; } /* main indexing tree */ sz += tree_index_ssz(x); @@ -5787,7 +5787,7 @@ p_env_info( USES_REGS1 ) env_b = MkIntegerTerm((Int)(LCL0-(CELL *)env[E_CB])); env_cp = (yamop *)env[E_CP]; - /* pe = PREVOP(env_cp,Osbpp)->u.Osbpp.p0; */ + /* pe = PREVOP(env_cp,Osbpp)->y_u.Osbpp.p0; */ taddr = MkIntegerTerm((Int)env); return Yap_unify(ARG3,MkIntegerTerm((Int)env_cp)) && Yap_unify(ARG2, taddr) && @@ -5800,7 +5800,7 @@ p_cpc_info( USES_REGS1 ) PredEntry *pe; yamop *ipc = (yamop *)IntegerOfTerm(Deref(ARG1)); - pe = PREVOP(ipc,Osbpp)->u.Osbpp.p0; + pe = PREVOP(ipc,Osbpp)->y_u.Osbpp.p0; return UnifyPredInfo(pe, 2 PASS_REGS) && Yap_unify(ARG5,MkIntegerTerm(ClauseId(ipc,pe))); } @@ -5903,21 +5903,21 @@ p_choicepoint_info( USES_REGS1 ) case _count_trust_logical: case _profiled_retry_logical: case _profiled_trust_logical: - ncl = ipc->u.OtaLl.d->ClCode; - pe = ipc->u.OtaLl.d->ClPred; + ncl = ipc->y_u.OtaLl.d->ClCode; + pe = ipc->y_u.OtaLl.d->ClPred; t = BuildActivePred(pe, cptr->cp_args); break; case _or_else: - pe = ipc->u.Osblp.p0; + pe = ipc->y_u.Osblp.p0; ncl = ipc; t = Yap_MkNewApplTerm(FunctorOr, 2); break; case _or_last: #ifdef YAPOR - pe = ipc->u.Osblp.p0; + pe = ipc->y_u.Osblp.p0; #else - pe = ipc->u.p.p; + pe = ipc->y_u.p.p; #endif ncl = ipc; t = Yap_MkNewApplTerm(FunctorOr, 2); @@ -5929,26 +5929,26 @@ p_choicepoint_info( USES_REGS1 ) t = TermNil; ipc = NEXTOP(ipc,l); if (!ncl) - ncl = ipc->u.Otapl.d; + ncl = ipc->y_u.Otapl.d; go_on = TRUE; break; case _jump: pe = NULL; t = TermNil; - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; go_on = TRUE; break; case _retry_c: case _retry_userc: ncl = NEXTOP(ipc,OtapFs); - pe = ipc->u.OtapFs.p; + pe = ipc->y_u.OtapFs.p; t = BuildActivePred(pe, cptr->cp_args); break; case _retry_profiled: case _count_retry: pe = NULL; t = TermNil; - ncl = ipc->u.Otapl.d; + ncl = ipc->y_u.Otapl.d; ipc = NEXTOP(ipc,p); go_on = TRUE; break; @@ -5963,14 +5963,14 @@ p_choicepoint_info( USES_REGS1 ) case _retry: case _trust: if (!ncl) - ncl = ipc->u.Otapl.d; - pe = ipc->u.Otapl.p; + ncl = ipc->y_u.Otapl.d; + pe = ipc->y_u.Otapl.p; t = BuildActivePred(pe, cptr->cp_args); break; case _retry_exo: case _retry_all_exo: ncl = NULL; - pe = ipc->u.lp.p; + pe = ipc->y_u.lp.p; t = BuildActivePred(pe, cptr->cp_args); break; case _Nstop: @@ -6031,61 +6031,61 @@ store_dbcl_size(yamop *pc, UInt arity, Term t0, PredEntry *pe) case 2: pc->opc = Yap_opcode(_get_2atoms); DerefAndCheck(t, tp[0]); - pc->u.cc.c1 = t; + pc->y_u.cc.c1 = t; DerefAndCheck(t, tp[1]); - pc->u.cc.c2 = t; + pc->y_u.cc.c2 = t; pc = NEXTOP(pc,cc); break; case 3: pc->opc = Yap_opcode(_get_3atoms); DerefAndCheck(t, tp[0]); - pc->u.ccc.c1 = t; + pc->y_u.ccc.c1 = t; DerefAndCheck(t, tp[1]); - pc->u.ccc.c2 = t; + pc->y_u.ccc.c2 = t; DerefAndCheck(t, tp[2]); - pc->u.ccc.c3 = t; + pc->y_u.ccc.c3 = t; pc = NEXTOP(pc,ccc); break; case 4: pc->opc = Yap_opcode(_get_4atoms); DerefAndCheck(t, tp[0]); - pc->u.cccc.c1 = t; + pc->y_u.cccc.c1 = t; DerefAndCheck(t, tp[1]); - pc->u.cccc.c2 = t; + pc->y_u.cccc.c2 = t; DerefAndCheck(t, tp[2]); - pc->u.cccc.c3 = t; + pc->y_u.cccc.c3 = t; DerefAndCheck(t, tp[3]); - pc->u.cccc.c4 = t; + pc->y_u.cccc.c4 = t; pc = NEXTOP(pc,cccc); break; case 5: pc->opc = Yap_opcode(_get_5atoms); DerefAndCheck(t, tp[0]); - pc->u.ccccc.c1 = t; + pc->y_u.ccccc.c1 = t; DerefAndCheck(t, tp[1]); - pc->u.ccccc.c2 = t; + pc->y_u.ccccc.c2 = t; DerefAndCheck(t, tp[2]); - pc->u.ccccc.c3 = t; + pc->y_u.ccccc.c3 = t; DerefAndCheck(t, tp[3]); - pc->u.ccccc.c4 = t; + pc->y_u.ccccc.c4 = t; DerefAndCheck(t, tp[4]); - pc->u.ccccc.c5 = t; + pc->y_u.ccccc.c5 = t; pc = NEXTOP(pc,ccccc); break; case 6: pc->opc = Yap_opcode(_get_6atoms); DerefAndCheck(t, tp[0]); - pc->u.cccccc.c1 = t; + pc->y_u.cccccc.c1 = t; DerefAndCheck(t, tp[1]); - pc->u.cccccc.c2 = t; + pc->y_u.cccccc.c2 = t; DerefAndCheck(t, tp[2]); - pc->u.cccccc.c3 = t; + pc->y_u.cccccc.c3 = t; DerefAndCheck(t, tp[3]); - pc->u.cccccc.c4 = t; + pc->y_u.cccccc.c4 = t; DerefAndCheck(t, tp[4]); - pc->u.cccccc.c5 = t; + pc->y_u.cccccc.c5 = t; DerefAndCheck(t, tp[5]); - pc->u.cccccc.c6 = t; + pc->y_u.cccccc.c6 = t; pc = NEXTOP(pc,cccccc); break; default: @@ -6094,12 +6094,12 @@ store_dbcl_size(yamop *pc, UInt arity, Term t0, PredEntry *pe) for (i = 0; i< arity; i++) { pc->opc = Yap_opcode(_get_atom); #if PRECOMPUTE_REGADDRESS - pc->u.xc.x = (CELL) (XREGS + (i+1)); + pc->y_u.xc.x = (CELL) (XREGS + (i+1)); #else - pc->u.xc.x = i+1; + pc->y_u.xc.x = i+1; #endif DerefAndCheck(t, tp[0]); - pc->u.xc.c = t; + pc->y_u.xc.c = t; tp++; pc = NEXTOP(pc,xc); } @@ -6107,7 +6107,7 @@ store_dbcl_size(yamop *pc, UInt arity, Term t0, PredEntry *pe) break; } pc->opc = Yap_opcode(_procceed); - pc->u.p.p = pe; + pc->y_u.p.p = pe; return TRUE; } diff --git a/C/clause_list.c b/C/clause_list.c index f24d8de10..845a8aaa3 100644 --- a/C/clause_list.c +++ b/C/clause_list.c @@ -75,22 +75,22 @@ Yap_ClauseListExtend(clause_list_t cl, void * clause, void *pred) fclause = ptr[-1]; code_p = (yamop *)(ptr-1); code_p->opc = Yap_opcode(_try_clause); - code_p->u.Otapl.d = fclause; - code_p->u.Otapl.s = ap->ArityOfPE; - code_p->u.Otapl.p = ap; + code_p->y_u.Otapl.d = fclause; + code_p->y_u.Otapl.s = ap->ArityOfPE; + code_p->y_u.Otapl.p = ap; #ifdef TABLING - code_p->u.Otapl.te = ap->TableOfPred; + code_p->y_u.Otapl.te = ap->TableOfPred; #endif #ifdef YAPOR INIT_YAMOP_LTT(code_p, 0); #endif /* YAPOR */ code_p = NEXTOP(code_p,Otapl); code_p->opc = Yap_opcode(_trust); - code_p->u.Otapl.d = clause; - code_p->u.Otapl.s = ap->ArityOfPE; - code_p->u.Otapl.p = ap; + code_p->y_u.Otapl.d = clause; + code_p->y_u.Otapl.s = ap->ArityOfPE; + code_p->y_u.Otapl.p = ap; #ifdef TABLING - code_p->u.Otapl.te = ap->TableOfPred; + code_p->y_u.Otapl.te = ap->TableOfPred; #endif #ifdef YAPOR INIT_YAMOP_LTT(code_p, 0); @@ -100,11 +100,11 @@ Yap_ClauseListExtend(clause_list_t cl, void * clause, void *pred) if (!(code_p = (yamop *)extend_blob(cl->start,((CELL)NEXTOP((yamop *)NULL,Otapl))/sizeof(CELL) PASS_REGS))) return FALSE; code_p->opc = Yap_opcode(_trust); - code_p->u.Otapl.d = clause; - code_p->u.Otapl.s = ap->ArityOfPE; - code_p->u.Otapl.p = ap; + code_p->y_u.Otapl.d = clause; + code_p->y_u.Otapl.s = ap->ArityOfPE; + code_p->y_u.Otapl.p = ap; #ifdef TABLING - code_p->u.Otapl.te = ap->TableOfPred; + code_p->y_u.Otapl.te = ap->TableOfPred; #endif #ifdef YAPOR INIT_YAMOP_LTT(code_p, 0); diff --git a/C/dbase.c b/C/dbase.c index 70eb25e98..ebe4c4013 100755 --- a/C/dbase.c +++ b/C/dbase.c @@ -3614,14 +3614,14 @@ index_sz(LogUpdIndex *x) endop = Yap_opcode(_profiled_trust_logical); else endop = Yap_opcode(_trust_logical); - start = start->u.Illss.l1; - if (start->u.Illss.s) do { + start = start->y_u.Illss.l1; + if (start->y_u.Illss.s) do { sz += (UInt)NEXTOP((yamop*)NULL,OtaLl); op1 = start->opc; count++; - if (start->u.OtaLl.d->ClFlags & ErasedMask) + if (start->y_u.OtaLl.d->ClFlags & ErasedMask) dead++; - start = start->u.OtaLl.n; + start = start->y_u.OtaLl.n; } while (op1 != endop); } x = x->ChildIndex; @@ -3656,9 +3656,9 @@ lu_statistics(PredEntry *pe USES_REGS) /* expand clause blocks */ yamop *ep = ExpandClausesFirst; while (ep) { - if (ep->u.sssllp.p == pe) - isz += (UInt)NEXTOP((yamop *)NULL,sssllp)+ep->u.sssllp.s1*sizeof(yamop *); - ep = ep->u.sssllp.snext; + if (ep->y_u.sssllp.p == pe) + isz += (UInt)NEXTOP((yamop *)NULL,sssllp)+ep->y_u.sssllp.s1*sizeof(yamop *); + ep = ep->y_u.sssllp.snext; } isz += index_sz(ClauseCodeToLogUpdIndex(pe->cs.p_code.TrueCodeOfPred)); } @@ -3915,7 +3915,7 @@ find_next_clause(DBRef ref0 USES_REGS) static Int p_jump_to_next_dynamic_clause( USES_REGS1 ) { - DBRef ref = (DBRef)(((yamop *)((CODEADDR)P-(CELL)NEXTOP((yamop *)NULL,Osbpp)))->u.Osbpp.bmap); + DBRef ref = (DBRef)(((yamop *)((CODEADDR)P-(CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.bmap); yamop *newp = find_next_clause(ref PASS_REGS); if (newp == NULL) { @@ -4070,20 +4070,20 @@ MyEraseClause(DynamicClause *clau USES_REGS) I don't need to lock the clause at this point because I am the last one using it anyway. */ - ref = (DBRef) NEXTOP(clau->ClCode,Otapl)->u.Osbpp.bmap; + ref = (DBRef) NEXTOP(clau->ClCode,Otapl)->y_u.Osbpp.bmap; /* don't do nothing if the reference is still in use */ if (DBREF_IN_USE(ref)) return; if ( P == clau->ClCode ) { yamop *np = RTRYCODE; /* make it the next alternative */ - np->u.Otapl.d = find_next_clause((DBRef)(NEXTOP(P,Otapl)->u.Osbpp.bmap) PASS_REGS); - if (np->u.Otapl.d == NULL) + np->y_u.Otapl.d = find_next_clause((DBRef)(NEXTOP(P,Otapl)->y_u.Osbpp.bmap) PASS_REGS); + if (np->y_u.Otapl.d == NULL) P = (yamop *)FAILCODE; else { /* with same arity as before */ - np->u.Otapl.s = P->u.Otapl.s; - np->u.Otapl.p = P->u.Otapl.p; + np->y_u.Otapl.s = P->y_u.Otapl.s; + np->y_u.Otapl.p = P->y_u.Otapl.p; /* go ahead and try this code */ P = np; } @@ -4134,7 +4134,7 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr) if (p->cs.p_code.FirstClause != cl) { /* we are not the first clause... */ yamop *prev_code_p = (yamop *)(dbr->Prev->Code); - prev_code_p->u.Otapl.d = code_p->u.Otapl.d; + prev_code_p->y_u.Otapl.d = code_p->y_u.Otapl.d; /* are we the last? */ if (p->cs.p_code.LastClause == cl) p->cs.p_code.LastClause = prev_code_p; @@ -4143,7 +4143,7 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr) if (p->cs.p_code.LastClause == p->cs.p_code.FirstClause) { p->cs.p_code.LastClause = p->cs.p_code.FirstClause = NULL; } else { - p->cs.p_code.FirstClause = code_p->u.Otapl.d; + p->cs.p_code.FirstClause = code_p->y_u.Otapl.d; p->cs.p_code.FirstClause->opc = Yap_opcode(_try_me); } @@ -4158,7 +4158,7 @@ PrepareToEraseLogUpdClause(LogUpdClause *clau, DBRef dbr) if (p->cs.p_code.FirstClause == p->cs.p_code.LastClause) { if (p->cs.p_code.FirstClause != NULL) { code_p = p->cs.p_code.FirstClause; - code_p->u.Otapl.d = p->cs.p_code.FirstClause; + code_p->y_u.Otapl.d = p->cs.p_code.FirstClause; p->cs.p_code.TrueCodeOfPred = NEXTOP(code_p, Otapl); if (p->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) { p->OpcodeOfPred = Yap_opcode(_spy_pred); diff --git a/C/exec.c b/C/exec.c index 652fb5e85..57625f544 100755 --- a/C/exec.c +++ b/C/exec.c @@ -1587,9 +1587,9 @@ static int is_cleanup_cp(choiceptr cp_b) if (cp_b->cp_ap->opc != ORLAST_OPCODE) return FALSE; #ifdef YAPOR - pe = cp_b->cp_ap->u.Osblp.p0; + pe = cp_b->cp_ap->y_u.Osblp.p0; #else - pe = cp_b->cp_ap->u.p.p; + pe = cp_b->cp_ap->y_u.p.p; #endif /* YAPOR */ /* it has to be a cleanup and it has to be a completed goal, @@ -1902,7 +1902,7 @@ Yap_dogc( int extra_args, Term *tp USES_REGS ) int i; if (P && PREVOP(P,Osbpp)->opc == Yap_opcode(_call_usercpred)) { - arity = PREVOP(P,Osbpp)->u.Osbpp.p->ArityOfPE; + arity = PREVOP(P,Osbpp)->y_u.Osbpp.p->ArityOfPE; nextpc = P; } else { arity = 0; diff --git a/C/exo.c b/C/exo.c index 0c9087efd..8079b1706 100755 --- a/C/exo.c +++ b/C/exo.c @@ -467,30 +467,30 @@ add_index(struct index_t **ip, UInt bmap, PredEntry *ap, UInt count) ptr->opc = Yap_opcode(_try_exo); else ptr->opc = Yap_opcode(_try_all_exo); - ptr->u.lp.l = (yamop *)i; - ptr->u.lp.p = ap; + ptr->y_u.lp.l = (yamop *)i; + ptr->y_u.lp.p = ap; ptr = NEXTOP(ptr, lp); if (count) ptr->opc = Yap_opcode(_retry_exo); else ptr->opc = Yap_opcode(_retry_all_exo); - ptr->u.lp.p = ap; - ptr->u.lp.l = (yamop *)i; + ptr->y_u.lp.p = ap; + ptr->y_u.lp.l = (yamop *)i; ptr = NEXTOP(ptr, lp); for (j = 0; j < i->arity; j++) { ptr->opc = Yap_opcode(_get_atom_exo); #if PRECOMPUTE_REGADDRESS - ptr->u.x.x = (CELL) (XREGS + (j+1)); + ptr->y_u.x.x = (CELL) (XREGS + (j+1)); #else - ptr->u.x.x = j+1; + ptr->y_u.x.x = j+1; #endif ptr = NEXTOP(ptr, x); } ptr->opc = Yap_opcode(_procceed); - ptr->u.p.p = ap; + ptr->y_u.p.p = ap; ptr = NEXTOP(ptr, p); ptr->opc = Yap_opcode(_Ystop); - ptr->u.l.l = i->code; + ptr->y_u.l.l = i->code; Yap_inform_profiler_of_clause((char *)(i->code), (char *)NEXTOP(ptr,l), ap, GPROF_INDEX); if (ap->PredFlags & UDIPredFlag) { Yap_new_udi_clause( ap, NULL, (Term)ip); diff --git a/C/gprof.c b/C/gprof.c index 6ebe5c1c6..e9da4f597 100755 --- a/C/gprof.c +++ b/C/gprof.c @@ -934,10 +934,10 @@ prof_alrm(int signo, siginfo_t *si, void *scv) if (oop == _call_cpred || oop == _call_usercpred) { /* doing C-code */ - current_p = PREVOP(P,Osbpp)->u.Osbpp.p->CodeOfPred; + current_p = PREVOP(P,Osbpp)->y_u.Osbpp.p->CodeOfPred; } else if ((oop = Yap_op_from_opcode(P->opc)) == _execute_cpred) { /* doing C-code */ - current_p = P->u.pp.p->CodeOfPred; + current_p = P->y_u.pp.p->CodeOfPred; } else { current_p = P; } diff --git a/C/heapgc.c b/C/heapgc.c index 22ecb3b87..cbd69be2e 100755 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -451,7 +451,7 @@ push_registers(Int num_regs, yamop *nextop USES_REGS) /* push any live registers we might have hanging around */ if (nextop->opc == Yap_opcode(_move_back) || nextop->opc == Yap_opcode(_skip)) { - CELL *lab = (CELL *)(nextop->u.l.l); + CELL *lab = (CELL *)(nextop->y_u.l.l); CELL max = lab[0]; Int curr = lab[1]; lab += 2; @@ -547,7 +547,7 @@ pop_registers(Int num_regs, yamop *nextop USES_REGS) /* pop any live registers we might have hanging around */ if (nextop->opc == Yap_opcode(_move_back) || nextop->opc == Yap_opcode(_skip)) { - CELL *lab = (CELL *)(nextop->u.l.l); + CELL *lab = (CELL *)(nextop->y_u.l.l); CELL max = lab[0]; Int curr = lab[1]; lab += 2; @@ -2055,8 +2055,8 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose if (opnum == _or_else || opnum == _or_last) { /* ; choice point */ mark_environments((CELL_PTR) (gc_B->cp_a1), - -gc_B->cp_cp->u.Osblp.s / ((OPREG)sizeof(CELL)), - gc_B->cp_cp->u.Osblp.bmap + -gc_B->cp_cp->y_u.Osblp.s / ((OPREG)sizeof(CELL)), + gc_B->cp_cp->y_u.Osblp.bmap PASS_REGS); } else { /* choicepoint with arguments */ @@ -2107,10 +2107,10 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose } B = old_b; } - nargs = rtp->u.OtapFs.s+rtp->u.OtapFs.extra; + nargs = rtp->y_u.OtapFs.s+rtp->y_u.OtapFs.extra; break; case _jump: - rtp = rtp->u.l.l; + rtp = rtp->y_u.l.l; op = rtp->opc; opnum = Yap_op_from_opcode(op); goto restart_cp; @@ -2144,7 +2144,7 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose { CELL *vars_ptr, vars; vars_ptr = (CELL *)(GEN_CP(gc_B) + 1); - nargs = rtp->u.Otapl.s; + nargs = rtp->y_u.Otapl.s; while (nargs--) { mark_external_reference(vars_ptr PASS_REGS); vars_ptr++; @@ -2307,15 +2307,15 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose on the other hand it's the only way we can be sure we can reclaim space */ - yamop *end = rtp->u.OtaLl.n; + yamop *end = rtp->y_u.OtaLl.n; while (end->opc != trust_lu && end->opc != count_trust_lu && end->opc != profiled_trust_lu ) - end = end->u.OtaLl.n; - mark_ref_in_use((DBRef)end->u.OtILl.block PASS_REGS); + end = end->y_u.OtaLl.n; + mark_ref_in_use((DBRef)end->y_u.OtILl.block PASS_REGS); } /* mark timestamp */ - nargs = rtp->u.OtaLl.s+1; + nargs = rtp->y_u.OtaLl.s+1; break; case _count_retry_logical: { @@ -2324,13 +2324,13 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose on the other hand it's the only way we can be sure we can reclaim space */ - yamop *end = rtp->u.OtaLl.n; + yamop *end = rtp->y_u.OtaLl.n; while (Yap_op_from_opcode(end->opc) != _count_trust_logical) - end = end->u.OtaLl.n; - mark_ref_in_use((DBRef)end->u.OtILl.block PASS_REGS); + end = end->y_u.OtaLl.n; + mark_ref_in_use((DBRef)end->y_u.OtILl.block PASS_REGS); } /* mark timestamp */ - nargs = rtp->u.OtaLl.s+1; + nargs = rtp->y_u.OtaLl.s+1; break; case _profiled_retry_logical: { @@ -2339,28 +2339,28 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose on the other hand it's the only way we can be sure we can reclaim space */ - yamop *end = rtp->u.OtaLl.n; + yamop *end = rtp->y_u.OtaLl.n; while (Yap_op_from_opcode(end->opc) != _profiled_trust_logical) - end = end->u.OtaLl.n; - mark_ref_in_use((DBRef)end->u.OtILl.block PASS_REGS); + end = end->y_u.OtaLl.n; + mark_ref_in_use((DBRef)end->y_u.OtILl.block PASS_REGS); } /* mark timestamp */ - nargs = rtp->u.OtaLl.s+1; + nargs = rtp->y_u.OtaLl.s+1; break; case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: /* mark timestamp */ - mark_ref_in_use((DBRef)rtp->u.OtILl.block PASS_REGS); - nargs = rtp->u.OtILl.d->ClPred->ArityOfPE+1; + mark_ref_in_use((DBRef)rtp->y_u.OtILl.block PASS_REGS); + nargs = rtp->y_u.OtILl.d->ClPred->ArityOfPE+1; break; case _retry_exo: case _retry_exo_udi: case _retry_all_exo: - nargs = rtp->u.lp.p->ArityOfPE; + nargs = rtp->y_u.lp.p->ArityOfPE; break; case _retry_udi: - nargs = rtp->u.p.p->ArityOfPE; + nargs = rtp->y_u.p.p->ArityOfPE; break; #ifdef DEBUG case _retry_me: @@ -2375,14 +2375,14 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose fprintf(stderr,"OOPS in GC: gc not supported in this case!!!\n"); exit(1); } - nargs = rtp->u.Otapl.s; + nargs = rtp->y_u.Otapl.s; break; default: fprintf(stderr, "OOPS in GC: Unexpected opcode: %d\n", opnum); nargs = 0; #else default: - nargs = rtp->u.Otapl.s; + nargs = rtp->y_u.Otapl.s; #endif } @@ -2399,8 +2399,8 @@ mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose pt->opc != count_trust_lu && pt->opc != profiled_trust_lu ) - pt = pt->u.OtaLl.n; - mark_ref_in_use((DBRef)pt->u.OtILl.block PASS_REGS); + pt = pt->y_u.OtaLl.n; + mark_ref_in_use((DBRef)pt->y_u.OtILl.block PASS_REGS); } } /* for each saved register */ @@ -3050,8 +3050,8 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) case _or_last: sweep_environments((CELL_PTR)(gc_B->cp_a1), - -gc_B->cp_cp->u.Osblp.s / ((OPREG)sizeof(CELL)), - gc_B->cp_cp->u.Osblp.bmap + -gc_B->cp_cp->y_u.Osblp.s / ((OPREG)sizeof(CELL)), + gc_B->cp_cp->y_u.Osblp.bmap PASS_REGS); break; case _retry_profiled: @@ -3061,7 +3061,7 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) opnum = Yap_op_from_opcode(op); goto restart_cp; case _jump: - rtp = rtp->u.l.l; + rtp = rtp->y_u.l.l; op = rtp->opc; opnum = Yap_op_from_opcode(op); goto restart_cp; @@ -3094,7 +3094,7 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) CELL *vars_ptr, vars; sweep_environments(gc_B->cp_env, EnvSize(gc_B->cp_cp), EnvBMap(gc_B->cp_cp) PASS_REGS); vars_ptr = (CELL *)(GEN_CP(gc_B) + 1); - nargs = rtp->u.Otapl.s; + nargs = rtp->y_u.Otapl.s; while(nargs--) { CELL cp_cell = *vars_ptr; if (MARKED_PTR(vars_ptr)) { @@ -3288,12 +3288,12 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) case _count_retry_logical: case _profiled_retry_logical: /* sweep timestamp */ - sweep_b(gc_B, rtp->u.OtaLl.s+1 PASS_REGS); + sweep_b(gc_B, rtp->y_u.OtaLl.s+1 PASS_REGS); break; case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: - sweep_b(gc_B, rtp->u.OtILl.d->ClPred->ArityOfPE+1 PASS_REGS); + sweep_b(gc_B, rtp->y_u.OtILl.d->ClPred->ArityOfPE+1 PASS_REGS); break; case _retry2: sweep_b(gc_B, 2 PASS_REGS); @@ -3305,12 +3305,12 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) sweep_b(gc_B, 4 PASS_REGS); break; case _retry_udi: - sweep_b(gc_B, rtp->u.p.p->ArityOfPE PASS_REGS); + sweep_b(gc_B, rtp->y_u.p.p->ArityOfPE PASS_REGS); break; case _retry_exo: case _retry_exo_udi: case _retry_all_exo: - sweep_b(gc_B, rtp->u.lp.p->ArityOfPE PASS_REGS); + sweep_b(gc_B, rtp->y_u.lp.p->ArityOfPE PASS_REGS); break; case _retry_c: case _retry_userc: @@ -3318,8 +3318,8 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) register CELL_PTR saved_reg; /* for each extra saved register */ - for (saved_reg = &(gc_B->cp_a1)+rtp->u.OtapFs.s; - saved_reg < &(gc_B->cp_a1)+rtp->u.OtapFs.s+rtp->u.OtapFs.extra; + for (saved_reg = &(gc_B->cp_a1)+rtp->y_u.OtapFs.s; + saved_reg < &(gc_B->cp_a1)+rtp->y_u.OtapFs.s+rtp->y_u.OtapFs.extra; saved_reg++) { CELL cp_cell = *saved_reg; if (MARKED_PTR(saved_reg)) { @@ -3332,7 +3332,7 @@ sweep_choicepoints(choiceptr gc_B USES_REGS) } /* continue to clean environments and arguments */ default: - sweep_b(gc_B,rtp->u.Otapl.s PASS_REGS); + sweep_b(gc_B,rtp->y_u.Otapl.s PASS_REGS); } /* link to prev choicepoint */ diff --git a/C/index.c b/C/index.c index 2d2b1ee94..f4cc7c4ea 100755 --- a/C/index.c +++ b/C/index.c @@ -495,7 +495,7 @@ static char SccsId[] = "%W% %G%"; #include "cut_c.h" #if defined(YAPOR) || defined(THREADS) -#define SET_JLBL(X) jlbl = &(ipc->u.X) +#define SET_JLBL(X) jlbl = &(ipc->y_u.X) #else #define SET_JLBL(X) #endif @@ -513,33 +513,33 @@ cleanup_sw_on_clauses(CELL larg, UInt sz, OPCODE ecls) } else { yamop *xp = (yamop *)larg; if (xp->opc == ecls) { - if (xp->u.sssllp.s3 == 1) { - UInt nsz = sz + (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->u.sssllp.s1*sizeof(yamop *); + if (xp->y_u.sssllp.s3 == 1) { + UInt nsz = sz + (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->y_u.sssllp.s1*sizeof(yamop *); LOCK(ExpandClausesListLock); if (ExpandClausesFirst == xp) - ExpandClausesFirst = xp->u.sssllp.snext; + ExpandClausesFirst = xp->y_u.sssllp.snext; if (ExpandClausesLast == xp) { - ExpandClausesLast = xp->u.sssllp.sprev; + ExpandClausesLast = xp->y_u.sssllp.sprev; } - if (xp->u.sssllp.sprev) { - xp->u.sssllp.sprev->u.sssllp.snext = xp->u.sssllp.snext; + if (xp->y_u.sssllp.sprev) { + xp->y_u.sssllp.sprev->y_u.sssllp.snext = xp->y_u.sssllp.snext; } - if (xp->u.sssllp.snext) { - xp->u.sssllp.snext->u.sssllp.sprev = xp->u.sssllp.sprev; + if (xp->y_u.sssllp.snext) { + xp->y_u.sssllp.snext->y_u.sssllp.sprev = xp->y_u.sssllp.sprev; } UNLOCK(ExpandClausesListLock); #if DEBUG Yap_ExpandClauses--; - Yap_expand_clauses_sz -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->u.sssllp.s1*sizeof(yamop *); + Yap_expand_clauses_sz -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->y_u.sssllp.s1*sizeof(yamop *); #endif - if (xp->u.sssllp.p->PredFlags & LogUpdatePredFlag) { - Yap_LUIndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+xp->u.sssllp.s1*sizeof(yamop *); + if (xp->y_u.sssllp.p->PredFlags & LogUpdatePredFlag) { + Yap_LUIndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+xp->y_u.sssllp.s1*sizeof(yamop *); } else - Yap_IndexSpace_EXT -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->u.sssllp.s1*sizeof(yamop *); + Yap_IndexSpace_EXT -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+xp->y_u.sssllp.s1*sizeof(yamop *); Yap_FreeCodeSpace((char *)xp); return nsz; } else { - xp->u.sssllp.s3--; + xp->y_u.sssllp.s3--; return sz; } } else { @@ -562,11 +562,11 @@ recover_from_failed_susp_on_cls(struct intermediates *cint, UInt sz) case enter_lu_op: if (cpc->rnd4) { yamop *code_p = (yamop *)cpc->rnd4; - yamop *first = code_p->u.Illss.l1; - yamop *last = code_p->u.Illss.l2; + yamop *first = code_p->y_u.Illss.l1; + yamop *last = code_p->y_u.Illss.l2; while (first) { - yamop *next = first->u.OtaLl.n; - LogUpdClause *cl = first->u.OtaLl.d; + yamop *next = first->y_u.OtaLl.n; + LogUpdClause *cl = first->y_u.OtaLl.d; cl->ClRefCount--; Yap_FreeCodeSpace((char *)first); if (first == last) @@ -977,12 +977,12 @@ move_next(ClauseDef *clause, UInt regno) return; case _p_db_ref_x: case _p_float_x: - if (wreg == cl->u.xl.x) { + if (wreg == cl->y_u.xl.x) { clause->CurrentCode = NEXTOP(cl,xl); } return; case _get_list: - if (wreg == cl->u.x.x) { + if (wreg == cl->y_u.x.x) { clause->CurrentCode = NEXTOP(cl,x); } return; @@ -994,7 +994,7 @@ move_next(ClauseDef *clause, UInt regno) case _glist_valy: return; case _get_atom: - if (wreg == cl->u.xc.x) { + if (wreg == cl->y_u.xc.x) { clause->CurrentCode = NEXTOP(cl,xc); } return; @@ -1015,7 +1015,7 @@ move_next(ClauseDef *clause, UInt regno) case _get_bigint: */ case _get_struct: - if (wreg == cl->u.xfa.x) { + if (wreg == cl->y_u.xfa.x) { clause->CurrentCode = NEXTOP(cl,xfa); } default: @@ -1147,11 +1147,11 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) break; case _unify_n_voids: case _unify_l_n_voids: - if (argno <= cl->u.os.s) { + if (argno <= cl->y_u.os.s) { clause->Tag = (CELL)NULL; return; } - argno -= cl->u.os.s; + argno -= cl->y_u.os.s; case _unify_n_voids_write: case _unify_l_n_voids_write: cl = NEXTOP(cl,os); @@ -1159,7 +1159,7 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) case _unify_atom: case _unify_l_atom: if (argno == 1) { - clause->Tag = cl->u.oc.c; + clause->Tag = cl->y_u.oc.c; return; } argno--; @@ -1175,7 +1175,7 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) case _unify_l_float: if (argno == 1) { clause->Tag = AbsAppl((CELL *)FunctorDouble); - clause->ucd.t_ptr = AbsAppl(cl->u.od.d); + clause->ucd.t_ptr = AbsAppl(cl->y_u.od.d); return; } cl = NEXTOP(cl,od); @@ -1185,7 +1185,7 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) case _unify_l_longint: if (argno == 1) { clause->Tag = AbsAppl((CELL *)FunctorLongInt); - clause->ucd.t_ptr = AbsAppl(cl->u.oi.i); + clause->ucd.t_ptr = AbsAppl(cl->y_u.oi.i); return; } argno--; @@ -1195,7 +1195,7 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) case _unify_l_bigint: if (argno == 1) { clause->Tag = AbsAppl((CELL *)FunctorBigInt); - clause->ucd.t_ptr = cl->u.oc.c; + clause->ucd.t_ptr = cl->y_u.oc.c; return; } cl = NEXTOP(cl,oc); @@ -1205,30 +1205,30 @@ add_arg_info(ClauseDef *clause, PredEntry *ap, UInt argno) case _unify_l_string: if (argno == 1) { clause->Tag = AbsAppl((CELL *)FunctorString); - clause->ucd.t_ptr = cl->u.ou.ut; + clause->ucd.t_ptr = cl->y_u.ou.ut; return; } cl = NEXTOP(cl,ou); argno--; break; case _unify_n_atoms: - if (argno <= cl->u.osc.s) { - clause->Tag = cl->u.osc.c; + if (argno <= cl->y_u.osc.s) { + clause->Tag = cl->y_u.osc.c; return; } - argno -= cl->u.osc.s; + argno -= cl->y_u.osc.s; case _unify_n_atoms_write: cl = NEXTOP(cl,osc); break; case _unify_struct: case _unify_l_struc: if (argno == 1) { - clause->Tag = AbsAppl((CELL *)cl->u.ofa.f); + clause->Tag = AbsAppl((CELL *)cl->y_u.ofa.f); clause->ucd.WorkPC = NEXTOP(cl,ofa); return; } /* must skip next n arguments */ - argno += cl->u.ofa.a-1; + argno += cl->y_u.ofa.a-1; case _unify_l_struc_write: case _unify_struct_write: cl = NEXTOP(cl,ofa); @@ -1343,11 +1343,11 @@ skip_to_arg(ClauseDef *clause, PredEntry *ap, UInt argno, int at_point) break; case _unify_n_voids: case _unify_l_n_voids: - if (argno <= cl->u.os.s) { + if (argno <= cl->y_u.os.s) { clause->CurrentCode = clause->Code; return; } else { - argno -= cl->u.os.s; + argno -= cl->y_u.os.s; } case _unify_n_voids_write: case _unify_l_n_voids_write: @@ -1901,8 +1901,8 @@ suspend_indexing(ClauseDef *min, ClauseDef *max, PredEntry *ap, struct intermedi if (cint->expand_block && cint->expand_block != (yamop *)(&(ap->cs.p_code.ExpandCode)) && - cint->expand_block->u.sssllp.s2 < 2*(max-min)) { - cint->expand_block->u.sssllp.s3++; + cint->expand_block->y_u.sssllp.s2 < 2*(max-min)) { + cint->expand_block->y_u.sssllp.s3++; return (UInt)(cint->expand_block); } if (cls < tcls/8) { @@ -1934,10 +1934,10 @@ suspend_indexing(ClauseDef *min, ClauseDef *max, PredEntry *ap, struct intermedi Yap_inform_profiler_of_clause(ncode, (CODEADDR)ncode+sz, ap, GPROF_NEW_EXPAND_BLOCK); /* create an expand_block */ ncode->opc = Yap_opcode(_expand_clauses); - ncode->u.sssllp.p = ap; - ncode->u.sssllp.s1 = tels; - ncode->u.sssllp.s2 = cls; - ncode->u.sssllp.s3 = 1; + ncode->y_u.sssllp.p = ap; + ncode->y_u.sssllp.s1 = tels; + ncode->y_u.sssllp.s2 = cls; + ncode->y_u.sssllp.s3 = 1; st = (yamop **)NEXTOP(ncode,sssllp); while (min <= max) { *st++ = min->Code; @@ -1948,10 +1948,10 @@ suspend_indexing(ClauseDef *min, ClauseDef *max, PredEntry *ap, struct intermedi cls++; } LOCK(ExpandClausesListLock); - ncode->u.sssllp.snext = ExpandClausesFirst; - ncode->u.sssllp.sprev = NULL; + ncode->y_u.sssllp.snext = ExpandClausesFirst; + ncode->y_u.sssllp.sprev = NULL; if (ExpandClausesFirst) - ExpandClausesFirst->u.sssllp.sprev = ncode; + ExpandClausesFirst->y_u.sssllp.sprev = ncode; ExpandClausesFirst = ncode; if (ExpandClausesLast == NULL) ExpandClausesLast = ncode; @@ -1964,31 +1964,31 @@ suspend_indexing(ClauseDef *min, ClauseDef *max, PredEntry *ap, struct intermedi static void recover_ecls_block(yamop *ipc) { - ipc->u.sssllp.s3--; - if (!ipc->u.sssllp.s3) { + ipc->y_u.sssllp.s3--; + if (!ipc->y_u.sssllp.s3) { LOCK(ExpandClausesListLock); if (ExpandClausesFirst == ipc) - ExpandClausesFirst = ipc->u.sssllp.snext; + ExpandClausesFirst = ipc->y_u.sssllp.snext; if (ExpandClausesLast == ipc) { - ExpandClausesLast = ipc->u.sssllp.sprev; + ExpandClausesLast = ipc->y_u.sssllp.sprev; } - if (ipc->u.sssllp.sprev) { - ipc->u.sssllp.sprev->u.sssllp.snext = ipc->u.sssllp.snext; + if (ipc->y_u.sssllp.sprev) { + ipc->y_u.sssllp.sprev->y_u.sssllp.snext = ipc->y_u.sssllp.snext; } - if (ipc->u.sssllp.snext) { - ipc->u.sssllp.snext->u.sssllp.sprev = ipc->u.sssllp.sprev; + if (ipc->y_u.sssllp.snext) { + ipc->y_u.sssllp.snext->y_u.sssllp.sprev = ipc->y_u.sssllp.sprev; } UNLOCK(ExpandClausesListLock); #if DEBUG Yap_ExpandClauses--; - Yap_expand_clauses_sz -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+ipc->u.sssllp.s1*sizeof(yamop *); + Yap_expand_clauses_sz -= (UInt)(NEXTOP((yamop *)NULL,sssllp))+ipc->y_u.sssllp.s1*sizeof(yamop *); #endif /* no dangling pointers for gprof */ Yap_InformOfRemoval(ipc); - if (ipc->u.sssllp.p->PredFlags & LogUpdatePredFlag) { - Yap_LUIndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+ipc->u.sssllp.s1*sizeof(yamop *); + if (ipc->y_u.sssllp.p->PredFlags & LogUpdatePredFlag) { + Yap_LUIndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+ipc->y_u.sssllp.s1*sizeof(yamop *); } else - Yap_IndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+ipc->u.sssllp.s1*sizeof(yamop *); + Yap_IndexSpace_EXT -= (UInt)NEXTOP((yamop *)NULL,sssllp)+ipc->y_u.sssllp.s1*sizeof(yamop *); Yap_FreeCodeSpace((char *)ipc); } } @@ -2109,7 +2109,7 @@ do_funcs(GroupDef *grp, Term t, struct intermediates *cint, UInt argno, int firs /* delay non-trivial indexing if (min != max && !IsExtensionFunctor(f)) { - ifs->u.Label = suspend_indexing(min, max, ap, cint); + ifs->y_u.Label = suspend_indexing(min, max, ap, cint); } else */ @@ -3331,10 +3331,10 @@ increase_expand_depth(yamop *ipc, struct intermediates *cint) cint->term_depth++; if (ipc->opc == Yap_opcode(_switch_on_sub_arg_type) && - (ncode = ipc->u.sllll.l4)->opc == Yap_opcode(_expand_clauses)) { - if (ncode->u.sssllp.s2 != cint->last_depth_size) { + (ncode = ipc->y_u.sllll.l4)->opc == Yap_opcode(_expand_clauses)) { + if (ncode->y_u.sssllp.s2 != cint->last_depth_size) { cint->last_index_new_depth = cint->term_depth; - cint->last_depth_size = ncode->u.sssllp.s2; + cint->last_depth_size = ncode->y_u.sssllp.s2; } } } @@ -3390,12 +3390,12 @@ expand_index(struct intermediates *cint) { case _retry: /* this clause had no indexing */ if (ap->PredFlags & LogUpdatePredFlag) { - first = ClauseCodeToLogUpdClause(ipc->u.Otapl.d)->ClNext->ClCode; + first = ClauseCodeToLogUpdClause(ipc->y_u.Otapl.d)->ClNext->ClCode; } else if (ap->PredFlags & MegaClausePredFlag) { MegaClause *mcl = ClauseCodeToMegaClause(ap->cs.p_code.FirstClause); - first = (yamop *)((char *)ipc->u.Otapl.d)+mcl->ClItemSize; + first = (yamop *)((char *)ipc->y_u.Otapl.d)+mcl->ClItemSize; } else { - first = ClauseCodeToStaticClause(ipc->u.Otapl.d)->ClNext->ClCode; + first = ClauseCodeToStaticClause(ipc->y_u.Otapl.d)->ClNext->ClCode; } isfirstcl = FALSE; ipc = NEXTOP(ipc,Otapl); @@ -3404,7 +3404,7 @@ expand_index(struct intermediates *cint) { case _table_try: case _table_retry: /* this clause had no indexing */ - first = ClauseCodeToStaticClause(PREVOP(ipc->u.Otapl.d,Otapl))->ClNext->ClCode; + first = ClauseCodeToStaticClause(PREVOP(ipc->y_u.Otapl.d,Otapl))->ClNext->ClCode; isfirstcl = FALSE; ipc = NEXTOP(ipc,Otapl); break; @@ -3417,12 +3417,12 @@ expand_index(struct intermediates *cint) { case _retry4: case _try_in: if (ap->PredFlags & LogUpdatePredFlag) { - first = ClauseCodeToLogUpdClause(ipc->u.l.l)->ClNext->ClCode; + first = ClauseCodeToLogUpdClause(ipc->y_u.l.l)->ClNext->ClCode; } else if (ap->PredFlags & MegaClausePredFlag) { MegaClause *mcl = ClauseCodeToMegaClause(ap->cs.p_code.FirstClause); - first = (yamop *)((char *)ipc->u.Otapl.d)+mcl->ClItemSize; + first = (yamop *)((char *)ipc->y_u.Otapl.d)+mcl->ClItemSize; } else { - first = ClauseCodeToStaticClause(ipc->u.l.l)->ClNext->ClCode; + first = ClauseCodeToStaticClause(ipc->y_u.l.l)->ClNext->ClCode; } isfirstcl = FALSE; ipc = NEXTOP(ipc,l); @@ -3439,7 +3439,7 @@ expand_index(struct intermediates *cint) { /* ok, we found the start for an indexing block, but we don't if we are going to operate here or not */ /* if we are to commit here, alt will tell us where */ - alt = ipc->u.Otapl.d; + alt = ipc->y_u.Otapl.d; ipc = NEXTOP(ipc,Otapl); /* start of a group, reset stack */ sp = stack; @@ -3469,16 +3469,16 @@ expand_index(struct intermediates *cint) { case _retry_logical: case _count_retry_logical: case _profiled_retry_logical: - ipc = ipc->u.OtaLl.n; + ipc = ipc->y_u.OtaLl.n; break; case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: - ipc = ipc->u.OtILl.n; + ipc = ipc->y_u.OtILl.n; break; case _enter_lu_pred: /* no useful info */ - ipc = ipc->u.Illss.l1; + ipc = ipc->y_u.Illss.l1; break; case _retry_profiled: case _count_retry: @@ -3487,7 +3487,7 @@ expand_index(struct intermediates *cint) { break; case _jump: /* just skip for now, but should worry about memory management */ - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; /* I don't know how up I will go */ parentcl.si = NULL; break; @@ -3500,22 +3500,22 @@ expand_index(struct intermediates *cint) { break; case _jump_if_var: if (IsVarTerm(Deref(ARG1))) { - labp = &(ipc->u.l.l); - ipc = ipc->u.l.l; + labp = &(ipc->y_u.l.l); + ipc = ipc->y_u.l.l; parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); } else { ipc = NEXTOP(ipc,l); } break; case _jump_if_nonvar: - argno = arg_from_x(ipc->u.xll.x); + argno = arg_from_x(ipc->y_u.xll.x); t = Deref(XREGS[argno]); i = 0; /* expand_index expects to find the new argument */ if (!IsVarTerm(t)) { argno--; - labp = &(ipc->u.xll.l1); - ipc = ipc->u.xll.l1; + labp = &(ipc->y_u.xll.l1); + ipc = ipc->y_u.xll.l1; parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); } else { @@ -3543,8 +3543,8 @@ expand_index(struct intermediates *cint) { ipc = NEXTOP(ipc,e); break; case _user_switch: - labp = &(ipc->u.lp.l); - ipc = ipc->u.lp.l; + labp = &(ipc->y_u.lp.l); + ipc = ipc->y_u.lp.l; break; /* instructions type e */ case _switch_on_type: @@ -3553,21 +3553,21 @@ expand_index(struct intermediates *cint) { argno = 1; i = 0; if (IsVarTerm(t)) { - labp = &(ipc->u.llll.l4); - ipc = ipc->u.llll.l4; + labp = &(ipc->y_u.llll.l4); + ipc = ipc->y_u.llll.l4; } else if (IsPairTerm(t)) { sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint); s_reg = RepPair(t); - labp = &(ipc->u.llll.l1); - ipc = ipc->u.llll.l1; + labp = &(ipc->y_u.llll.l1); + ipc = ipc->y_u.llll.l1; increase_expand_depth(ipc, cint); } else if (IsApplTerm(t)) { sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint); - ipc = ipc->u.llll.l3; + ipc = ipc->y_u.llll.l3; increase_expand_depth(ipc, cint); } else { sp = push_stack(sp, argno, t, TermNil, cint); - ipc = ipc->u.llll.l2; + ipc = ipc->y_u.llll.l2; } parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); break; @@ -3577,17 +3577,17 @@ expand_index(struct intermediates *cint) { argno = 1; i = 0; if (IsVarTerm(t)) { - labp = &(ipc->u.ollll.l4); - ipc = ipc->u.ollll.l4; + labp = &(ipc->y_u.ollll.l4); + ipc = ipc->y_u.ollll.l4; } else if (IsPairTerm(t)) { s_reg = RepPair(t); - labp = &(ipc->u.ollll.l1); + labp = &(ipc->y_u.ollll.l1); sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint); - ipc = ipc->u.ollll.l1; + ipc = ipc->y_u.ollll.l1; increase_expand_depth(ipc, cint); } else if (t == TermNil) { sp = push_stack(sp, 1, t, TermNil, cint); - ipc = ipc->u.ollll.l2; + ipc = ipc->y_u.ollll.l2; increase_expand_depth(ipc, cint); } else { Term tn; @@ -3598,53 +3598,53 @@ expand_index(struct intermediates *cint) { tn = t; } sp = push_stack(sp, argno, tn, TermNil, cint); - ipc = ipc->u.ollll.l3; + ipc = ipc->y_u.ollll.l3; } parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); break; case _switch_on_arg_type: zero_expand_depth(ap, cint); - argno = arg_from_x(ipc->u.xllll.x); + argno = arg_from_x(ipc->y_u.xllll.x); i = 0; t = Deref(XREGS[argno]); if (IsVarTerm(t)) { - labp = &(ipc->u.xllll.l4); - ipc = ipc->u.xllll.l4; + labp = &(ipc->y_u.xllll.l4); + ipc = ipc->y_u.xllll.l4; } else if (IsPairTerm(t)) { s_reg = RepPair(t); sp = push_stack(sp, argno, AbsPair(NULL), TermNil, cint); - labp = &(ipc->u.xllll.l1); - ipc = ipc->u.xllll.l1; + labp = &(ipc->y_u.xllll.l1); + ipc = ipc->y_u.xllll.l1; increase_expand_depth(ipc, cint); } else if (IsApplTerm(t)) { sp = push_stack(sp, argno, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint); - ipc = ipc->u.xllll.l3; + ipc = ipc->y_u.xllll.l3; increase_expand_depth(ipc, cint); } else { sp = push_stack(sp, argno, t, TermNil, cint); - ipc = ipc->u.xllll.l2; + ipc = ipc->y_u.xllll.l2; } parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); break; case _switch_on_sub_arg_type: - i = ipc->u.sllll.s; + i = ipc->y_u.sllll.s; t = Deref(s_reg[i]); if (i != arity-1) is_last_arg = FALSE; t = Deref(s_reg[i]); if (IsVarTerm(t)) { - labp = &(ipc->u.sllll.l4); - ipc = ipc->u.sllll.l4; + labp = &(ipc->y_u.sllll.l4); + ipc = ipc->y_u.sllll.l4; i++; } else if (IsPairTerm(t)) { s_reg = RepPair(t); sp = push_stack(sp, -i-1, AbsPair(NULL), TermNil, cint); - labp = &(ipc->u.sllll.l1); - ipc = ipc->u.sllll.l1; + labp = &(ipc->y_u.sllll.l1); + ipc = ipc->y_u.sllll.l1; i = 0; increase_expand_depth(ipc, cint); } else if (IsApplTerm(t)) { sp = push_stack(sp, -i-1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint); - ipc = ipc->u.sllll.l3; + ipc = ipc->y_u.sllll.l3; i = 0; increase_expand_depth(ipc, cint); } else { @@ -3652,7 +3652,7 @@ expand_index(struct intermediates *cint) { sp = push_stack(sp, -i-1, t, cint); */ sp = push_stack(sp, -i-1, t, TermNil, cint); - ipc = ipc->u.sllll.l2; + ipc = ipc->y_u.sllll.l2; i++; } parentcl = index_jmp(parentcl, parentcl, ipc, is_lu, e_code); @@ -3673,19 +3673,19 @@ expand_index(struct intermediates *cint) { s_reg = RepAppl(t); f = (Functor)(*s_reg++); if (op == _switch_on_func) { - fe = lookup_f_hash(f,ipc->u.sssl.l,ipc->u.sssl.s); + fe = lookup_f_hash(f,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } else { - fe = lookup_f(f,ipc->u.sssl.l,ipc->u.sssl.s); + fe = lookup_f(f,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } newpc = fe->u_f.labp; labp = &(fe->u_f.labp); if (newpc == e_code) { /* we found it */ - parentcl = code_to_indexcl(ipc->u.sssl.l,is_lu); + parentcl = code_to_indexcl(ipc->y_u.sssl.l,is_lu); ipc = NULL; } else { - ClausePointer npar = code_to_indexcl(ipc->u.sssl.l,is_lu); + ClausePointer npar = code_to_indexcl(ipc->y_u.sssl.l,is_lu); ipc = newpc; parentcl = index_jmp(npar, parentcl, ipc, is_lu, e_code); } @@ -3698,18 +3698,18 @@ expand_index(struct intermediates *cint) { AtomSwiEntry *ae; if (op == _switch_on_cons) { - ae = lookup_c_hash(t,ipc->u.sssl.l,ipc->u.sssl.s); + ae = lookup_c_hash(t,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } else { - ae = lookup_c(t,ipc->u.sssl.l,ipc->u.sssl.s); + ae = lookup_c(t,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } labp = &(ae->u_a.labp); if (ae->u_a.labp == e_code) { /* we found it */ - parentcl = code_to_indexcl(ipc->u.sssl.l,is_lu); + parentcl = code_to_indexcl(ipc->y_u.sssl.l,is_lu); ipc = NULL; } else { - ClausePointer npar = code_to_indexcl(ipc->u.sssl.l,is_lu); + ClausePointer npar = code_to_indexcl(ipc->y_u.sssl.l,is_lu); ipc = ae->u_a.labp; parentcl = index_jmp(npar, parentcl, ipc, is_lu, e_code); } @@ -3720,7 +3720,7 @@ expand_index(struct intermediates *cint) { if (alt != NULL && ap->PredFlags & LogUpdatePredFlag) { op_numbers fop = Yap_op_from_opcode(alt->opc); if (fop == _enter_lu_pred) - alt = alt->u.Illss.l1; + alt = alt->y_u.Illss.l1; } ipc = NULL; break; @@ -3735,7 +3735,7 @@ expand_index(struct intermediates *cint) { ipc = NULL; } else { /* backtrack */ - first = alt->u.Otapl.d; + first = alt->y_u.Otapl.d; ipc = alt; alt = NULL; } @@ -3767,20 +3767,20 @@ expand_index(struct intermediates *cint) { op_numbers op = Yap_op_from_opcode(alt->opc); /* can we be here */ if (op >= _retry2 && op <= _retry4) { - last = alt->u.l.l; + last = alt->y_u.l.l; } else { - last = alt->u.Otapl.d; + last = alt->y_u.Otapl.d; } } else { op_numbers op = Yap_op_from_opcode(alt->opc); if (op == _retry || op == _trust) { - last = alt->u.Otapl.d; + last = alt->y_u.Otapl.d; #ifdef TABLING } else if (op == _table_retry || op == _table_trust) { - last = PREVOP(alt->u.Otapl.d,Otapl); + last = PREVOP(alt->y_u.Otapl.d,Otapl); #endif /* TABLING */ } else if (op >= _retry2 && op <= _retry4) { - last = alt->u.l.l; + last = alt->y_u.l.l; } } fail_l = (UInt)alt; @@ -3791,7 +3791,7 @@ expand_index(struct intermediates *cint) { /* ok, we know how many clauses */ yamop *ipc = *labp; /* check all slots, not just the ones with values */ - COUNT nclauses = ipc->u.sssllp.s1; + COUNT nclauses = ipc->y_u.sssllp.s1; yamop **clp = (yamop **)NEXTOP(ipc,sssllp); cint->expand_block = ipc; @@ -4256,36 +4256,36 @@ pop_path(path_stack_entry **spp, ClauseDef *clp, PredEntry *ap, struct intermedi static int table_fe_overflow(yamop *pc, Functor f) { - if (pc->u.sssl.s <= MIN_HASH_ENTRIES) { + if (pc->y_u.sssl.s <= MIN_HASH_ENTRIES) { /* we cannot expand otherwise */ COUNT i; - FuncSwiEntry *csw = (FuncSwiEntry *)pc->u.sssl.l; + FuncSwiEntry *csw = (FuncSwiEntry *)pc->y_u.sssl.l; - for (i=0; i < pc->u.sssl.s; i++,csw++) { + for (i=0; i < pc->y_u.sssl.s; i++,csw++) { if (csw->Tag == f) return FALSE; } return TRUE; } else { - COUNT free = pc->u.sssl.s-pc->u.sssl.e; - return (!free || pc->u.sssl.s/free > 4); + COUNT free = pc->y_u.sssl.s-pc->y_u.sssl.e; + return (!free || pc->y_u.sssl.s/free > 4); } } static int table_ae_overflow(yamop *pc, Term at) { - if (pc->u.sssl.s <= MIN_HASH_ENTRIES) { + if (pc->y_u.sssl.s <= MIN_HASH_ENTRIES) { /* check if we are already there */ COUNT i; - AtomSwiEntry *csw = (AtomSwiEntry *)pc->u.sssl.l; + AtomSwiEntry *csw = (AtomSwiEntry *)pc->y_u.sssl.l; - for (i=0; i < pc->u.sssl.s; i++,csw++) { + for (i=0; i < pc->y_u.sssl.s; i++,csw++) { if (csw->Tag == at) return FALSE; } return TRUE; } else { - COUNT free = pc->u.sssl.s-pc->u.sssl.e; - return (!free || pc->u.sssl.s/free > 4); + COUNT free = pc->y_u.sssl.s-pc->y_u.sssl.e; + return (!free || pc->y_u.sssl.s/free > 4); } } @@ -4346,16 +4346,16 @@ static AtomSwiEntry * expand_ctable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Term at) { PredEntry *ap = cint->CurrentPred; - int n = pc->u.sssl.s, i, i0 = n; + int n = pc->y_u.sssl.s, i, i0 = n; UInt fail_l = Zero; - AtomSwiEntry *old_ae = (AtomSwiEntry *)(pc->u.sssl.l), *target; + AtomSwiEntry *old_ae = (AtomSwiEntry *)(pc->y_u.sssl.l), *target; if (n > MIN_HASH_ENTRIES) { AtomSwiEntry *tmp = old_ae; int i; n = 1; - for (i = 0; i < pc->u.sssl.s; i++,tmp++) { + for (i = 0; i < pc->y_u.sssl.s; i++,tmp++) { if (tmp->Tag != Zero) n++; else fail_l = tmp->u_a.Label; } @@ -4367,20 +4367,20 @@ expand_ctable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Term at) int cases = MIN_HASH_ENTRIES, i, n0; n0 = n+1+n/4; while (cases < n0) cases *= 2; - if (cases == pc->u.sssl.s) { + if (cases == pc->y_u.sssl.s) { return fetch_centry(old_ae, at, n-1, n); } /* initialise */ target = (AtomSwiEntry *)emit_switch_space(cases, sizeof(AtomSwiEntry), cint, 0); pc->opc = Yap_opcode(_switch_on_cons); - pc->u.sssl.s = cases; + pc->y_u.sssl.s = cases; for (i=0; iopc = Yap_opcode(_if_cons); - pc->u.sssl.s = n; + pc->y_u.sssl.s = n; target = (AtomSwiEntry *)emit_switch_space(n+1, sizeof(AtomSwiEntry), cint, 0); target[n].Tag = Zero; target[n].u_a.Label = fail_l; @@ -4396,8 +4396,8 @@ expand_ctable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Term at) } /* support for threads */ if (blk) - replace_index_block(blk, pc->u.sssl.l, (yamop *)target, ap); - pc->u.sssl.l = (yamop *)target; + replace_index_block(blk, pc->y_u.sssl.l, (yamop *)target, ap); + pc->y_u.sssl.l = (yamop *)target; return fetch_centry(target, at, n-1, n); } @@ -4405,16 +4405,16 @@ static FuncSwiEntry * expand_ftable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Functor f) { PredEntry *ap = cint->CurrentPred; - int n = pc->u.sssl.s, i, i0 = n; + int n = pc->y_u.sssl.s, i, i0 = n; UInt fail_l = Zero; - FuncSwiEntry *old_fe = (FuncSwiEntry *)(pc->u.sssl.l), *target; + FuncSwiEntry *old_fe = (FuncSwiEntry *)(pc->y_u.sssl.l), *target; if (n > MIN_HASH_ENTRIES) { FuncSwiEntry *tmp = old_fe; int i; n = 1; - for (i = 0; i < pc->u.sssl.s; i++,tmp++) { + for (i = 0; i < pc->y_u.sssl.s; i++,tmp++) { if (tmp->Tag != Zero) n++; else fail_l = tmp->u_f.Label; } @@ -4427,13 +4427,13 @@ expand_ftable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Functor f n0 = n+1+n/4; while (cases < n0) cases *= 2; - if (cases == pc->u.sssl.s) { + if (cases == pc->y_u.sssl.s) { return fetch_fentry(old_fe, f, n-1, n); } pc->opc = Yap_opcode(_switch_on_func); - pc->u.sssl.s = cases; - pc->u.sssl.e = n; - pc->u.sssl.w = 0; + pc->y_u.sssl.s = cases; + pc->y_u.sssl.e = n; + pc->y_u.sssl.w = 0; /* initialise */ target = (FuncSwiEntry *)emit_switch_space(cases, sizeof(FuncSwiEntry), cint, FuncSwitchMask); for (i=0; iopc = Yap_opcode(_if_func); - pc->u.sssl.s = n; - pc->u.sssl.e = n; - pc->u.sssl.w = 0; + pc->y_u.sssl.s = n; + pc->y_u.sssl.e = n; + pc->y_u.sssl.w = 0; target = (FuncSwiEntry *)emit_switch_space(n+1, sizeof(FuncSwiEntry), cint, FuncSwitchMask); target[n].Tag = Zero; target[n].u_f.Label = fail_l; @@ -4458,8 +4458,8 @@ expand_ftable(yamop *pc, ClauseUnion *blk, struct intermediates *cint, Functor f ifs->u_f.Label = old_fe->u_f.Label; } } - replace_index_block(blk, pc->u.sssl.l, (yamop *)target, ap); - pc->u.sssl.l = (yamop *)target; + replace_index_block(blk, pc->y_u.sssl.l, (yamop *)target, ap); + pc->y_u.sssl.l = (yamop *)target; return fetch_fentry(target, f, n-1, n); } @@ -4502,38 +4502,38 @@ kill_block(path_stack_entry *sp, PredEntry *ap) static LogUpdClause * find_last_clause(yamop *start) { - while (start->u.OtaLl.d->ClFlags & ErasedMask) - start = start->u.OtaLl.n; + while (start->y_u.OtaLl.d->ClFlags & ErasedMask) + start = start->y_u.OtaLl.n; /* this should be the available clause */ - return start->u.OtaLl.d; + return start->y_u.OtaLl.d; } static void remove_clause_from_index(yamop *header, LogUpdClause *cl) { - yamop **prevp = &(header->u.Illss.l1); - yamop *curp = header->u.Illss.l1; + yamop **prevp = &(header->y_u.Illss.l1); + yamop *curp = header->y_u.Illss.l1; - if (curp->u.OtaLl.d == cl) { - yamop *newp = curp->u.OtaLl.n; + if (curp->y_u.OtaLl.d == cl) { + yamop *newp = curp->y_u.OtaLl.n; newp->opc = curp->opc; *prevp = newp; } else { yamop *ocurp = NULL, *ocurp0 = curp; - while (curp->u.OtaLl.d != cl) { + while (curp->y_u.OtaLl.d != cl) { ocurp = curp; - curp = curp->u.OtaLl.n; + curp = curp->y_u.OtaLl.n; } /* in case we were the last */ - if (curp == header->u.Illss.l2) - header->u.Illss.l2 = ocurp; + if (curp == header->y_u.Illss.l2) + header->y_u.Illss.l2 = ocurp; if (ocurp != ocurp0) ocurp->opc = curp->opc; - ocurp->u.OtILl.n = curp->u.OtaLl.n; - ocurp->u.OtILl.block = curp->u.OtILl.block; + ocurp->y_u.OtILl.n = curp->y_u.OtaLl.n; + ocurp->y_u.OtILl.block = curp->y_u.OtILl.block; } - header->u.Illss.e--; + header->y_u.Illss.e--; #if DEBUG Yap_DirtyCps--; Yap_FreedCps++; @@ -4549,39 +4549,39 @@ remove_dirty_clauses_from_index(yamop *header) LogUpdClause *cl; yamop *previouscurp; OPCODE endop = Yap_opcode(_trust_logical); - yamop **prevp= &(header->u.Illss.l1), *curp = header->u.Illss.l1; + yamop **prevp= &(header->y_u.Illss.l1), *curp = header->y_u.Illss.l1; OPCODE startopc = curp->opc; - PredEntry *ap = curp->u.OtaLl.d->ClPred; + PredEntry *ap = curp->y_u.OtaLl.d->ClPred; if (ap->PredFlags & CountPredFlag) endop = Yap_opcode(_count_trust_logical); else if (ap->PredFlags & ProfiledPredFlag) endop = Yap_opcode(_profiled_trust_logical); - while ((cl = curp->u.OtaLl.d) && (cl->ClFlags & ErasedMask)) { + while ((cl = curp->y_u.OtaLl.d) && (cl->ClFlags & ErasedMask)) { yamop *ocurp = curp; - header->u.Illss.e--; + header->y_u.Illss.e--; #if DEBUG Yap_DirtyCps--; Yap_FreedCps++; #endif //if (ap->ModuleOfPred!=IDB_MODULE && !strcmp(RepAtom(NameOfFunctor(ap->FunctorOfPred))->StrOfAE, "$lgt_send_to_obj_ne_")) - // printf(" L %p %p %d %p\n", curp, curp->u.OtaLl.n, header->u.Illss.e, curp->opc); + // printf(" L %p %p %d %p\n", curp, curp->y_u.OtaLl.n, header->y_u.Illss.e, curp->opc); clean_ref_to_clause(cl); - curp = curp->u.OtaLl.n; + curp = curp->y_u.OtaLl.n; Yap_LUIndexSpace_CP -= (UInt)NEXTOP((yamop*)NULL,OtaLl); Yap_FreeCodeSpace((ADDR)ocurp); - if (ocurp == header->u.Illss.l2) { - LogUpdIndex *clau = header->u.Illss.I; + if (ocurp == header->y_u.Illss.l2) { + LogUpdIndex *clau = header->y_u.Illss.I; /* no clauses left */ if (clau->ClFlags & ErasedMask) { Yap_ErLogUpdIndex(clau); return; } - header->u.Illss.l1 = - header->u.Illss.l2 = NULL; - header->u.Illss.s = - header->u.Illss.e = 0; + header->y_u.Illss.l1 = + header->y_u.Illss.l2 = NULL; + header->y_u.Illss.s = + header->y_u.Illss.e = 0; return; } } @@ -4590,15 +4590,15 @@ remove_dirty_clauses_from_index(yamop *header) if (curp->opc == endop) return; // don't try to follow the chain if there is no chain. - if (header->u.Illss.e <= 1) + if (header->y_u.Illss.e <= 1) return; previouscurp = curp; - curp = curp->u.OtaLl.n; + curp = curp->y_u.OtaLl.n; while (TRUE) { - if ((cl = curp->u.OtaLl.d)->ClFlags & ErasedMask) { + if ((cl = curp->y_u.OtaLl.d)->ClFlags & ErasedMask) { yamop *ocurp = curp; - header->u.Illss.e--; + header->y_u.Illss.e--; #if DEBUG Yap_DirtyCps--; Yap_FreedCps++; @@ -4606,26 +4606,26 @@ remove_dirty_clauses_from_index(yamop *header) clean_ref_to_clause(cl); if (curp->opc == endop) { previouscurp->opc = endop; - previouscurp->u.OtILl.block = curp->u.OtILl.block; - previouscurp->u.OtILl.n = NULL; - header->u.Illss.l2 = previouscurp; + previouscurp->y_u.OtILl.block = curp->y_u.OtILl.block; + previouscurp->y_u.OtILl.n = NULL; + header->y_u.Illss.l2 = previouscurp; Yap_LUIndexSpace_CP -= (UInt)NEXTOP((yamop*)NULL,OtILl); Yap_FreeCodeSpace((ADDR)curp); return; } - previouscurp->u.OtaLl.n = curp->u.OtaLl.n; - curp = curp->u.OtaLl.n; + previouscurp->y_u.OtaLl.n = curp->y_u.OtaLl.n; + curp = curp->y_u.OtaLl.n; Yap_LUIndexSpace_CP -= (UInt)NEXTOP((yamop*)NULL,OtaLl); Yap_FreeCodeSpace((ADDR)ocurp); - if (!header->u.Illss.e) + if (!header->y_u.Illss.e) return; } else { previouscurp = curp; if (curp->opc == endop) { - curp->u.OtILl.n = NULL; + curp->y_u.OtILl.n = NULL; return; } - curp = curp->u.OtaLl.n; + curp = curp->y_u.OtaLl.n; } } } @@ -4655,15 +4655,15 @@ kill_clause(yamop *ipc, yamop *bg, yamop *lt, path_stack_entry *sp0, PredEntry * return kill_block(sp+1, ap); } /* weird case ????? */ - if (!start->u.Illss.s){ + if (!start->y_u.Illss.s){ /* ERROR */ Yap_Error(INTERNAL_ERROR, TermNil, "Illss.s == 0 %p", ipc); return sp; } - if (start->u.Illss.s == 1) { + if (start->y_u.Illss.s == 1) { /* we need to discover which clause is left and then die */ path_stack_entry *nsp; - LogUpdClause *tgl = find_last_clause(start->u.Illss.l1); + LogUpdClause *tgl = find_last_clause(start->y_u.Illss.l1); nsp = sp; while ((--nsp)->flag != block_entry); @@ -4751,19 +4751,19 @@ static_clause(yamop *ipc, PredEntry *ap, int trust) switch (op) { case _p_db_ref_x: case _p_float_x: - j = Yap_regnotoreg(ipc->u.xl.x); + j = Yap_regnotoreg(ipc->y_u.xl.x); break; case _get_list: - j = Yap_regnotoreg(ipc->u.x.x); + j = Yap_regnotoreg(ipc->y_u.x.x); break; case _get_atom: - j = Yap_regnotoreg(ipc->u.xc.x); + j = Yap_regnotoreg(ipc->y_u.xc.x); break; case _get_float: - j = Yap_regnotoreg(ipc->u.xd.x); + j = Yap_regnotoreg(ipc->y_u.xd.x); break; case _get_struct: - j = Yap_regnotoreg(ipc->u.xd.x); + j = Yap_regnotoreg(ipc->y_u.xd.x); break; case _get_2atoms: case _get_3atoms: @@ -4843,7 +4843,7 @@ compacta_expand_clauses(yamop *ipc) yamop **start = (yamop **)(NEXTOP(ipc,sssllp)); yamop **ptr, **end; - ptr = end = start+ipc->u.sssllp.s1; + ptr = end = start+ipc->y_u.sssllp.s1; while (ptr > start) { yamop *next = *--ptr; @@ -4866,7 +4866,7 @@ compactz_expand_clauses(yamop *ipc) yamop **start = (yamop **)(NEXTOP(ipc,sssllp)); yamop **ptr, **end; - end = start+ipc->u.sssllp.s1; + end = start+ipc->y_u.sssllp.s1; ptr = start; while (ptr < end) { @@ -4899,19 +4899,19 @@ add_to_expand_clauses(path_stack_entry **spp, yamop *ipc, ClauseDef *cls, PredEn while (*clar == NULL) clar++; if (clar[0] != cls->Code) { clar[-1] = cls->Code; - ipc->u.sssllp.s2++; + ipc->y_u.sssllp.s2++; } return pop_path(spp, cls, ap, cint); } } while (compacta_expand_clauses(ipc)); } else { do { - clar = (yamop **)NEXTOP(ipc,sssllp) + ipc->u.sssllp.s1; + clar = (yamop **)NEXTOP(ipc,sssllp) + ipc->y_u.sssllp.s1; if (clar[-1] == NULL || clar[-1] == cls->Code) { while (*--clar == NULL); if (clar[0] != cls->Code) { clar[1] = cls->Code; - ipc->u.sssllp.s2++; + ipc->y_u.sssllp.s2++; } return pop_path(spp, cls, ap, cint); } @@ -4930,19 +4930,19 @@ static void nullify_expand_clause(yamop *ipc, path_stack_entry *sp, ClauseDef *cls) { yamop **st = (yamop **)NEXTOP(ipc,sssllp); - yamop **max = st+ipc->u.sssllp.s1; + yamop **max = st+ipc->y_u.sssllp.s1; /* make sure we get rid of the reference */ while (st < max) { if (*st && *st == cls->Code) { *st = NULL; - ipc->u.sssllp.s2--; + ipc->y_u.sssllp.s2--; break; } st++; } /* if the block has a single element */ - if (ipc->u.sssllp.s2 == 1) { + if (ipc->y_u.sssllp.s2 == 1) { yamop **st = (yamop **)NEXTOP(ipc,sssllp); while ((--sp)->flag != block_entry); while (TRUE) { @@ -4974,9 +4974,9 @@ add_try(PredEntry *ap, ClauseDef *cls, yamop *next, struct intermediates *cint) Yap_LiveCps++; #endif newcp->opc = Yap_opcode(_try_logical); - newcp->u.OtaLl.s = ap->ArityOfPE; - newcp->u.OtaLl.n = next; - newcp->u.OtaLl.d = lcl; + newcp->y_u.OtaLl.s = ap->ArityOfPE; + newcp->y_u.OtaLl.n = next; + newcp->y_u.OtaLl.d = lcl; lcl->ClRefCount++; return newcp; } @@ -5005,9 +5005,9 @@ add_trust(LogUpdIndex *icl, ClauseDef *cls, struct intermediates *cint) newcp->opc = Yap_opcode(_profiled_trust_logical); else newcp->opc = Yap_opcode(_trust_logical); - newcp->u.OtILl.block = icl; - newcp->u.OtILl.n = NULL; - newcp->u.OtILl.d = lcl; + newcp->y_u.OtILl.block = icl; + newcp->y_u.OtILl.n = NULL; + newcp->y_u.OtILl.d = lcl; lcl->ClRefCount++; return newcp; } @@ -5038,20 +5038,20 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause /* ERROR */ break; case _enter_lu_pred: - ipc->u.Illss.s++; - icl = ipc->u.Illss.I; + ipc->y_u.Illss.s++; + icl = ipc->y_u.Illss.I; if (first) { if (ap->PredFlags & CountPredFlag) - ipc->u.Illss.l1->opc = Yap_opcode(_count_retry_logical); + ipc->y_u.Illss.l1->opc = Yap_opcode(_count_retry_logical); else if (ap->PredFlags & ProfiledPredFlag) - ipc->u.Illss.l1->opc = Yap_opcode(_profiled_retry_logical); + ipc->y_u.Illss.l1->opc = Yap_opcode(_profiled_retry_logical); else - ipc->u.Illss.l1->opc = Yap_opcode(_retry_logical); - ipc->u.Illss.l1 = add_try(ap, cls, ipc->u.Illss.l1, cint); + ipc->y_u.Illss.l1->opc = Yap_opcode(_retry_logical); + ipc->y_u.Illss.l1 = add_try(ap, cls, ipc->y_u.Illss.l1, cint); } else { /* just go to next instruction */ yamop *end = add_trust(icl, cls, cint), - *old = ipc->u.Illss.l2; + *old = ipc->y_u.Illss.l2; /* we used to have two clauses */ if (ap->PredFlags & CountPredFlag) @@ -5060,9 +5060,9 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause old->opc = Yap_opcode(_profiled_retry_logical); else old->opc = Yap_opcode(_retry_logical); - old->u.OtaLl.n = end; - old->u.OtaLl.s = ap->ArityOfPE; - ipc->u.Illss.l2 = end; + old->y_u.OtaLl.n = end; + old->y_u.OtaLl.s = ap->ArityOfPE; + ipc->y_u.Illss.l2 = end; } ipc = pop_path(&sp, cls, ap, cint); break; @@ -5106,14 +5106,14 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause case _retry_me: /* should never be reached both for asserta */ group1 = FALSE; - ipc = ipc->u.Otapl.d; + ipc = ipc->y_u.Otapl.d; break; case _try_me: if (first) { ipc = NEXTOP(ipc,Otapl); - alt = ipc->u.Otapl.d; + alt = ipc->y_u.Otapl.d; } else { - ipc = ipc->u.Otapl.d; + ipc = ipc->y_u.Otapl.d; group1 = FALSE; } break; @@ -5132,18 +5132,18 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = pop_path(&sp, cls, ap, cint); break; case _jump: - sp = cross_block(sp, &ipc->u.l.l, ap, cint); + sp = cross_block(sp, &ipc->y_u.l.l, ap, cint); /* just skip for now, but should worry about memory management */ - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; break; case _jump_if_var: - sp = push_path(sp, &(ipc->u.l.l), cls, cint); + sp = push_path(sp, &(ipc->y_u.l.l), cls, cint); ipc = NEXTOP(ipc,l); break; case _jump_if_nonvar: - sp = push_path(sp, &(ipc->u.xll.l2), cls, cint); - sp = cross_block(sp, &ipc->u.xll.l1, ap, cint); - ipc = ipc->u.xll.l1; + sp = push_path(sp, &(ipc->y_u.xll.l2), cls, cint); + sp = cross_block(sp, &ipc->y_u.xll.l1, ap, cint); + ipc = ipc->y_u.xll.l1; break; /* instructions type EC */ case _try_in: @@ -5156,36 +5156,36 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause } break; case _user_switch: - ipc = ipc->u.lp.l; + ipc = ipc->y_u.lp.l; break; /* instructions type e */ case _switch_on_type: - sp = push_path(sp, &(ipc->u.llll.l4), cls, cint); + sp = push_path(sp, &(ipc->y_u.llll.l4), cls, cint); if (ap->PredFlags & LogUpdatePredFlag) { add_head_info(cls, 1); } else { add_info(cls, 1); } if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l1; + yamop *nipc = ipc->y_u.llll.l1; current_arity = 2; move_next(cls, 1); if (nipc == FAILCODE) { /* jump straight to clause */ if (ap->PredFlags & LogUpdatePredFlag) { - ipc->u.llll.l1 = cls->Code; + ipc->y_u.llll.l1 = cls->Code; } else { - ipc->u.llll.l1 = cls->CurrentCode; + ipc->y_u.llll.l1 = cls->CurrentCode; } ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.llll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.llll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l2; + yamop *nipc = ipc->y_u.llll.l2; move_next(cls, 1); if (nipc == FAILCODE) { /* need to expand the block */ @@ -5196,7 +5196,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l3; + yamop *nipc = ipc->y_u.llll.l3; if (nipc == FAILCODE) { /* need to expand the block */ sp = kill_block(sp, ap); @@ -5218,33 +5218,33 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = pop_path(&sp, cls, ap, cint); break; case _switch_on_arg_type: - sp = push_path(sp, &(ipc->u.xllll.l4), cls, cint); + sp = push_path(sp, &(ipc->y_u.xllll.l4), cls, cint); if (ap->PredFlags & LogUpdatePredFlag) { - add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x)); + add_head_info(cls, Yap_regtoregno(ipc->y_u.xllll.x)); } else { - add_info(cls, Yap_regtoregno(ipc->u.xllll.x)); + add_info(cls, Yap_regtoregno(ipc->y_u.xllll.x)); } if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l1; + yamop *nipc = ipc->y_u.xllll.l1; current_arity = 2; - move_next(cls, Yap_regtoregno(ipc->u.xllll.x)); + move_next(cls, Yap_regtoregno(ipc->y_u.xllll.x)); if (nipc == FAILCODE) { /* jump straight to clause */ if (ap->PredFlags & LogUpdatePredFlag) { - ipc->u.xllll.l1 = cls->Code; + ipc->y_u.xllll.l1 = cls->Code; } else { - ipc->u.xllll.l1 = cls->CurrentCode; + ipc->y_u.xllll.l1 = cls->CurrentCode; } ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.xllll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.xllll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l2; - move_next(cls, Yap_regtoregno(ipc->u.xllll.x)); + yamop *nipc = ipc->y_u.xllll.l2; + move_next(cls, Yap_regtoregno(ipc->y_u.xllll.x)); if (nipc == FAILCODE) { /* need to expand the block */ sp = kill_block(sp, ap); @@ -5254,8 +5254,8 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l3; - move_next(cls, Yap_regtoregno(ipc->u.xllll.x)); + yamop *nipc = ipc->y_u.xllll.l3; + move_next(cls, Yap_regtoregno(ipc->y_u.xllll.x)); if (nipc == FAILCODE) { /* need to expand the block */ sp = kill_block(sp, ap); @@ -5273,28 +5273,28 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause } break; case _switch_on_sub_arg_type: - sp = push_path(sp, &(ipc->u.sllll.l4), cls, cint); - add_arg_info(cls, ap, ipc->u.sllll.s+1); + sp = push_path(sp, &(ipc->y_u.sllll.l4), cls, cint); + add_arg_info(cls, ap, ipc->y_u.sllll.s+1); if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l1; + yamop *nipc = ipc->y_u.sllll.l1; current_arity = 2; - skip_to_arg(cls, ap, ipc->u.sllll.s, current_arity); + skip_to_arg(cls, ap, ipc->y_u.sllll.s, current_arity); if (nipc == FAILCODE) { /* jump straight to clause */ if (ap->PredFlags & LogUpdatePredFlag) { - ipc->u.sllll.l1 = cls->Code; + ipc->y_u.sllll.l1 = cls->Code; } else { - ipc->u.sllll.l1 = cls->CurrentCode; + ipc->y_u.sllll.l1 = cls->CurrentCode; } ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.sllll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.sllll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l2; - skip_to_arg(cls, ap, ipc->u.sllll.s, current_arity); + yamop *nipc = ipc->y_u.sllll.l2; + skip_to_arg(cls, ap, ipc->y_u.sllll.s, current_arity); if (nipc == FAILCODE) { /* need to expand the block */ sp = kill_block(sp, ap); @@ -5304,8 +5304,8 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l3; - skip_to_arg(cls, ap, ipc->u.sllll.s, current_arity); + yamop *nipc = ipc->y_u.sllll.l3; + skip_to_arg(cls, ap, ipc->y_u.sllll.s, current_arity); if (nipc == FAILCODE) { /* need to expand the block */ sp = kill_block(sp, ap); @@ -5335,9 +5335,9 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause Functor f = (Functor)RepAppl(cls->Tag); if (op == _switch_on_func) { - fe = lookup_f_hash(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f_hash(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } else { - fe = lookup_f(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } if (!IsExtensionFunctor(f)) { current_arity = ArityOfFunctor(f); @@ -5358,7 +5358,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause fe = expand_ftable(ipc, current_block(sp), cint, f); } fe->Tag = f; - ipc->u.sssl.e++; + ipc->y_u.sssl.e++; } if (ap->PredFlags & LogUpdatePredFlag) { fe->u_f.labp = cls->Code; @@ -5368,7 +5368,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ipc = pop_path(&sp, cls, ap, cint); } else { yamop *newpc = fe->u_f.labp; - sp = fetch_new_block(sp, &(ipc->u.sssl.l), ap, cint); + sp = fetch_new_block(sp, &(ipc->y_u.sssl.l), ap, cint); sp = cross_block(sp, &(fe->u_f.labp), ap, cint); ipc = newpc; } @@ -5395,9 +5395,9 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause Term at = cls->Tag; if (op == _switch_on_cons) { - ae = lookup_c_hash(at,ipc->u.sssl.l,ipc->u.sssl.s); + ae = lookup_c_hash(at,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } else { - ae = lookup_c(at, ipc->u.sssl.l, ipc->u.sssl.s); + ae = lookup_c(at, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } newpc = ae->u_a.labp; @@ -5411,7 +5411,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause ae = expand_ctable(ipc, current_block(sp), cint, at); } ae->Tag = at; - ipc->u.sssl.e++; + ipc->y_u.sssl.e++; } if (ap->PredFlags & LogUpdatePredFlag) { ae->u_a.labp = cls->Code; @@ -5422,7 +5422,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause } else { yamop *newpc = ae->u_a.labp; - sp = fetch_new_block(sp, &(ipc->u.sssl.l), ap, cint); + sp = fetch_new_block(sp, &(ipc->y_u.sssl.l), ap, cint); sp = cross_block(sp, &(ae->u_a.labp), ap, cint); ipc = newpc; } @@ -5535,13 +5535,13 @@ Yap_AddClauseToIndex(PredEntry *ap, yamop *beg, int first) { static void contract_ftable(yamop *ipc, ClauseUnion *blk, PredEntry *ap, Functor f) { - int n = ipc->u.sssl.s; + int n = ipc->y_u.sssl.s; FuncSwiEntry *fep; if (n > MIN_HASH_ENTRIES) { - fep = lookup_f_hash(f, ipc->u.sssl.l, n); + fep = lookup_f_hash(f, ipc->y_u.sssl.l, n); } else { - fep = (FuncSwiEntry *)(ipc->u.sssl.l); + fep = (FuncSwiEntry *)(ipc->y_u.sssl.l); while (fep->Tag != f) fep++; } fep->u_f.labp = FAILCODE; @@ -5549,13 +5549,13 @@ contract_ftable(yamop *ipc, ClauseUnion *blk, PredEntry *ap, Functor f) { static void contract_ctable(yamop *ipc, ClauseUnion *blk, PredEntry *ap, Term at) { - int n = ipc->u.sssl.s; + int n = ipc->y_u.sssl.s; AtomSwiEntry *cep; if (n > MIN_HASH_ENTRIES) { - cep = lookup_c_hash(at, ipc->u.sssl.l, n); + cep = lookup_c_hash(at, ipc->y_u.sssl.l, n); } else { - cep = (AtomSwiEntry *)(ipc->u.sssl.l); + cep = (AtomSwiEntry *)(ipc->y_u.sssl.l); while (cep->Tag != at) cep++; } cep->u_a.labp = FAILCODE; @@ -5603,7 +5603,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg /* I cannot expand a predicate that starts on a variable, have to expand the index. */ - if (IN_BETWEEN(bg,ipc->u.l.l,lt)) { + if (IN_BETWEEN(bg,ipc->y_u.l.l,lt)) { sp = kill_clause(ipc, bg, lt, sp, ap); ipc = pop_path(&sp, cls, ap, cint); } else { @@ -5616,7 +5616,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg /* I cannot expand a predicate that starts on a variable, have to expand the index. */ - if (IN_BETWEEN(bg,ipc->u.Otapl.d,lt)) { + if (IN_BETWEEN(bg,ipc->y_u.Otapl.d,lt)) { sp = kill_clause(ipc, bg, lt, sp, ap); ipc = pop_path(&sp, cls, ap, cint); } else { @@ -5633,7 +5633,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg /* I cannot expand a predicate that starts on a variable, have to expand the index. */ - if (IN_BETWEEN(bg,ipc->u.l.l,lt)) { + if (IN_BETWEEN(bg,ipc->y_u.l.l,lt)) { sp = kill_clause(ipc, bg, lt, sp, ap); ipc = pop_path(&sp, cls, ap, cint); } else { @@ -5642,14 +5642,14 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg } break; case _trust: - if (IN_BETWEEN(bg,ipc->u.Otapl.d,lt)) { + if (IN_BETWEEN(bg,ipc->y_u.Otapl.d,lt)) { sp = kill_clause(ipc, bg, lt, sp, ap); } ipc = pop_path(&sp, cls, ap, cint); break; case _enter_lu_pred: - ipc->u.Illss.s--; - ipc->u.Illss.e++; + ipc->y_u.Illss.s--; + ipc->y_u.Illss.e++; #if DEBUG Yap_DirtyCps++; Yap_LiveCps--; @@ -5660,7 +5660,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg /* instructions type l */ case _try_me: case _retry_me: - sp = push_path(sp, &(ipc->u.Otapl.d), cls, cint); + sp = push_path(sp, &(ipc->y_u.Otapl.d), cls, cint); ipc = NEXTOP(ipc,Otapl); break; case _profiled_trust_me: @@ -5669,56 +5669,56 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg ipc = NEXTOP(ipc,Otapl); break; case _jump: - sp = cross_block(sp, &ipc->u.l.l, ap, cint); + sp = cross_block(sp, &ipc->y_u.l.l, ap, cint); /* just skip for now, but should worry about memory management */ - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; break; case _jump_if_var: - sp = push_path(sp, &(ipc->u.l.l), cls, cint); + sp = push_path(sp, &(ipc->y_u.l.l), cls, cint); ipc = NEXTOP(ipc,l); break; case _jump_if_nonvar: - sp = push_path(sp, &(ipc->u.xll.l2), cls, cint); - sp = cross_block(sp, &ipc->u.xll.l1, ap, cint); - ipc = ipc->u.xll.l1; + sp = push_path(sp, &(ipc->y_u.xll.l2), cls, cint); + sp = cross_block(sp, &ipc->y_u.xll.l1, ap, cint); + ipc = ipc->y_u.xll.l1; break; case _user_switch: - ipc = ipc->u.lp.l; + ipc = ipc->y_u.lp.l; break; /* instructions type e */ case _switch_on_type: - sp = push_path(sp, &(ipc->u.llll.l4), cls, cint); + sp = push_path(sp, &(ipc->y_u.llll.l4), cls, cint); if (ap->PredFlags & LogUpdatePredFlag) { add_head_info(cls, 1); } else { add_info(cls, 1); } if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l1; + yamop *nipc = ipc->y_u.llll.l1; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.llll.l1 = FAILCODE; + ipc->y_u.llll.l1 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.llll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.llll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l2; + yamop *nipc = ipc->y_u.llll.l2; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.llll.l2 = FAILCODE; + ipc->y_u.llll.l2 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.llll.l3; + yamop *nipc = ipc->y_u.llll.l3; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.llll.l3 = FAILCODE; + ipc->y_u.llll.l3 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ @@ -5737,38 +5737,38 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg ipc = pop_path(&sp, cls, ap, cint); break; case _switch_on_arg_type: - sp = push_path(sp, &(ipc->u.xllll.l4), cls, cint); + sp = push_path(sp, &(ipc->y_u.xllll.l4), cls, cint); if (ap->PredFlags & LogUpdatePredFlag) { - add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x)); + add_head_info(cls, Yap_regtoregno(ipc->y_u.xllll.x)); } else { - add_info(cls, Yap_regtoregno(ipc->u.xllll.x)); + add_info(cls, Yap_regtoregno(ipc->y_u.xllll.x)); } if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l1; + yamop *nipc = ipc->y_u.xllll.l1; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.xllll.l1 = FAILCODE; + ipc->y_u.xllll.l1 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.xllll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.xllll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l2; + yamop *nipc = ipc->y_u.xllll.l2; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.xllll.l2 = FAILCODE; + ipc->y_u.xllll.l2 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.xllll.l3; + yamop *nipc = ipc->y_u.xllll.l3; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.xllll.l3 = FAILCODE; + ipc->y_u.xllll.l3 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ @@ -5783,34 +5783,34 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg } break; case _switch_on_sub_arg_type: - sp = push_path(sp, &(ipc->u.sllll.l4), cls, cint); - add_arg_info(cls, ap, ipc->u.sllll.s+1); + sp = push_path(sp, &(ipc->y_u.sllll.l4), cls, cint); + add_arg_info(cls, ap, ipc->y_u.sllll.s+1); if (IsPairTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l1; + yamop *nipc = ipc->y_u.sllll.l1; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.sllll.l1 = FAILCODE; + ipc->y_u.sllll.l1 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* go on */ - sp = cross_block(sp, &ipc->u.sllll.l1, ap, cint); + sp = cross_block(sp, &ipc->y_u.sllll.l1, ap, cint); ipc = nipc; } } else if (IsAtomOrIntTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l2; + yamop *nipc = ipc->y_u.sllll.l2; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.sllll.l2 = FAILCODE; + ipc->y_u.sllll.l2 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ ipc = nipc; } } else if (IsApplTerm(cls->Tag)) { - yamop *nipc = ipc->u.sllll.l3; + yamop *nipc = ipc->y_u.sllll.l3; if (IN_BETWEEN(bg,nipc,lt)) { /* jump straight to clause */ - ipc->u.sllll.l3 = FAILCODE; + ipc->y_u.sllll.l3 = FAILCODE; ipc = pop_path(&sp, cls, ap, cint); } else { /* I do not have to worry about crossing a block here */ @@ -5837,9 +5837,9 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg Functor f = (Functor)RepAppl(cls->Tag); if (op == _switch_on_func) { - fe = lookup_f_hash(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f_hash(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } else { - fe = lookup_f(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } newpc = fe->u_f.labp; @@ -5854,7 +5854,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg ipc = pop_path(&sp, cls, ap, cint); } else { yamop *newpc = fe->u_f.labp; - sp = fetch_new_block(sp, &(ipc->u.sssl.l), ap, cint); + sp = fetch_new_block(sp, &(ipc->y_u.sssl.l), ap, cint); sp = cross_block(sp, &(fe->u_f.labp), ap, cint); ipc = newpc; } @@ -5881,9 +5881,9 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg Term at = cls->Tag; if (op == _switch_on_cons) { - ae = lookup_c_hash(at,ipc->u.sssl.l,ipc->u.sssl.s); + ae = lookup_c_hash(at,ipc->y_u.sssl.l,ipc->y_u.sssl.s); } else { - ae = lookup_c(at, ipc->u.sssl.l, ipc->u.sssl.s); + ae = lookup_c(at, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } newpc = ae->u_a.labp; @@ -5899,7 +5899,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg } else { yamop *newpc = ae->u_a.labp; - sp = fetch_new_block(sp, &(ipc->u.sssl.l), ap, cint); + sp = fetch_new_block(sp, &(ipc->y_u.sssl.l), ap, cint); sp = cross_block(sp, &(ae->u_a.labp), ap, cint); ipc = newpc; } @@ -6124,9 +6124,9 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y case _try_in: update_clause_choice_point(NEXTOP(ipc,l), ap_pc PASS_REGS); if (lu_pred) - return lu_clause(ipc->u.l.l, ap); + return lu_clause(ipc->y_u.l.l, ap); else - return (LogUpdClause *)static_clause(ipc->u.l.l, ap, unbounded); + return (LogUpdClause *)static_clause(ipc->y_u.l.l, ap, unbounded); break; case _try_clause: #if TABLING @@ -6140,9 +6140,9 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y update_clause_choice_point(NEXTOP(ipc,Otapl), ap_pc PASS_REGS); } if (lu_pred) - return lu_clause(ipc->u.Otapl.d, ap); + return lu_clause(ipc->y_u.Otapl.d, ap); else - return (LogUpdClause *)static_clause(ipc->u.Otapl.d, ap, unbounded); + return (LogUpdClause *)static_clause(ipc->y_u.Otapl.d, ap, unbounded); case _try_clause2: case _try_clause3: case _try_clause4: @@ -6154,19 +6154,19 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y update_clause_choice_point(NEXTOP(ipc,l), ap_pc PASS_REGS); } if (lu_pred) - return lu_clause(ipc->u.l.l, ap); + return lu_clause(ipc->y_u.l.l, ap); else - return (LogUpdClause *)static_clause(ipc->u.l.l, ap, unbounded); + return (LogUpdClause *)static_clause(ipc->y_u.l.l, ap, unbounded); case _try_me: #if TABLING case _table_try_me: #endif if (b0 == NULL) - store_clause_choice_point(Terms[0], Terms[1], Terms[2], ipc->u.Otapl.d, ap, ap_pc, cp_pc PASS_REGS); + store_clause_choice_point(Terms[0], Terms[1], Terms[2], ipc->y_u.Otapl.d, ap, ap_pc, cp_pc PASS_REGS); else { B = b0; b0 = NULL; - update_clause_choice_point(ipc->u.Otapl.d, ap_pc PASS_REGS); + update_clause_choice_point(ipc->y_u.Otapl.d, ap_pc PASS_REGS); } ipc = NEXTOP(ipc,Otapl); break; @@ -6180,19 +6180,19 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y #endif update_clause_choice_point(NEXTOP(ipc,Otapl),ap_pc PASS_REGS); if (lu_pred) - return lu_clause(ipc->u.Otapl.d, ap); + return lu_clause(ipc->y_u.Otapl.d, ap); else - return (LogUpdClause *)static_clause(ipc->u.Otapl.d, ap, TRUE); + return (LogUpdClause *)static_clause(ipc->y_u.Otapl.d, ap, TRUE); case _retry2: case _retry3: case _retry4: update_clause_choice_point(NEXTOP(ipc,l),ap_pc PASS_REGS); if (lu_pred) - return lu_clause(ipc->u.l.l, ap); + return lu_clause(ipc->y_u.l.l, ap); else - return (LogUpdClause *)static_clause(ipc->u.l.l, ap, TRUE); + return (LogUpdClause *)static_clause(ipc->y_u.l.l, ap, TRUE); case _retry_me: - update_clause_choice_point(ipc->u.Otapl.d,ap_pc PASS_REGS); + update_clause_choice_point(ipc->y_u.Otapl.d,ap_pc PASS_REGS); ipc = NEXTOP(ipc,Otapl); break; case _trust: @@ -6217,9 +6217,9 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y #endif /* YAPOR */ b0 = B; if (lu_pred) - return lu_clause(ipc->u.Otapl.d, ap); + return lu_clause(ipc->y_u.Otapl.d, ap); else - return (LogUpdClause *)static_clause(ipc->u.Otapl.d, ap, TRUE); + return (LogUpdClause *)static_clause(ipc->y_u.Otapl.d, ap, TRUE); case _profiled_trust_me: case _trust_me: case _count_trust_me: @@ -6247,7 +6247,7 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y break; case _enter_lu_pred: { - LogUpdIndex *cl = ipc->u.Illss.I; + LogUpdIndex *cl = ipc->y_u.Illss.I; PredEntry *ap = cl->ClPred; if (!cl) return NULL; /* in case the index is empty */ @@ -6275,39 +6275,39 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y } #endif } - ipc = ipc->u.Illss.l1; + ipc = ipc->y_u.Illss.l1; break; case _try_logical: if (b0 == NULL) - store_clause_choice_point(Terms[0], Terms[1], Terms[2], ipc->u.OtaLl.n, ap, ap_pc, cp_pc PASS_REGS); + store_clause_choice_point(Terms[0], Terms[1], Terms[2], ipc->y_u.OtaLl.n, ap, ap_pc, cp_pc PASS_REGS); else { B = b0; b0 = NULL; - update_clause_choice_point(ipc->u.OtaLl.n, ap_pc PASS_REGS); + update_clause_choice_point(ipc->y_u.OtaLl.n, ap_pc PASS_REGS); } { UInt timestamp = IntegerOfTerm(((CELL *)(B+1))[5]); - if (!VALID_TIMESTAMP(timestamp, ipc->u.OtaLl.d)) { + if (!VALID_TIMESTAMP(timestamp, ipc->y_u.OtaLl.d)) { /* jump to next instruction */ - ipc = ipc->u.OtaLl.n; + ipc = ipc->y_u.OtaLl.n; break; } } - return ipc->u.OtaLl.d; + return ipc->y_u.OtaLl.d; case _retry_logical: case _profiled_retry_logical: case _count_retry_logical: { UInt timestamp = IntegerOfTerm(((CELL *)(B+1))[5]); - if (!VALID_TIMESTAMP(timestamp, ipc->u.OtaLl.d)) { + if (!VALID_TIMESTAMP(timestamp, ipc->y_u.OtaLl.d)) { /* jump to next instruction */ - ipc = ipc->u.OtaLl.n; + ipc = ipc->y_u.OtaLl.n; break; } } - update_clause_choice_point(ipc->u.OtaLl.n,ap_pc PASS_REGS); - return ipc->u.OtaLl.d; + update_clause_choice_point(ipc->y_u.OtaLl.n,ap_pc PASS_REGS); + return ipc->y_u.OtaLl.d; #if TABLING case _table_try_single: return (LogUpdClause *)ClauseCodeToStaticClause(ipc); @@ -6317,14 +6317,14 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y case _profiled_trust_logical: { UInt timestamp = IntegerOfTerm(((CELL *)(B+1))[5]); - LogUpdIndex *cl = ipc->u.OtILl.block; + LogUpdIndex *cl = ipc->y_u.OtILl.block; LogUpdClause *newpc; - if (!VALID_TIMESTAMP(timestamp, ipc->u.OtILl.d)) { + if (!VALID_TIMESTAMP(timestamp, ipc->y_u.OtILl.d)) { /* jump to next instruction */ newpc = NULL; } else { - newpc = ipc->u.OtILl.d; + newpc = ipc->y_u.OtILl.d; } #if MULTIPLE_STACKS DEC_CLREF_COUNT(cl); @@ -6336,7 +6336,7 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y to dispose of it. But on the other hand I need to make sure the clause is still there when I am back. */ - LogUpdClause *lcl = ipc->u.OtILl.d; + LogUpdClause *lcl = ipc->y_u.OtILl.d; if (newpc) { if (lcl->ClRefCount == 1) { /* make sure the clause isn't destroyed */ @@ -6361,7 +6361,7 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y cl->ClFlags &= ~InUseMask; /* next, recover space for the indexing code if it was erased */ if (cl->ClFlags & (ErasedMask|DirtyMask)) { - LogUpdClause *lcl = ipc->u.OtILl.d; + LogUpdClause *lcl = ipc->y_u.OtILl.d; /* make sure we don't erase the clause we are jumping to, notice that ErLogUpdIndex may remove several references in one go. Notice we only need to do this if we´ re jumping to the clause. @@ -6398,14 +6398,14 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y return newpc; } case _jump: - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; break; case _jump_if_var: { Term t = Deref(ARG1); if (IsVarTerm(t)) { SET_JLBL(l.l); - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; } else { ipc = NEXTOP(ipc,l); } @@ -6413,17 +6413,17 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y break; case _jump_if_nonvar: { - Term t = Deref(XREGS[arg_from_x(ipc->u.xll.x)]); + Term t = Deref(XREGS[arg_from_x(ipc->y_u.xll.x)]); if (!IsVarTerm(t)) { SET_JLBL(xll.l1); - ipc = ipc->u.xll.l1; + ipc = ipc->y_u.xll.l1; } else { ipc = NEXTOP(ipc,xll); } } break; case _user_switch: - ipc = ipc->u.lp.l; + ipc = ipc->y_u.lp.l; break; /* instructions type e */ case _switch_on_type: @@ -6431,18 +6431,18 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y blob_term = FALSE; if (IsVarTerm(t)) { SET_JLBL(llll.l4); - ipc = ipc->u.llll.l4; + ipc = ipc->y_u.llll.l4; } else if (IsPairTerm(t)) { unbounded = FALSE; SET_JLBL(llll.l1); - ipc = ipc->u.llll.l1; + ipc = ipc->y_u.llll.l1; S = s_reg = RepPair(t); } else if (IsAtomOrIntTerm(t)) { SET_JLBL(llll.l2); - ipc = ipc->u.llll.l2; + ipc = ipc->y_u.llll.l2; } else { SET_JLBL(llll.l3); - ipc = ipc->u.llll.l3; + ipc = ipc->y_u.llll.l3; S = RepAppl(t); } break; @@ -6451,59 +6451,59 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y blob_term = FALSE; if (IsVarTerm(t)) { SET_JLBL(ollll.l4); - ipc = ipc->u.ollll.l4; + ipc = ipc->y_u.ollll.l4; } else if (IsPairTerm(t)) { unbounded = FALSE; SET_JLBL(ollll.l1); - ipc = ipc->u.ollll.l1; + ipc = ipc->y_u.ollll.l1; S = s_reg = RepPair(t); } else if (t == TermNil) { unbounded = FALSE; SET_JLBL(ollll.l2); - ipc = ipc->u.ollll.l2; + ipc = ipc->y_u.ollll.l2; } else { SET_JLBL(ollll.l3); - ipc = ipc->u.ollll.l3; + ipc = ipc->y_u.ollll.l3; S = RepAppl(t); } break; case _switch_on_arg_type: - t = Deref(XREGS[arg_from_x(ipc->u.xllll.x)]); + t = Deref(XREGS[arg_from_x(ipc->y_u.xllll.x)]); blob_term = FALSE; if (IsVarTerm(t)) { SET_JLBL(xllll.l4); - ipc = ipc->u.xllll.l4; + ipc = ipc->y_u.xllll.l4; } else if (IsPairTerm(t)) { unbounded = FALSE; SET_JLBL(xllll.l1); - ipc = ipc->u.xllll.l1; + ipc = ipc->y_u.xllll.l1; S = s_reg = RepPair(t); } else if (IsAtomOrIntTerm(t)) { SET_JLBL(xllll.l2); - ipc = ipc->u.xllll.l2; + ipc = ipc->y_u.xllll.l2; } else { SET_JLBL(xllll.l3); - ipc = ipc->u.xllll.l3; + ipc = ipc->y_u.xllll.l3; S = RepAppl(t); } break; case _switch_on_sub_arg_type: - t = Deref(s_reg[ipc->u.sllll.s]); + t = Deref(s_reg[ipc->y_u.sllll.s]); blob_term = FALSE; if (IsVarTerm(t)) { SET_JLBL(sllll.l4); - ipc = ipc->u.sllll.l4; + ipc = ipc->y_u.sllll.l4; } else if (IsPairTerm(t)) { unbounded = FALSE; SET_JLBL(sllll.l1); S = s_reg = RepPair(t); - ipc = ipc->u.sllll.l1; + ipc = ipc->y_u.sllll.l1; } else if (IsAtomOrIntTerm(t)) { SET_JLBL(sllll.l2); - ipc = ipc->u.sllll.l2; + ipc = ipc->y_u.sllll.l2; } else { SET_JLBL(sllll.l3); - ipc = ipc->u.sllll.l3; + ipc = ipc->y_u.sllll.l3; S = RepAppl(t); } break; @@ -6512,13 +6512,13 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y blob_term = FALSE; if (IsVarTerm(t)) { SET_JLBL(clll.l3); - ipc = ipc->u.clll.l3; - } else if (!IsVarTerm(t) && t != ipc->u.clll.c) { + ipc = ipc->y_u.clll.l3; + } else if (!IsVarTerm(t) && t != ipc->y_u.clll.c) { SET_JLBL(clll.l1); - ipc = ipc->u.clll.l1; + ipc = ipc->y_u.clll.l1; } else { SET_JLBL(clll.l2); - ipc = ipc->u.clll.l2; + ipc = ipc->y_u.clll.l2; } break; /* instructions type ollll */ @@ -6535,9 +6535,9 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y s_reg++; S = s_reg; if (op == _switch_on_func) { - fe = lookup_f_hash(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f_hash(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } else { - fe = lookup_f(f, ipc->u.sssl.l, ipc->u.sssl.s); + fe = lookup_f(f, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } #if defined(YAPOR) || defined(THREADS) jlbl = &(fe->u_f.labp); @@ -6568,9 +6568,9 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y unbounded = FALSE; if (op == _switch_on_cons) { - ae = lookup_c_hash(t, ipc->u.sssl.l, ipc->u.sssl.s); + ae = lookup_c_hash(t, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } else { - ae = lookup_c(t, ipc->u.sssl.l, ipc->u.sssl.s); + ae = lookup_c(t, ipc->y_u.sssl.l, ipc->y_u.sssl.s); } #if defined(YAPOR) || defined(THREADS) jlbl = &(ae->u_a.labp); @@ -6740,7 +6740,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) switch(op) { case _try_in: if (ncls == 1) - return to_clause(ipc->u.l.l, ap); + return to_clause(ipc->y_u.l.l, ap); ncls--; ipc = NEXTOP(ipc,l); break; @@ -6750,7 +6750,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) case _try_clause: case _retry: if (ncls == 1) - return to_clause(ipc->u.Otapl.d, ap); + return to_clause(ipc->y_u.Otapl.d, ap); else if (alt == NULL) { ncls --; /* get there in a fell swoop */ @@ -6765,7 +6765,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) } else { ipc = (yamop *)((char *)ipc+ncls*(UInt)NEXTOP((yamop *)NULL,Otapl)); } - return to_clause(ipc->u.Otapl.d, ap); + return to_clause(ipc->y_u.Otapl.d, ap); } else { ncls--; } @@ -6778,7 +6778,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) case _retry3: case _retry4: if (ncls == 1) - return to_clause(ipc->u.l.l, ap); + return to_clause(ipc->y_u.l.l, ap); else if (alt == NULL) { ncls --; /* get there in a fell swoop */ @@ -6793,7 +6793,7 @@ Yap_NthClause(PredEntry *ap, Int ncls) } else { ipc = (yamop *)((char *)ipc+ncls*(UInt)NEXTOP((yamop *)NULL,l)); } - return to_clause(ipc->u.l.l, ap); + return to_clause(ipc->y_u.l.l, ap); } else { ncls--; } @@ -6801,13 +6801,13 @@ Yap_NthClause(PredEntry *ap, Int ncls) break; case _trust: if (ncls == 1) - return to_clause(ipc->u.l.l,ap); + return to_clause(ipc->y_u.l.l,ap); ncls--; ipc = alt; break; case _try_me: case _retry_me: - alt = ipc->u.Otapl.d; + alt = ipc->y_u.Otapl.d; ipc = NEXTOP(ipc,Otapl); break; case _profiled_trust_me: @@ -6820,63 +6820,63 @@ Yap_NthClause(PredEntry *ap, Int ncls) case _retry_logical: case _count_retry_logical: case _profiled_retry_logical: - if (VALID_TIMESTAMP(ap->TimeStampOfPred, ipc->u.OtaLl.d)) { + if (VALID_TIMESTAMP(ap->TimeStampOfPred, ipc->y_u.OtaLl.d)) { if (ncls == 1) - return ipc->u.OtaLl.d; + return ipc->y_u.OtaLl.d; ncls--; } - ipc = ipc->u.OtaLl.n; + ipc = ipc->y_u.OtaLl.n; break; case _trust_logical: case _count_trust_logical: case _profiled_trust_logical: - if (VALID_TIMESTAMP(ap->TimeStampOfPred, ipc->u.OtILl.d)) { + if (VALID_TIMESTAMP(ap->TimeStampOfPred, ipc->y_u.OtILl.d)) { if (ncls == 1) - return ipc->u.OtILl.d; + return ipc->y_u.OtILl.d; } return NULL; case _enter_lu_pred: SET_JLBL(Illss.l1); - ipc = ipc->u.Illss.l1; + ipc = ipc->y_u.Illss.l1; break; case _lock_lu: ipc = NEXTOP(ipc,p); break; case _jump: SET_JLBL(l.l); - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; break; case _jump_if_var: SET_JLBL(l.l); - ipc = ipc->u.l.l; + ipc = ipc->y_u.l.l; break; case _jump_if_nonvar: ipc = NEXTOP(ipc,xll); break; case _user_switch: SET_JLBL(l.l); - ipc = ipc->u.lp.l; + ipc = ipc->y_u.lp.l; break; /* instructions type e */ case _switch_on_type: SET_JLBL(llll.l4); - ipc = ipc->u.llll.l4; + ipc = ipc->y_u.llll.l4; break; case _switch_list_nl: SET_JLBL(ollll.l4); - ipc = ipc->u.ollll.l4; + ipc = ipc->y_u.ollll.l4; break; case _switch_on_arg_type: SET_JLBL(xllll.l4); - ipc = ipc->u.xllll.l4; + ipc = ipc->y_u.xllll.l4; break; case _switch_on_sub_arg_type: SET_JLBL(sllll.l4); - ipc = ipc->u.sllll.l4; + ipc = ipc->y_u.sllll.l4; break; case _if_not_then: SET_JLBL(clll.l3); - ipc = ipc->u.clll.l3; + ipc = ipc->y_u.clll.l3; break; case _expand_index: case _expand_clauses: diff --git a/C/init.c b/C/init.c index 48f3a26aa..cd6e58a2e 100755 --- a/C/init.c +++ b/C/init.c @@ -483,22 +483,22 @@ Yap_InitCPred(const char *Name, UInt Arity, CPredicate code, UInt flags) p_code->opc = Yap_opcode(_call_usercpred); else p_code->opc = Yap_opcode(_call_cpred); - p_code->u.Osbpp.bmap = NULL; - p_code->u.Osbpp.s = -Signed(RealEnvSize); - p_code->u.Osbpp.p = - p_code->u.Osbpp.p0 = + p_code->y_u.Osbpp.bmap = NULL; + p_code->y_u.Osbpp.s = -Signed(RealEnvSize); + p_code->y_u.Osbpp.p = + p_code->y_u.Osbpp.p0 = pe; p_code = NEXTOP(p_code,Osbpp); if (!(flags & SafePredFlag)) { p_code->opc = Yap_opcode(_deallocate); - p_code->u.p.p = pe; + p_code->y_u.p.p = pe; p_code = NEXTOP(p_code,p); } p_code->opc = Yap_opcode(_procceed); - p_code->u.p.p = pe; + p_code->y_u.p.p = pe; p_code = NEXTOP(p_code,p); p_code->opc = Yap_opcode(_Ystop); - p_code->u.l.l = cl->ClCode; + p_code->y_u.l.l = cl->ClCode; pe->OpcodeOfPred = pe->CodeOfPred->opc; } @@ -567,17 +567,17 @@ Yap_InitCmpPred(const char *Name, UInt Arity, CmpPredicate cmp_code, UInt flags) pe->cs.d_code = cmp_code; pe->ModuleOfPred = CurrentModule; p_code->opc = pe->OpcodeOfPred = Yap_opcode(_call_bfunc_xx); - p_code->u.plxxs.p = pe; - p_code->u.plxxs.f = FAILCODE; - p_code->u.plxxs.x1 = Yap_emit_x(1); - p_code->u.plxxs.x2 = Yap_emit_x(2); - p_code->u.plxxs.flags = Yap_compile_cmp_flags(pe); + p_code->y_u.plxxs.p = pe; + p_code->y_u.plxxs.f = FAILCODE; + p_code->y_u.plxxs.x1 = Yap_emit_x(1); + p_code->y_u.plxxs.x2 = Yap_emit_x(2); + p_code->y_u.plxxs.flags = Yap_compile_cmp_flags(pe); p_code = NEXTOP(p_code,plxxs); p_code->opc = Yap_opcode(_procceed); - p_code->u.p.p = pe; + p_code->y_u.p.p = pe; p_code = NEXTOP(p_code,p); p_code->opc = Yap_opcode(_Ystop); - p_code->u.l.l = cl->ClCode; + p_code->y_u.l.l = cl->ClCode; } void @@ -655,20 +655,20 @@ Yap_InitAsmPred(const char *Name, UInt Arity, int code, CPredicate def, UInt fl p_code = NEXTOP(p_code,e); } p_code->opc = Yap_opcode(_call_cpred); - p_code->u.Osbpp.bmap = NULL; - p_code->u.Osbpp.s = -Signed(RealEnvSize); - p_code->u.Osbpp.p = p_code->u.Osbpp.p0 = pe; + p_code->y_u.Osbpp.bmap = NULL; + p_code->y_u.Osbpp.s = -Signed(RealEnvSize); + p_code->y_u.Osbpp.p = p_code->y_u.Osbpp.p0 = pe; p_code = NEXTOP(p_code,Osbpp); if (!(flags & SafePredFlag)) { p_code->opc = Yap_opcode(_deallocate); - p_code->u.p.p = pe; + p_code->y_u.p.p = pe; p_code = NEXTOP(p_code,p); } p_code->opc = Yap_opcode(_procceed); - p_code->u.p.p = pe; + p_code->y_u.p.p = pe; p_code = NEXTOP(p_code,p); p_code->opc = Yap_opcode(_Ystop); - p_code->u.l.l = cl->ClCode; + p_code->y_u.l.l = cl->ClCode; pe->OpcodeOfPred = pe->CodeOfPred->opc; } else { pe->OpcodeOfPred = Yap_opcode(_undef_p); @@ -689,7 +689,7 @@ CleanBack(PredEntry *pe, CPredicate Start, CPredicate Cont, CPredicate Cut) return; } code = (yamop *)(pe->cs.p_code.FirstClause); - code->u.OtapFs.p = pe; + code->y_u.OtapFs.p = pe; if (pe->PredFlags & UserCPredFlag) code->opc = Yap_opcode(_try_userc); else @@ -698,7 +698,7 @@ CleanBack(PredEntry *pe, CPredicate Start, CPredicate Cont, CPredicate Cut) INIT_YAMOP_LTT(code, 2); PUT_YAMOP_SEQ(code); #endif /* YAPOR */ - code->u.OtapFs.f = Start; + code->y_u.OtapFs.f = Start; code = NEXTOP(code,OtapFs); if (pe->PredFlags & UserCPredFlag) code->opc = Yap_opcode(_retry_userc); @@ -708,14 +708,14 @@ CleanBack(PredEntry *pe, CPredicate Start, CPredicate Cont, CPredicate Cut) INIT_YAMOP_LTT(code, 1); PUT_YAMOP_SEQ(code); #endif /* YAPOR */ - code->u.OtapFs.f = Cont; + code->y_u.OtapFs.f = Cont; code = NEXTOP(code,OtapFs); if (pe->PredFlags & UserCPredFlag) code->opc = Yap_opcode(_cut_c); else code->opc = Yap_opcode(_cut_userc); - code->u.OtapFs.p = pe; - code->u.OtapFs.f = Cut; + code->y_u.OtapFs.p = pe; + code->y_u.OtapFs.f = Cut; } void @@ -805,10 +805,10 @@ Yap_InitCPredBack_(const char *Name, UInt Arity, pe->OpcodeOfPred = code->opc = Yap_opcode(_try_userc); else pe->OpcodeOfPred = code->opc = Yap_opcode(_try_c); - code->u.OtapFs.f = Start; - code->u.OtapFs.p = pe; - code->u.OtapFs.s = Arity; - code->u.OtapFs.extra = Extra; + code->y_u.OtapFs.f = Start; + code->y_u.OtapFs.p = pe; + code->y_u.OtapFs.s = Arity; + code->y_u.OtapFs.extra = Extra; #ifdef YAPOR INIT_YAMOP_LTT(code, 2); PUT_YAMOP_SEQ(code); @@ -818,10 +818,10 @@ Yap_InitCPredBack_(const char *Name, UInt Arity, code->opc = Yap_opcode(_retry_userc); else code->opc = Yap_opcode(_retry_c); - code->u.OtapFs.f = Cont; - code->u.OtapFs.p = pe; - code->u.OtapFs.s = Arity; - code->u.OtapFs.extra = Extra; + code->y_u.OtapFs.f = Cont; + code->y_u.OtapFs.p = pe; + code->y_u.OtapFs.s = Arity; + code->y_u.OtapFs.extra = Extra; #ifdef YAPOR INIT_YAMOP_LTT(code, 1); PUT_YAMOP_SEQ(code); @@ -831,13 +831,13 @@ Yap_InitCPredBack_(const char *Name, UInt Arity, code->opc = Yap_opcode(_cut_userc); else code->opc = Yap_opcode(_cut_c); - code->u.OtapFs.f = Cut; - code->u.OtapFs.p = pe; - code->u.OtapFs.s = Arity; - code->u.OtapFs.extra = Extra; + code->y_u.OtapFs.f = Cut; + code->y_u.OtapFs.p = pe; + code->y_u.OtapFs.s = Arity; + code->y_u.OtapFs.extra = Extra; code = NEXTOP(code,OtapFs); code->opc = Yap_opcode(_Ystop); - code->u.l.l = cl->ClCode; + code->y_u.l.l = cl->ClCode; } } @@ -898,10 +898,10 @@ InitEnvInst(yamop start[2], yamop **instp, op_numbers opc, PredEntry *pred) /* make it look like the instruction is preceeded by a call instruction */ ipc->opc = Yap_opcode(_call); - ipc->u.Osbpp.s = -Signed(RealEnvSize); - ipc->u.Osbpp.bmap = NULL; - ipc->u.Osbpp.p = pred; - ipc->u.Osbpp.p0 = pred; + ipc->y_u.Osbpp.s = -Signed(RealEnvSize); + ipc->y_u.Osbpp.bmap = NULL; + ipc->y_u.Osbpp.p = pred; + ipc->y_u.Osbpp.p0 = pred; ipc = NEXTOP(ipc, Osbpp); ipc->opc = Yap_opcode(opc); *instp = ipc; @@ -914,14 +914,14 @@ InitOtaplInst(yamop start[1], OPCODE opc, PredEntry *pe) /* this is a place holder, it should not really be used */ ipc->opc = Yap_opcode(opc); - ipc->u.Otapl.s = 0; - ipc->u.Otapl.p = pe; - ipc->u.Otapl.d = NULL; + ipc->y_u.Otapl.s = 0; + ipc->y_u.Otapl.p = pe; + ipc->y_u.Otapl.d = NULL; #ifdef YAPOR INIT_YAMOP_LTT(ipc, 1); #endif /* YAPOR */ #ifdef TABLING - ipc->u.Otapl.te = NULL; + ipc->y_u.Otapl.te = NULL; #endif /* TABLING */ } @@ -1182,8 +1182,8 @@ InitCodes(void) modp->PredFlags |= MetaPredFlag; } #ifdef YAPOR - Yap_heap_regs->getwork_code->u.Otapl.p = RepPredProp(PredPropByAtom(AtomGetwork, PROLOG_MODULE)); - Yap_heap_regs->getwork_seq_code->u.Otapl.p = RepPredProp(PredPropByAtom(AtomGetworkSeq, PROLOG_MODULE)); + Yap_heap_regs->getwork_code->y_u.Otapl.p = RepPredProp(PredPropByAtom(AtomGetwork, PROLOG_MODULE)); + Yap_heap_regs->getwork_seq_code->y_u.Otapl.p = RepPredProp(PredPropByAtom(AtomGetworkSeq, PROLOG_MODULE)); #endif /* YAPOR */ } diff --git a/H/Regs.h b/H/Regs.h index 6bc5ba96e..5ed16c079 100755 --- a/H/Regs.h +++ b/H/Regs.h @@ -691,6 +691,33 @@ INLINE_ONLY EXTERN inline void restore_B(void) { #define BBREG BB #endif /* YAPOR_SBA || TABLING */ +// define how to handle frozen segments in tabling, etv. +#ifdef FROZEN_STACKS +#ifdef YAPOR_SBA +#define PROTECT_FROZEN_H(CPTR) \ + ((Unsigned((Int)((CPTR)->cp_h)-(Int)(H_FZ)) < \ + Unsigned((Int)(B_FZ)-(Int)(H_FZ))) ? \ + (CPTR)->cp_h : H_FZ) +#define PROTECT_FROZEN_B(CPTR) \ + ((Unsigned((Int)(CPTR)-(Int)(H_FZ)) < \ + Unsigned((Int)(B_FZ)-(Int)(H_FZ))) ? \ + (CPTR) : B_FZ) + /* +#define PROTECT_FROZEN_H(CPTR) ((CPTR)->cp_h > H_FZ && (CPTR)->cp_h < (CELL *)B_FZ ? (CPTR)->cp_h : H_FZ ) + +#define PROTECT_FROZEN_B(CPTR) ((CPTR) < B_FZ && (CPTR) > (choiceptr)H_FZ ? (CPTR) : B_FZ ) + */ +#else /* TABLING */ +#define PROTECT_FROZEN_B(CPTR) (YOUNGER_CP(CPTR, B_FZ) ? CPTR : B_FZ) +#define PROTECT_FROZEN_H(CPTR) (((CPTR)->cp_h > H_FZ) ? (CPTR)->cp_h : H_FZ) +#endif /* YAPOR_SBA */ +#else +#define PROTECT_FROZEN_B(CPTR) (CPTR) +#define PROTECT_FROZEN_H(CPTR) (CPTR)->cp_h +#endif /* FROZEN_STACKS */ + + + #if !defined(THREADS) /* use actual addresses for regs */ #define PRECOMPUTE_REGADDRESS 1 diff --git a/H/Yap.h b/H/Yap.h index 45689ea05..cbbfd5fcb 100755 --- a/H/Yap.h +++ b/H/Yap.h @@ -86,6 +86,10 @@ #define TERM_EXTENSIONS 1 #endif /* COROUTINING && !TERM_EXTENSIONS */ +/* truth-values */ +#define TRUE 1 +#define FALSE 0 + /* Microsoft's Visual C++ Compiler */ #ifdef _MSC_VER /* adjust a config.h from mingw32 to work with vc++ */ #ifdef HAVE_GCC @@ -155,10 +159,6 @@ #define EXTERN #endif /* ADTDEFS_C */ -/* truth-values */ -#define TRUE 1 -#define FALSE 0 - /* null pointer */ #define NIL 0 diff --git a/H/absmi.h b/H/absmi.h index 812c42210..0f64282f5 100755 --- a/H/absmi.h +++ b/H/absmi.h @@ -379,7 +379,7 @@ restore_absmi_regs(REGSTORE * old_regs) #define DO_PREFETCH(TYPE) to_go = (void *)(NEXTOP(PREG,TYPE)->opc) -#define DO_PREFETCH_W(TYPE) to_go = (void *)(NEXTOP(PREG,TYPE)->u.o.opcw) +#define DO_PREFETCH_W(TYPE) to_go = (void *)(NEXTOP(PREG,TYPE)->y_u.o.opcw) #if LIMITED_PREFETCH||USE_PREFETCH @@ -466,7 +466,7 @@ restore_absmi_regs(REGSTORE * old_regs) JMP((void *)(PREG->opc)) #define JMPNextW() \ - JMP((void *)(PREG->u.o.opcw)) + JMP((void *)(PREG->y_u.o.opcw)) #if USE_THREADED_CODE && (LIMITED_PREFETCH || USE_PREFETCH) diff --git a/H/amidefs.h b/H/amidefs.h index eac8956ec..8c76c78fd 100644 --- a/H/amidefs.h +++ b/H/amidefs.h @@ -65,30 +65,6 @@ #include #endif -#ifdef FROZEN_STACKS -#ifdef YAPOR_SBA -#define PROTECT_FROZEN_H(CPTR) \ - ((Unsigned((Int)((CPTR)->cp_h)-(Int)(H_FZ)) < \ - Unsigned((Int)(B_FZ)-(Int)(H_FZ))) ? \ - (CPTR)->cp_h : H_FZ) -#define PROTECT_FROZEN_B(CPTR) \ - ((Unsigned((Int)(CPTR)-(Int)(H_FZ)) < \ - Unsigned((Int)(B_FZ)-(Int)(H_FZ))) ? \ - (CPTR) : B_FZ) - /* -#define PROTECT_FROZEN_H(CPTR) ((CPTR)->cp_h > H_FZ && (CPTR)->cp_h < (CELL *)B_FZ ? (CPTR)->cp_h : H_FZ ) - -#define PROTECT_FROZEN_B(CPTR) ((CPTR) < B_FZ && (CPTR) > (choiceptr)H_FZ ? (CPTR) : B_FZ ) - */ -#else /* TABLING */ -#define PROTECT_FROZEN_B(CPTR) (YOUNGER_CP(CPTR, B_FZ) ? CPTR : B_FZ) -#define PROTECT_FROZEN_H(CPTR) (((CPTR)->cp_h > H_FZ) ? (CPTR)->cp_h : H_FZ) -#endif /* YAPOR_SBA */ -#else -#define PROTECT_FROZEN_B(CPTR) (CPTR) -#define PROTECT_FROZEN_H(CPTR) (CPTR)->cp_h -#endif /* FROZEN_STACKS */ - #if ALIGN_LONGS /* */ typedef Int DISPREG; /* */ typedef CELL SMALLUNSGN; @@ -882,7 +858,7 @@ typedef struct yami { Term c; CELL next; } yxc; - } u; + } y_u; } yamop; typedef yamop yamopp; @@ -891,7 +867,7 @@ typedef yamop yamopp; #define OPCW u.ox.opcw -#define NEXTOP(V,TYPE) ((yamop *)(&((V)->u.TYPE.next))) +#define NEXTOP(V,TYPE) ((yamop *)(&((V)->y_u.TYPE.next))) #define PREVOP(V,TYPE) ((yamop *)((CODEADDR)(V)-(CELL)NEXTOP((yamop *)NULL,TYPE))) @@ -1072,13 +1048,13 @@ CELL *ENV_Parent(CELL *env) static inline UInt ENV_Size(yamop *cp) { - return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->u.Osbpp.s); + return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.s); } static inline struct pred_entry *ENV_ToP(yamop *cp) { - return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->u.Osbpp.p); + return (((yamop *)((CODEADDR)(cp) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.p); } static inline @@ -1096,13 +1072,13 @@ UInt EnvSize(yamop *cp) static inline CELL *EnvBMap(yamop *p) { - return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->u.Osbpp.bmap); + return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.bmap); } static inline struct pred_entry *EnvPreg(yamop *p) { - return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->u.Osbpp.p0); + return (((yamop *)((CODEADDR)(p) - (CELL)NEXTOP((yamop *)NULL,Osbpp)))->y_u.Osbpp.p0); } /* access to instructions */ diff --git a/H/clause.h b/H/clause.h index 4dce4d03e..62edb98f1 100644 --- a/H/clause.h +++ b/H/clause.h @@ -33,7 +33,7 @@ typedef union CONSULT_OBJ { #define ASSEMBLING_INDEX 1 #define ASSEMBLING_EINDEX 2 -#define NextDynamicClause(X) (((yamop *)X)->u.Otapl.d) +#define NextDynamicClause(X) (((yamop *)X)->y_u.Otapl.d) #define PredFirstClause 0 #define PredMiddleClause 1 diff --git a/H/cut_c.h b/H/cut_c.h index b1c7b0333..75b942dc9 100644 --- a/H/cut_c.h +++ b/H/cut_c.h @@ -18,11 +18,11 @@ struct cut_c_str{ #define CUT_C_STR_SIZE ((sizeof(struct cut_c_str))/(sizeof(CELL))) #define EXTRA_CBACK_CUT_ARG(Type,Offset) \ -((Type) (*(Type *)(((CELL *)Yap_REGS.CUT_C_TOP) - (((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->u.OtapFs.extra)) + (Offset-1))) +((Type) (*(Type *)(((CELL *)Yap_REGS.CUT_C_TOP) - (((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->y_u.OtapFs.extra)) + (Offset-1))) #define CUT_C_PUSH(YAMOP,S_YREG) \ { \ - if ((YAMOP)->u.OtapFs.f){ \ + if ((YAMOP)->y_u.OtapFs.f){ \ S_YREG = S_YREG - CUT_C_STR_SIZE; \ cut_c_str_ptr new_top = (cut_c_str_ptr) S_YREG; \ new_top->try_userc_cut_yamop = YAMOP; \ @@ -37,8 +37,8 @@ struct cut_c_str{ #define POP_EXECUTE() \ cut_c_str_ptr TOP = Yap_REGS.CUT_C_TOP; \ - CPredicate func = (CPredicate)((yamop *)TOP->try_userc_cut_yamop)->u.OtapFs.f; \ - PredEntry *pred = (PredEntry *)((yamop *)TOP->try_userc_cut_yamop)->u.OtapFs.p; \ + CPredicate func = (CPredicate)((yamop *)TOP->try_userc_cut_yamop)->y_u.OtapFs.f; \ + PredEntry *pred = (PredEntry *)((yamop *)TOP->try_userc_cut_yamop)->y_u.OtapFs.p; \ YAP_ExecuteOnCut(pred, func, TOP); \ cut_c_pop(); diff --git a/H/findclause.h b/H/findclause.h index 611938e9f..569ec7c68 100644 --- a/H/findclause.h +++ b/H/findclause.h @@ -26,195 +26,195 @@ break; case _get_2atoms: if (is_regcopy(myregs, nofregs, Yap_regnotoreg(1))) { - if (IsApplTerm(cl->u.cc.c1)) { - CELL *pt = RepAppl(cl->u.cc.c1); + if (IsApplTerm(cl->y_u.cc.c1)) { + CELL *pt = RepAppl(cl->y_u.cc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cc.c1; + clause->ucd.t_ptr = cl->y_u.cc.c1; } else - clause->Tag = cl->u.cc.c1; + clause->Tag = cl->y_u.cc.c1; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(2))) { - if (IsApplTerm(cl->u.cc.c2)) { - CELL *pt = RepAppl(cl->u.cc.c2); + if (IsApplTerm(cl->y_u.cc.c2)) { + CELL *pt = RepAppl(cl->y_u.cc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cc.c2; + clause->ucd.t_ptr = cl->y_u.cc.c2; } else - clause->Tag = cl->u.cc.c2; + clause->Tag = cl->y_u.cc.c2; return; } cl = NEXTOP(cl,cc); break; case _get_3atoms: if (is_regcopy(myregs, nofregs, Yap_regnotoreg(1))) { - if (IsApplTerm(cl->u.ccc.c1)) { - CELL *pt = RepAppl(cl->u.ccc.c1); + if (IsApplTerm(cl->y_u.ccc.c1)) { + CELL *pt = RepAppl(cl->y_u.ccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c1; + clause->ucd.t_ptr = cl->y_u.ccc.c1; } else - clause->Tag = cl->u.ccc.c1; + clause->Tag = cl->y_u.ccc.c1; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(2))) { - if (IsApplTerm(cl->u.ccc.c2)) { - CELL *pt = RepAppl(cl->u.ccc.c2); + if (IsApplTerm(cl->y_u.ccc.c2)) { + CELL *pt = RepAppl(cl->y_u.ccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c2; + clause->ucd.t_ptr = cl->y_u.ccc.c2; } else - clause->Tag = cl->u.ccc.c2; + clause->Tag = cl->y_u.ccc.c2; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(3))) { - if (IsApplTerm(cl->u.ccc.c3)) { - CELL *pt = RepAppl(cl->u.ccc.c3); + if (IsApplTerm(cl->y_u.ccc.c3)) { + CELL *pt = RepAppl(cl->y_u.ccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c3; + clause->ucd.t_ptr = cl->y_u.ccc.c3; } else - clause->Tag = cl->u.ccc.c3; + clause->Tag = cl->y_u.ccc.c3; return; } cl = NEXTOP(cl,ccc); break; case _get_4atoms: if (is_regcopy(myregs, nofregs, Yap_regnotoreg(1))) { - if (IsApplTerm(cl->u.cccc.c1)) { - CELL *pt = RepAppl(cl->u.cccc.c1); + if (IsApplTerm(cl->y_u.cccc.c1)) { + CELL *pt = RepAppl(cl->y_u.cccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c1; + clause->ucd.t_ptr = cl->y_u.cccc.c1; } else - clause->Tag = cl->u.cccc.c1; + clause->Tag = cl->y_u.cccc.c1; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(2))) { - if (IsApplTerm(cl->u.cccc.c2)) { - CELL *pt = RepAppl(cl->u.cccc.c2); + if (IsApplTerm(cl->y_u.cccc.c2)) { + CELL *pt = RepAppl(cl->y_u.cccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c2; + clause->ucd.t_ptr = cl->y_u.cccc.c2; } else - clause->Tag = cl->u.cccc.c2; + clause->Tag = cl->y_u.cccc.c2; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(3))) { - if (IsApplTerm(cl->u.cccc.c3)) { - CELL *pt = RepAppl(cl->u.cccc.c3); + if (IsApplTerm(cl->y_u.cccc.c3)) { + CELL *pt = RepAppl(cl->y_u.cccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c3; + clause->ucd.t_ptr = cl->y_u.cccc.c3; } else - clause->Tag = cl->u.cccc.c3; + clause->Tag = cl->y_u.cccc.c3; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(4))) { - if (IsApplTerm(cl->u.cccc.c4)) { - CELL *pt = RepAppl(cl->u.cccc.c4); + if (IsApplTerm(cl->y_u.cccc.c4)) { + CELL *pt = RepAppl(cl->y_u.cccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c4; + clause->ucd.t_ptr = cl->y_u.cccc.c4; } else - clause->Tag = cl->u.cccc.c4; + clause->Tag = cl->y_u.cccc.c4; return; } cl = NEXTOP(cl,cccc); break; case _get_5atoms: if (is_regcopy(myregs, nofregs, Yap_regnotoreg(1))) { - if (IsApplTerm(cl->u.ccccc.c1)) { - CELL *pt = RepAppl(cl->u.ccccc.c1); + if (IsApplTerm(cl->y_u.ccccc.c1)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c1; + clause->ucd.t_ptr = cl->y_u.ccccc.c1; } else - clause->Tag = cl->u.ccccc.c1; + clause->Tag = cl->y_u.ccccc.c1; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(2))) { - if (IsApplTerm(cl->u.ccccc.c2)) { - CELL *pt = RepAppl(cl->u.ccccc.c2); + if (IsApplTerm(cl->y_u.ccccc.c2)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c2; + clause->ucd.t_ptr = cl->y_u.ccccc.c2; } else - clause->Tag = cl->u.ccccc.c2; + clause->Tag = cl->y_u.ccccc.c2; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(3))) { - if (IsApplTerm(cl->u.ccccc.c3)) { - CELL *pt = RepAppl(cl->u.ccccc.c3); + if (IsApplTerm(cl->y_u.ccccc.c3)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c3; + clause->ucd.t_ptr = cl->y_u.ccccc.c3; } else - clause->Tag = cl->u.ccccc.c3; + clause->Tag = cl->y_u.ccccc.c3; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(4))) { - if (IsApplTerm(cl->u.ccccc.c4)) { - CELL *pt = RepAppl(cl->u.ccccc.c4); + if (IsApplTerm(cl->y_u.ccccc.c4)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c4; + clause->ucd.t_ptr = cl->y_u.ccccc.c4; } else - clause->Tag = cl->u.ccccc.c4; + clause->Tag = cl->y_u.ccccc.c4; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(5))) { - if (IsApplTerm(cl->u.ccccc.c5)) { - CELL *pt = RepAppl(cl->u.ccccc.c5); + if (IsApplTerm(cl->y_u.ccccc.c5)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c5); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c5; + clause->ucd.t_ptr = cl->y_u.ccccc.c5; } else - clause->Tag = cl->u.ccccc.c5; + clause->Tag = cl->y_u.ccccc.c5; return; } cl = NEXTOP(cl,ccccc); break; case _get_6atoms: if (is_regcopy(myregs, nofregs, Yap_regnotoreg(1))) { - if (IsApplTerm(cl->u.cccccc.c1)) { - CELL *pt = RepAppl(cl->u.cccccc.c1); + if (IsApplTerm(cl->y_u.cccccc.c1)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c1; + clause->ucd.t_ptr = cl->y_u.cccccc.c1; } else - clause->Tag = cl->u.cccccc.c1; + clause->Tag = cl->y_u.cccccc.c1; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(2))) { - if (IsApplTerm(cl->u.cccccc.c2)) { - CELL *pt = RepAppl(cl->u.cccccc.c2); + if (IsApplTerm(cl->y_u.cccccc.c2)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c2; + clause->ucd.t_ptr = cl->y_u.cccccc.c2; } else - clause->Tag = cl->u.cccccc.c2; + clause->Tag = cl->y_u.cccccc.c2; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(3))) { - if (IsApplTerm(cl->u.cccccc.c3)) { - CELL *pt = RepAppl(cl->u.cccccc.c3); + if (IsApplTerm(cl->y_u.cccccc.c3)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c3; + clause->ucd.t_ptr = cl->y_u.cccccc.c3; } else - clause->Tag = cl->u.cccccc.c3; + clause->Tag = cl->y_u.cccccc.c3; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(4))) { - if (IsApplTerm(cl->u.cccccc.c4)) { - CELL *pt = RepAppl(cl->u.cccccc.c4); + if (IsApplTerm(cl->y_u.cccccc.c4)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c4; + clause->ucd.t_ptr = cl->y_u.cccccc.c4; } else - clause->Tag = cl->u.cccccc.c4; + clause->Tag = cl->y_u.cccccc.c4; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(5))) { - if (IsApplTerm(cl->u.cccccc.c5)) { - CELL *pt = RepAppl(cl->u.cccccc.c5); + if (IsApplTerm(cl->y_u.cccccc.c5)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c5); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c5; + clause->ucd.t_ptr = cl->y_u.cccccc.c5; } else - clause->Tag = cl->u.cccccc.c5; + clause->Tag = cl->y_u.cccccc.c5; return; } if (is_regcopy(myregs, nofregs, Yap_regnotoreg(6))) { - if (IsApplTerm(cl->u.cccccc.c6)) { - CELL *pt = RepAppl(cl->u.cccccc.c6); + if (IsApplTerm(cl->y_u.cccccc.c6)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c6); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c6; + clause->ucd.t_ptr = cl->y_u.cccccc.c6; } else - clause->Tag = cl->u.cccccc.c6; + clause->Tag = cl->y_u.cccccc.c6; return; } cl = NEXTOP(cl,cccccc); @@ -416,28 +416,28 @@ cl = NEXTOP(cl,ou); break; case _save_appl_x: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_appl_x_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_pair_x: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_pair_x_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } @@ -456,14 +456,14 @@ cl = NEXTOP(cl,ox); break; case _unify_l_x_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_l_x_var_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } @@ -482,86 +482,86 @@ cl = NEXTOP(cl,ox); break; case _unify_x_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_x_var_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.ox.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.ox.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_l_x_var2: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xl))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xl))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_l_x_var2_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xl))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xl))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_x_var2: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xl))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xl))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_x_var2_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xl))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xl))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oxx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oxx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _save_appl_y: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oy); break; case _save_appl_y_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oy); break; case _save_pair_y: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oy); break; case _save_pair_y_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } @@ -580,14 +580,14 @@ cl = NEXTOP(cl,oy); break; case _unify_l_y_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oy); break; case _unify_l_y_var_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } @@ -606,14 +606,14 @@ cl = NEXTOP(cl,oy); break; case _unify_y_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oy); break; case _unify_y_var_write: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.oy.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.oy.y))) { clause->Tag = (CELL)NULL; return; } @@ -647,7 +647,7 @@ cl = NEXTOP(cl,sc); break; case _get_list: - if (is_regcopy(myregs, nofregs, cl->u.x.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.x.x)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = NEXTOP(cl,x); return; @@ -655,14 +655,14 @@ cl = NEXTOP(cl,x); break; case _put_list: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.x.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.x.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,x); break; case _save_b_x: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.x.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.x.x))) { clause->Tag = (CELL)NULL; return; } @@ -672,21 +672,21 @@ cl = NEXTOP(cl,x); break; case _write_x_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.x.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.x.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,x); break; case _put_dbterm: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xD.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xD.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xD); break; case _get_bigint: - if (is_regcopy(myregs, nofregs, cl->u.xN.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xN.x)) { clause->Tag = AbsAppl((CELL *)FunctorBigInt); clause->ucd.t_ptr = (CELL)NULL; return; @@ -694,82 +694,82 @@ cl = NEXTOP(cl,xN); break; case _put_bigint: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xN.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xN.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xN); break; case _get_atom: - if (is_regcopy(myregs, nofregs, cl->u.xc.x)) { - if (IsApplTerm(cl->u.xc.c)) { - CELL *pt = RepAppl(cl->u.xc.c); + if (is_regcopy(myregs, nofregs, cl->y_u.xc.x)) { + if (IsApplTerm(cl->y_u.xc.c)) { + CELL *pt = RepAppl(cl->y_u.xc.c); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.xc.c; + clause->ucd.t_ptr = cl->y_u.xc.c; } else - clause->Tag = cl->u.xc.c; + clause->Tag = cl->y_u.xc.c; return; } cl = NEXTOP(cl,xc); break; case _put_atom: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xc.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xc.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xc); break; case _get_float: - if (is_regcopy(myregs, nofregs, cl->u.xd.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xd.x)) { clause->Tag = AbsAppl((CELL *)FunctorDouble); - clause->ucd.t_ptr = AbsAppl(cl->u.xd.d); + clause->ucd.t_ptr = AbsAppl(cl->y_u.xd.d); return; } cl = NEXTOP(cl,xd); break; case _put_float: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xd.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xd.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xd); break; case _get_struct: - if (is_regcopy(myregs, nofregs, cl->u.xfa.x)) { - clause->Tag = AbsAppl((CELL *)cl->u.xfa.f); + if (is_regcopy(myregs, nofregs, cl->y_u.xfa.x)) { + clause->Tag = AbsAppl((CELL *)cl->y_u.xfa.f); clause->ucd.WorkPC = NEXTOP(cl,xfa); return; } cl = NEXTOP(cl,xfa); break; case _put_struct: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xfa.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xfa.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xfa); break; case _get_longint: - if (is_regcopy(myregs, nofregs, cl->u.xi.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xi.x)) { clause->Tag = AbsAppl((CELL *)FunctorLongInt); - clause->ucd.t_ptr = AbsAppl(cl->u.xi.i); + clause->ucd.t_ptr = AbsAppl(cl->y_u.xi.i); return; } cl = NEXTOP(cl,xi); break; case _put_longint: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xi.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xi.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xi); break; case _p_atom_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_atom+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -777,11 +777,11 @@ cl = NEXTOP(cl,xl); break; case _p_atomic_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_atomic+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -789,11 +789,11 @@ cl = NEXTOP(cl,xl); break; case _p_compound_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_compound+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -801,11 +801,11 @@ cl = NEXTOP(cl,xl); break; case _p_db_ref_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = AbsAppl((CELL *)FunctorDBRef); clause->ucd.t_ptr = (CELL)NULL; return; @@ -813,11 +813,11 @@ cl = NEXTOP(cl,xl); break; case _p_float_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = AbsAppl((CELL *)FunctorDouble); clause->ucd.t_ptr = (CELL)NULL; return; @@ -825,11 +825,11 @@ cl = NEXTOP(cl,xl); break; case _p_integer_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_integer+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -837,18 +837,18 @@ cl = NEXTOP(cl,xl); break; case _p_nonvar_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xl); break; case _p_number_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_number+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -856,11 +856,11 @@ cl = NEXTOP(cl,xl); break; case _p_primitive_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_primitive+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -868,11 +868,11 @@ cl = NEXTOP(cl,xl); break; case _p_var_x: - if (cl->u.xl.F != FAILCODE) { + if (cl->y_u.xl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.xl.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xl.x)) { clause->Tag = (_var+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -880,7 +880,7 @@ cl = NEXTOP(cl,xl); break; case _get_string: - if (is_regcopy(myregs, nofregs, cl->u.xu.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xu.x)) { clause->Tag = AbsAppl((CELL *)FunctorString); clause->ucd.t_ptr = (CELL)NULL; return; @@ -888,21 +888,21 @@ cl = NEXTOP(cl,xu); break; case _get_x_val: - if (!(nofregs = link_regcopies(myregs, nofregs, cl->u.xx.xl, cl->u.xx.xr))) { + if (!(nofregs = link_regcopies(myregs, nofregs, cl->y_u.xx.xl, cl->y_u.xx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _get_x_var: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.xx.xr, cl->u.xx.xl))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.xx.xr, cl->y_u.xx.xl))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _gl_void_valx: - if (is_regcopy(myregs, nofregs, cl->u.xx.xl)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xx.xl)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -910,19 +910,19 @@ cl = NEXTOP(cl,xx); break; case _gl_void_varx: - if (is_regcopy(myregs, nofregs, cl->u.xx.xl)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xx.xl)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _glist_valx: - if (is_regcopy(myregs, nofregs, cl->u.xx.xl)) { + if (is_regcopy(myregs, nofregs, cl->y_u.xx.xl)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -930,211 +930,211 @@ cl = NEXTOP(cl,xx); break; case _put_x_val: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.xx.xl, cl->u.xx.xr))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.xx.xl, cl->y_u.xx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _put_x_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xx.xl))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xx.xl))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xx.xr))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xx.xr))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _p_func2s_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxc.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxc.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxc); break; case _p_and_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_arg_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_div_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_div_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_func2s_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_or_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_plus_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_sll_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_sll_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_slr_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_slr_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_times_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxn.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxn.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxn); break; case _p_and_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_arg_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_div_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_func2f_xx: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_func2s_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_minus_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_or_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_plus_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_sll_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_slr_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _p_times_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxx); break; case _put_xx_val: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.xxxx.xl1, cl->u.xxxx.xr1))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.xxxx.xl1, cl->y_u.xxxx.xr1))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.xxxx.xl2, cl->u.xxxx.xr2))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.xxxx.xl2, cl->y_u.xxxx.xr2))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxxx); break; case _p_func2f_xy: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.xxy.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.xxy.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxy); break; case _save_b_y: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.y.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.y.y))) { clause->Tag = (CELL)NULL; return; } @@ -1147,18 +1147,18 @@ cl = NEXTOP(cl,y); break; case _write_y_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.y.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.y.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,y); break; case _p_atom_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_atom+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1166,11 +1166,11 @@ cl = NEXTOP(cl,yl); break; case _p_atomic_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_atomic+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1178,11 +1178,11 @@ cl = NEXTOP(cl,yl); break; case _p_compound_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_compound+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1190,11 +1190,11 @@ cl = NEXTOP(cl,yl); break; case _p_db_ref_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = AbsAppl((CELL *)FunctorDBRef); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1202,11 +1202,11 @@ cl = NEXTOP(cl,yl); break; case _p_float_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = AbsAppl((CELL *)FunctorDouble); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1214,11 +1214,11 @@ cl = NEXTOP(cl,yl); break; case _p_integer_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_integer+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1226,18 +1226,18 @@ cl = NEXTOP(cl,yl); break; case _p_nonvar_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yl); break; case _p_number_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_number+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1245,11 +1245,11 @@ cl = NEXTOP(cl,yl); break; case _p_primitive_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_primitive+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1257,11 +1257,11 @@ cl = NEXTOP(cl,yl); break; case _p_var_y: - if (cl->u.yl.F != FAILCODE) { + if (cl->y_u.yl.F != FAILCODE) { clause->Tag = (CELL)NULL; return; } - if (is_regcopy(myregs, nofregs, cl->u.yl.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yl.y)) { clause->Tag = (_var+1)*sizeof(CELL); clause->ucd.t_ptr = (CELL)NULL; return; @@ -1269,21 +1269,21 @@ cl = NEXTOP(cl,yl); break; case _get_y_val: - if (!(nofregs = link_regcopies(myregs, nofregs, cl->u.yx.x, cl->u.yx.y))) { + if (!(nofregs = link_regcopies(myregs, nofregs, cl->y_u.yx.x, cl->y_u.yx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _get_y_var: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.yx.x, cl->u.yx.y))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.yx.x, cl->y_u.yx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _gl_void_valy: - if (is_regcopy(myregs, nofregs, cl->u.yx.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yx.y)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -1291,19 +1291,19 @@ cl = NEXTOP(cl,yx); break; case _gl_void_vary: - if (is_regcopy(myregs, nofregs, cl->u.yx.y)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yx.y)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _glist_valy: - if (is_regcopy(myregs, nofregs, cl->u.yx.x)) { + if (is_regcopy(myregs, nofregs, cl->y_u.yx.x)) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -1311,211 +1311,211 @@ cl = NEXTOP(cl,yx); break; case _put_unsafe: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.yx.y, cl->u.yx.x))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.yx.y, cl->y_u.yx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _put_y_val: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.yx.y, cl->u.yx.x))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.yx.y, cl->y_u.yx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _put_y_var: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yx.x))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _p_func2s_y_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxc.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxc.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxc); break; case _p_and_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_arg_y_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_div_y_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_div_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_func2s_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_or_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_plus_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_sll_y_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_sll_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_slr_y_cv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_slr_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_times_y_vc: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxn.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxn.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxn); break; case _p_and_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_arg_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_div_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_func2f_yx: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_func2s_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_minus_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_or_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_plus_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_sll_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_slr_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_times_y_vv: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yxx.y))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yxx.y))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yxx); break; case _p_func2f_yy: - if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.yyx.x))) { + if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.yyx.x))) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yyx); break; case _get_yy_var: - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.yyxx.x1, cl->u.yyxx.y1))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.yyxx.x1, cl->y_u.yyxx.y1))) { clause->Tag = (CELL)NULL; return; } - if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.yyxx.x2, cl->u.yyxx.y2))) { + if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.yyxx.x2, cl->y_u.yyxx.y2))) { clause->Tag = (CELL)NULL; return; } diff --git a/H/headclause.h b/H/headclause.h index 23b42888f..31d64ab96 100644 --- a/H/headclause.h +++ b/H/headclause.h @@ -14,195 +14,195 @@ break; case _get_2atoms: if (iarg == Yap_regnotoreg(1)) { - if (IsApplTerm(cl->u.cc.c1)) { - CELL *pt = RepAppl(cl->u.cc.c1); + if (IsApplTerm(cl->y_u.cc.c1)) { + CELL *pt = RepAppl(cl->y_u.cc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cc.c1; + clause->ucd.t_ptr = cl->y_u.cc.c1; } else - clause->Tag = cl->u.cc.c1; + clause->Tag = cl->y_u.cc.c1; return; } if (iarg == Yap_regnotoreg(2)) { - if (IsApplTerm(cl->u.cc.c2)) { - CELL *pt = RepAppl(cl->u.cc.c2); + if (IsApplTerm(cl->y_u.cc.c2)) { + CELL *pt = RepAppl(cl->y_u.cc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cc.c2; + clause->ucd.t_ptr = cl->y_u.cc.c2; } else - clause->Tag = cl->u.cc.c2; + clause->Tag = cl->y_u.cc.c2; return; } cl = NEXTOP(cl,cc); break; case _get_3atoms: if (iarg == Yap_regnotoreg(1)) { - if (IsApplTerm(cl->u.ccc.c1)) { - CELL *pt = RepAppl(cl->u.ccc.c1); + if (IsApplTerm(cl->y_u.ccc.c1)) { + CELL *pt = RepAppl(cl->y_u.ccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c1; + clause->ucd.t_ptr = cl->y_u.ccc.c1; } else - clause->Tag = cl->u.ccc.c1; + clause->Tag = cl->y_u.ccc.c1; return; } if (iarg == Yap_regnotoreg(2)) { - if (IsApplTerm(cl->u.ccc.c2)) { - CELL *pt = RepAppl(cl->u.ccc.c2); + if (IsApplTerm(cl->y_u.ccc.c2)) { + CELL *pt = RepAppl(cl->y_u.ccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c2; + clause->ucd.t_ptr = cl->y_u.ccc.c2; } else - clause->Tag = cl->u.ccc.c2; + clause->Tag = cl->y_u.ccc.c2; return; } if (iarg == Yap_regnotoreg(3)) { - if (IsApplTerm(cl->u.ccc.c3)) { - CELL *pt = RepAppl(cl->u.ccc.c3); + if (IsApplTerm(cl->y_u.ccc.c3)) { + CELL *pt = RepAppl(cl->y_u.ccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccc.c3; + clause->ucd.t_ptr = cl->y_u.ccc.c3; } else - clause->Tag = cl->u.ccc.c3; + clause->Tag = cl->y_u.ccc.c3; return; } cl = NEXTOP(cl,ccc); break; case _get_4atoms: if (iarg == Yap_regnotoreg(1)) { - if (IsApplTerm(cl->u.cccc.c1)) { - CELL *pt = RepAppl(cl->u.cccc.c1); + if (IsApplTerm(cl->y_u.cccc.c1)) { + CELL *pt = RepAppl(cl->y_u.cccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c1; + clause->ucd.t_ptr = cl->y_u.cccc.c1; } else - clause->Tag = cl->u.cccc.c1; + clause->Tag = cl->y_u.cccc.c1; return; } if (iarg == Yap_regnotoreg(2)) { - if (IsApplTerm(cl->u.cccc.c2)) { - CELL *pt = RepAppl(cl->u.cccc.c2); + if (IsApplTerm(cl->y_u.cccc.c2)) { + CELL *pt = RepAppl(cl->y_u.cccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c2; + clause->ucd.t_ptr = cl->y_u.cccc.c2; } else - clause->Tag = cl->u.cccc.c2; + clause->Tag = cl->y_u.cccc.c2; return; } if (iarg == Yap_regnotoreg(3)) { - if (IsApplTerm(cl->u.cccc.c3)) { - CELL *pt = RepAppl(cl->u.cccc.c3); + if (IsApplTerm(cl->y_u.cccc.c3)) { + CELL *pt = RepAppl(cl->y_u.cccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c3; + clause->ucd.t_ptr = cl->y_u.cccc.c3; } else - clause->Tag = cl->u.cccc.c3; + clause->Tag = cl->y_u.cccc.c3; return; } if (iarg == Yap_regnotoreg(4)) { - if (IsApplTerm(cl->u.cccc.c4)) { - CELL *pt = RepAppl(cl->u.cccc.c4); + if (IsApplTerm(cl->y_u.cccc.c4)) { + CELL *pt = RepAppl(cl->y_u.cccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccc.c4; + clause->ucd.t_ptr = cl->y_u.cccc.c4; } else - clause->Tag = cl->u.cccc.c4; + clause->Tag = cl->y_u.cccc.c4; return; } cl = NEXTOP(cl,cccc); break; case _get_5atoms: if (iarg == Yap_regnotoreg(1)) { - if (IsApplTerm(cl->u.ccccc.c1)) { - CELL *pt = RepAppl(cl->u.ccccc.c1); + if (IsApplTerm(cl->y_u.ccccc.c1)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c1; + clause->ucd.t_ptr = cl->y_u.ccccc.c1; } else - clause->Tag = cl->u.ccccc.c1; + clause->Tag = cl->y_u.ccccc.c1; return; } if (iarg == Yap_regnotoreg(2)) { - if (IsApplTerm(cl->u.ccccc.c2)) { - CELL *pt = RepAppl(cl->u.ccccc.c2); + if (IsApplTerm(cl->y_u.ccccc.c2)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c2; + clause->ucd.t_ptr = cl->y_u.ccccc.c2; } else - clause->Tag = cl->u.ccccc.c2; + clause->Tag = cl->y_u.ccccc.c2; return; } if (iarg == Yap_regnotoreg(3)) { - if (IsApplTerm(cl->u.ccccc.c3)) { - CELL *pt = RepAppl(cl->u.ccccc.c3); + if (IsApplTerm(cl->y_u.ccccc.c3)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c3; + clause->ucd.t_ptr = cl->y_u.ccccc.c3; } else - clause->Tag = cl->u.ccccc.c3; + clause->Tag = cl->y_u.ccccc.c3; return; } if (iarg == Yap_regnotoreg(4)) { - if (IsApplTerm(cl->u.ccccc.c4)) { - CELL *pt = RepAppl(cl->u.ccccc.c4); + if (IsApplTerm(cl->y_u.ccccc.c4)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c4; + clause->ucd.t_ptr = cl->y_u.ccccc.c4; } else - clause->Tag = cl->u.ccccc.c4; + clause->Tag = cl->y_u.ccccc.c4; return; } if (iarg == Yap_regnotoreg(5)) { - if (IsApplTerm(cl->u.ccccc.c5)) { - CELL *pt = RepAppl(cl->u.ccccc.c5); + if (IsApplTerm(cl->y_u.ccccc.c5)) { + CELL *pt = RepAppl(cl->y_u.ccccc.c5); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.ccccc.c5; + clause->ucd.t_ptr = cl->y_u.ccccc.c5; } else - clause->Tag = cl->u.ccccc.c5; + clause->Tag = cl->y_u.ccccc.c5; return; } cl = NEXTOP(cl,ccccc); break; case _get_6atoms: if (iarg == Yap_regnotoreg(1)) { - if (IsApplTerm(cl->u.cccccc.c1)) { - CELL *pt = RepAppl(cl->u.cccccc.c1); + if (IsApplTerm(cl->y_u.cccccc.c1)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c1); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c1; + clause->ucd.t_ptr = cl->y_u.cccccc.c1; } else - clause->Tag = cl->u.cccccc.c1; + clause->Tag = cl->y_u.cccccc.c1; return; } if (iarg == Yap_regnotoreg(2)) { - if (IsApplTerm(cl->u.cccccc.c2)) { - CELL *pt = RepAppl(cl->u.cccccc.c2); + if (IsApplTerm(cl->y_u.cccccc.c2)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c2); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c2; + clause->ucd.t_ptr = cl->y_u.cccccc.c2; } else - clause->Tag = cl->u.cccccc.c2; + clause->Tag = cl->y_u.cccccc.c2; return; } if (iarg == Yap_regnotoreg(3)) { - if (IsApplTerm(cl->u.cccccc.c3)) { - CELL *pt = RepAppl(cl->u.cccccc.c3); + if (IsApplTerm(cl->y_u.cccccc.c3)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c3); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c3; + clause->ucd.t_ptr = cl->y_u.cccccc.c3; } else - clause->Tag = cl->u.cccccc.c3; + clause->Tag = cl->y_u.cccccc.c3; return; } if (iarg == Yap_regnotoreg(4)) { - if (IsApplTerm(cl->u.cccccc.c4)) { - CELL *pt = RepAppl(cl->u.cccccc.c4); + if (IsApplTerm(cl->y_u.cccccc.c4)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c4); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c4; + clause->ucd.t_ptr = cl->y_u.cccccc.c4; } else - clause->Tag = cl->u.cccccc.c4; + clause->Tag = cl->y_u.cccccc.c4; return; } if (iarg == Yap_regnotoreg(5)) { - if (IsApplTerm(cl->u.cccccc.c5)) { - CELL *pt = RepAppl(cl->u.cccccc.c5); + if (IsApplTerm(cl->y_u.cccccc.c5)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c5); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c5; + clause->ucd.t_ptr = cl->y_u.cccccc.c5; } else - clause->Tag = cl->u.cccccc.c5; + clause->Tag = cl->y_u.cccccc.c5; return; } if (iarg == Yap_regnotoreg(6)) { - if (IsApplTerm(cl->u.cccccc.c6)) { - CELL *pt = RepAppl(cl->u.cccccc.c6); + if (IsApplTerm(cl->y_u.cccccc.c6)) { + CELL *pt = RepAppl(cl->y_u.cccccc.c6); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.cccccc.c6; + clause->ucd.t_ptr = cl->y_u.cccccc.c6; } else - clause->Tag = cl->u.cccccc.c6; + clause->Tag = cl->y_u.cccccc.c6; return; } cl = NEXTOP(cl,cccccc); @@ -383,28 +383,28 @@ cl = NEXTOP(cl,ou); break; case _save_appl_x: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_appl_x_write: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_pair_x: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _save_pair_x_write: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } @@ -423,14 +423,14 @@ cl = NEXTOP(cl,ox); break; case _unify_l_x_var: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_l_x_var_write: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } @@ -449,58 +449,58 @@ cl = NEXTOP(cl,ox); break; case _unify_x_var: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_x_var_write: - if (iarg == cl->u.ox.x) { + if (iarg == cl->y_u.ox.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,ox); break; case _unify_l_x_var2: - if (iarg == cl->u.oxx.xl) { + if (iarg == cl->y_u.oxx.xl) { clause->Tag = (CELL)NULL; return; } - if (iarg == cl->u.oxx.xr) { + if (iarg == cl->y_u.oxx.xr) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_l_x_var2_write: - if (iarg == cl->u.oxx.xl) { + if (iarg == cl->y_u.oxx.xl) { clause->Tag = (CELL)NULL; return; } - if (iarg == cl->u.oxx.xr) { + if (iarg == cl->y_u.oxx.xr) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_x_var2: - if (iarg == cl->u.oxx.xl) { + if (iarg == cl->y_u.oxx.xl) { clause->Tag = (CELL)NULL; return; } - if (iarg == cl->u.oxx.xr) { + if (iarg == cl->y_u.oxx.xr) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,oxx); break; case _unify_x_var2_write: - if (iarg == cl->u.oxx.xl) { + if (iarg == cl->y_u.oxx.xl) { clause->Tag = (CELL)NULL; return; } - if (iarg == cl->u.oxx.xr) { + if (iarg == cl->y_u.oxx.xr) { clause->Tag = (CELL)NULL; return; } @@ -558,7 +558,7 @@ cl = NEXTOP(cl,s); break; case _get_list: - if (iarg == cl->u.x.x) { + if (iarg == cl->y_u.x.x) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = NEXTOP(cl,x); return; @@ -566,21 +566,21 @@ cl = NEXTOP(cl,x); break; case _put_list: - if (iarg == cl->u.x.x) { + if (iarg == cl->y_u.x.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,x); break; case _put_dbterm: - if (iarg == cl->u.xD.x) { + if (iarg == cl->y_u.xD.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xD); break; case _get_bigint: - if (iarg == cl->u.xN.x) { + if (iarg == cl->y_u.xN.x) { clause->Tag = AbsAppl((CELL *)FunctorBigInt); clause->ucd.t_ptr = (CELL)NULL; return; @@ -588,78 +588,78 @@ cl = NEXTOP(cl,xN); break; case _put_bigint: - if (iarg == cl->u.xN.x) { + if (iarg == cl->y_u.xN.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xN); break; case _get_atom: - if (iarg == cl->u.xc.x) { - if (IsApplTerm(cl->u.xc.c)) { - CELL *pt = RepAppl(cl->u.xc.c); + if (iarg == cl->y_u.xc.x) { + if (IsApplTerm(cl->y_u.xc.c)) { + CELL *pt = RepAppl(cl->y_u.xc.c); clause->Tag = AbsAppl((CELL *)pt[0]); - clause->ucd.t_ptr = cl->u.xc.c; + clause->ucd.t_ptr = cl->y_u.xc.c; } else - clause->Tag = cl->u.xc.c; + clause->Tag = cl->y_u.xc.c; return; } cl = NEXTOP(cl,xc); break; case _put_atom: - if (iarg == cl->u.xc.x) { + if (iarg == cl->y_u.xc.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xc); break; case _get_float: - if (iarg == cl->u.xd.x) { + if (iarg == cl->y_u.xd.x) { clause->Tag = AbsAppl((CELL *)FunctorDouble); - clause->ucd.t_ptr = AbsAppl(cl->u.xd.d); + clause->ucd.t_ptr = AbsAppl(cl->y_u.xd.d); return; } cl = NEXTOP(cl,xd); break; case _put_float: - if (iarg == cl->u.xd.x) { + if (iarg == cl->y_u.xd.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xd); break; case _get_struct: - if (iarg == cl->u.xfa.x) { - clause->Tag = AbsAppl((CELL *)cl->u.xfa.f); + if (iarg == cl->y_u.xfa.x) { + clause->Tag = AbsAppl((CELL *)cl->y_u.xfa.f); clause->ucd.WorkPC = NEXTOP(cl,xfa); return; } cl = NEXTOP(cl,xfa); break; case _put_struct: - if (iarg == cl->u.xfa.x) { + if (iarg == cl->y_u.xfa.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xfa); break; case _get_longint: - if (iarg == cl->u.xi.x) { + if (iarg == cl->y_u.xi.x) { clause->Tag = AbsAppl((CELL *)FunctorLongInt); - clause->ucd.t_ptr = AbsAppl(cl->u.xi.i); + clause->ucd.t_ptr = AbsAppl(cl->y_u.xi.i); return; } cl = NEXTOP(cl,xi); break; case _put_longint: - if (iarg == cl->u.xi.x) { + if (iarg == cl->y_u.xi.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xi); break; case _get_string: - if (iarg == cl->u.xu.x) { + if (iarg == cl->y_u.xu.x) { clause->Tag = AbsAppl((CELL *)FunctorString); clause->ucd.t_ptr = (CELL)NULL; return; @@ -667,23 +667,23 @@ cl = NEXTOP(cl,xu); break; case _get_x_val: - if (cl->u.xx.xl == iarg || - cl->u.xx.xr == iarg) { + if (cl->y_u.xx.xl == iarg || + cl->y_u.xx.xr == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _get_x_var: - if (cl->u.xx.xr == iarg || - cl->u.xx.xl == iarg) { + if (cl->y_u.xx.xr == iarg || + cl->y_u.xx.xl == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _gl_void_valx: - if (iarg == cl->u.xx.xl) { + if (iarg == cl->y_u.xx.xl) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -691,19 +691,19 @@ cl = NEXTOP(cl,xx); break; case _gl_void_varx: - if (iarg == cl->u.xx.xl) { + if (iarg == cl->y_u.xx.xl) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; } - if (iarg == cl->u.xx.xr) { + if (iarg == cl->y_u.xx.xr) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _glist_valx: - if (iarg == cl->u.xx.xl) { + if (iarg == cl->y_u.xx.xl) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -711,46 +711,46 @@ cl = NEXTOP(cl,xx); break; case _put_x_val: - if (cl->u.xx.xl == iarg || - cl->u.xx.xr == iarg) { + if (cl->y_u.xx.xl == iarg || + cl->y_u.xx.xr == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _put_x_var: - if (iarg == cl->u.xx.xl) { + if (iarg == cl->y_u.xx.xl) { clause->Tag = (CELL)NULL; return; } - if (iarg == cl->u.xx.xr) { + if (iarg == cl->y_u.xx.xr) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xx); break; case _put_xx_val: - if (cl->u.xxxx.xl1 == iarg || - cl->u.xxxx.xr1 == iarg) { + if (cl->y_u.xxxx.xl1 == iarg || + cl->y_u.xxxx.xr1 == iarg) { clause->Tag = (CELL)NULL; return; } - if (cl->u.xxxx.xl2 == iarg || - cl->u.xxxx.xr2 == iarg) { + if (cl->y_u.xxxx.xl2 == iarg || + cl->y_u.xxxx.xr2 == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,xxxx); break; case _get_y_val: - if (cl->u.yx.x == iarg) { + if (cl->y_u.yx.x == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _get_y_var: - if (cl->u.yx.x == iarg) { + if (cl->y_u.yx.x == iarg) { clause->Tag = (CELL)NULL; return; } @@ -763,7 +763,7 @@ cl = NEXTOP(cl,yx); break; case _glist_valy: - if (iarg == cl->u.yx.x) { + if (iarg == cl->y_u.yx.x) { clause->Tag = AbsPair(NULL); clause->ucd.WorkPC = cl; return; @@ -771,32 +771,32 @@ cl = NEXTOP(cl,yx); break; case _put_unsafe: - if (cl->u.yx.x == iarg) { + if (cl->y_u.yx.x == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _put_y_val: - if (cl->u.yx.x == iarg) { + if (cl->y_u.yx.x == iarg) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _put_y_var: - if (iarg == cl->u.yx.x) { + if (iarg == cl->y_u.yx.x) { clause->Tag = (CELL)NULL; return; } cl = NEXTOP(cl,yx); break; case _get_yy_var: - if (cl->u.yyxx.x1 == iarg) { + if (cl->y_u.yyxx.x1 == iarg) { clause->Tag = (CELL)NULL; return; } - if (cl->u.yyxx.x2 == iarg) { + if (cl->y_u.yyxx.x2 == iarg) { clause->Tag = (CELL)NULL; return; } diff --git a/H/rclause.h b/H/rclause.h index 4cf3a05fd..cfb35b8f7 100644 --- a/H/rclause.h +++ b/H/rclause.h @@ -18,56 +18,56 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) switch (op) { /* instructions type D */ case _write_dbterm: - pc->u.D.D = DBGroundTermAdjust(pc->u.D.D); + pc->y_u.D.D = DBGroundTermAdjust(pc->y_u.D.D); pc = NEXTOP(pc,D); break; /* instructions type Illss */ case _enter_lu_pred: - pc->u.Illss.I = PtoLUIndexAdjust(pc->u.Illss.I); - pc->u.Illss.l1 = PtoOpAdjust(pc->u.Illss.l1); - pc->u.Illss.l2 = PtoOpAdjust(pc->u.Illss.l2); - pc->u.Illss.s = ConstantAdjust(pc->u.Illss.s); - pc->u.Illss.e = ConstantAdjust(pc->u.Illss.e); + pc->y_u.Illss.I = PtoLUIndexAdjust(pc->y_u.Illss.I); + pc->y_u.Illss.l1 = PtoOpAdjust(pc->y_u.Illss.l1); + pc->y_u.Illss.l2 = PtoOpAdjust(pc->y_u.Illss.l2); + pc->y_u.Illss.s = ConstantAdjust(pc->y_u.Illss.s); + pc->y_u.Illss.e = ConstantAdjust(pc->y_u.Illss.e); opc = NEXTOP(pc,Illss); - pc = pc->u.Illss.l1; + pc = pc->y_u.Illss.l1; break; /* instructions type L */ case _alloc_for_logical_pred: - pc->u.L.ClBase = PtoLUClauseAdjust(pc->u.L.ClBase); + pc->y_u.L.ClBase = PtoLUClauseAdjust(pc->y_u.L.ClBase); pc = NEXTOP(pc,L); break; /* instructions type N */ case _write_bigint: - pc->u.N.b = BlobTermInCodeAdjust(pc->u.N.b); + pc->y_u.N.b = BlobTermInCodeAdjust(pc->y_u.N.b); pc = NEXTOP(pc,N); break; /* instructions type Osblp */ case _either: case _or_else: - OrArgAdjust(pc->u.Osblp.or_arg); - pc->u.Osblp.s = ConstantAdjust(pc->u.Osblp.s); - pc->u.Osblp.bmap = CellPtoHeapAdjust(pc->u.Osblp.bmap); - pc->u.Osblp.l = PtoOpAdjust(pc->u.Osblp.l); - pc->u.Osblp.p0 = PtoPredAdjust(pc->u.Osblp.p0); + OrArgAdjust(pc->y_u.Osblp.or_arg); + pc->y_u.Osblp.s = ConstantAdjust(pc->y_u.Osblp.s); + pc->y_u.Osblp.bmap = CellPtoHeapAdjust(pc->y_u.Osblp.bmap); + pc->y_u.Osblp.l = PtoOpAdjust(pc->y_u.Osblp.l); + pc->y_u.Osblp.p0 = PtoPredAdjust(pc->y_u.Osblp.p0); pc = NEXTOP(pc,Osblp); break; /* instructions type Osbmp */ case _p_execute: case _p_execute_tail: - OrArgAdjust(pc->u.Osbmp.or_arg); - pc->u.Osbmp.s = ConstantAdjust(pc->u.Osbmp.s); - pc->u.Osbmp.bmap = CellPtoHeapAdjust(pc->u.Osbmp.bmap); - pc->u.Osbmp.mod = ModuleAdjust(pc->u.Osbmp.mod); - pc->u.Osbmp.p0 = PtoPredAdjust(pc->u.Osbmp.p0); + OrArgAdjust(pc->y_u.Osbmp.or_arg); + pc->y_u.Osbmp.s = ConstantAdjust(pc->y_u.Osbmp.s); + pc->y_u.Osbmp.bmap = CellPtoHeapAdjust(pc->y_u.Osbmp.bmap); + pc->y_u.Osbmp.mod = ModuleAdjust(pc->y_u.Osbmp.mod); + pc->y_u.Osbmp.p0 = PtoPredAdjust(pc->y_u.Osbmp.p0); pc = NEXTOP(pc,Osbmp); break; /* instructions type Osbpa */ case _ensure_space: - OrArgAdjust(pc->u.Osbpa.or_arg); - pc->u.Osbpa.s = ConstantAdjust(pc->u.Osbpa.s); - pc->u.Osbpa.bmap = CellPtoHeapAdjust(pc->u.Osbpa.bmap); - pc->u.Osbpa.p = PtoPredAdjust(pc->u.Osbpa.p); - pc->u.Osbpa.i = ArityAdjust(pc->u.Osbpa.i); + OrArgAdjust(pc->y_u.Osbpa.or_arg); + pc->y_u.Osbpa.s = ConstantAdjust(pc->y_u.Osbpa.s); + pc->y_u.Osbpa.bmap = CellPtoHeapAdjust(pc->y_u.Osbpa.bmap); + pc->y_u.Osbpa.p = PtoPredAdjust(pc->y_u.Osbpa.p); + pc->y_u.Osbpa.i = ArityAdjust(pc->y_u.Osbpa.i); pc = NEXTOP(pc,Osbpa); break; /* instructions type Osbpp */ @@ -76,22 +76,22 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _call_usercpred: case _fcall: case _p_execute2: - OrArgAdjust(pc->u.Osbpp.or_arg); - pc->u.Osbpp.s = ConstantAdjust(pc->u.Osbpp.s); - pc->u.Osbpp.bmap = CellPtoHeapAdjust(pc->u.Osbpp.bmap); - pc->u.Osbpp.p = PtoPredAdjust(pc->u.Osbpp.p); - pc->u.Osbpp.p0 = PtoPredAdjust(pc->u.Osbpp.p0); + OrArgAdjust(pc->y_u.Osbpp.or_arg); + pc->y_u.Osbpp.s = ConstantAdjust(pc->y_u.Osbpp.s); + pc->y_u.Osbpp.bmap = CellPtoHeapAdjust(pc->y_u.Osbpp.bmap); + pc->y_u.Osbpp.p = PtoPredAdjust(pc->y_u.Osbpp.p); + pc->y_u.Osbpp.p0 = PtoPredAdjust(pc->y_u.Osbpp.p0); pc = NEXTOP(pc,Osbpp); break; /* instructions type OtILl */ case _count_trust_logical: case _profiled_trust_logical: case _trust_logical: - OrArgAdjust(pc->u.OtILl.or_arg); - TabEntryAdjust(pc->u.OtILl.te); - pc->u.OtILl.block = PtoLUIndexAdjust(pc->u.OtILl.block); - pc->u.OtILl.d = PtoLUClauseAdjust(pc->u.OtILl.d); - pc->u.OtILl.n = PtoOpAdjust(pc->u.OtILl.n); + OrArgAdjust(pc->y_u.OtILl.or_arg); + TabEntryAdjust(pc->y_u.OtILl.te); + pc->y_u.OtILl.block = PtoLUIndexAdjust(pc->y_u.OtILl.block); + pc->y_u.OtILl.d = PtoLUClauseAdjust(pc->y_u.OtILl.d); + pc->y_u.OtILl.n = PtoOpAdjust(pc->y_u.OtILl.n); pc = opc; break; /* instructions type OtaLl */ @@ -99,12 +99,12 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _profiled_retry_logical: case _retry_logical: case _try_logical: - OrArgAdjust(pc->u.OtaLl.or_arg); - TabEntryAdjust(pc->u.OtaLl.te); - pc->u.OtaLl.s = ArityAdjust(pc->u.OtaLl.s); - pc->u.OtaLl.d = PtoLUClauseAdjust(pc->u.OtaLl.d); - pc->u.OtaLl.n = PtoOpAdjust(pc->u.OtaLl.n); - pc = pc->u.OtaLl.n; + OrArgAdjust(pc->y_u.OtaLl.or_arg); + TabEntryAdjust(pc->y_u.OtaLl.te); + pc->y_u.OtaLl.s = ArityAdjust(pc->y_u.OtaLl.s); + pc->y_u.OtaLl.d = PtoLUClauseAdjust(pc->y_u.OtaLl.d); + pc->y_u.OtaLl.n = PtoOpAdjust(pc->y_u.OtaLl.n); + pc = pc->y_u.OtaLl.n; break; /* instructions type OtapFs */ case _cut_c: @@ -113,12 +113,12 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _retry_userc: case _try_c: case _try_userc: - OrArgAdjust(pc->u.OtapFs.or_arg); - TabEntryAdjust(pc->u.OtapFs.te); - pc->u.OtapFs.s = ArityAdjust(pc->u.OtapFs.s); - pc->u.OtapFs.p = PtoPredAdjust(pc->u.OtapFs.p); - pc->u.OtapFs.f = ExternalFunctionAdjust(pc->u.OtapFs.f); - pc->u.OtapFs.extra = ConstantAdjust(pc->u.OtapFs.extra); + OrArgAdjust(pc->y_u.OtapFs.or_arg); + TabEntryAdjust(pc->y_u.OtapFs.te); + pc->y_u.OtapFs.s = ArityAdjust(pc->y_u.OtapFs.s); + pc->y_u.OtapFs.p = PtoPredAdjust(pc->y_u.OtapFs.p); + pc->y_u.OtapFs.f = ExternalFunctionAdjust(pc->y_u.OtapFs.f); + pc->y_u.OtapFs.extra = ConstantAdjust(pc->y_u.OtapFs.extra); pc = NEXTOP(pc,OtapFs); break; /* instructions type Otapl */ @@ -137,77 +137,77 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _try_and_mark: case _try_clause: case _try_me: - OrArgAdjust(pc->u.Otapl.or_arg); - TabEntryAdjust(pc->u.Otapl.te); - pc->u.Otapl.s = ArityAdjust(pc->u.Otapl.s); - pc->u.Otapl.p = PtoPredAdjust(pc->u.Otapl.p); - pc->u.Otapl.d = PtoOpAdjust(pc->u.Otapl.d); + OrArgAdjust(pc->y_u.Otapl.or_arg); + TabEntryAdjust(pc->y_u.Otapl.te); + pc->y_u.Otapl.s = ArityAdjust(pc->y_u.Otapl.s); + pc->y_u.Otapl.p = PtoPredAdjust(pc->y_u.Otapl.p); + pc->y_u.Otapl.d = PtoOpAdjust(pc->y_u.Otapl.d); pc = NEXTOP(pc,Otapl); break; /* instructions type aFlp */ case _native_me: - pc->u.aFlp.n = ArityAdjust(pc->u.aFlp.n); - pc->u.aFlp.native = ExternalFunctionAdjust(pc->u.aFlp.native); - pc->u.aFlp.native_next = PtoOpAdjust(pc->u.aFlp.native_next); - pc->u.aFlp.p = PtoPredAdjust(pc->u.aFlp.p); + pc->y_u.aFlp.n = ArityAdjust(pc->y_u.aFlp.n); + pc->y_u.aFlp.native = ExternalFunctionAdjust(pc->y_u.aFlp.native); + pc->y_u.aFlp.native_next = PtoOpAdjust(pc->y_u.aFlp.native_next); + pc->y_u.aFlp.p = PtoPredAdjust(pc->y_u.aFlp.p); pc = NEXTOP(pc,aFlp); break; /* instructions type c */ case _write_atom: - pc->u.c.c = ConstantTermAdjust(pc->u.c.c); + pc->y_u.c.c = ConstantTermAdjust(pc->y_u.c.c); pc = NEXTOP(pc,c); break; /* instructions type cc */ case _get_2atoms: - pc->u.cc.c1 = ConstantTermAdjust(pc->u.cc.c1); - pc->u.cc.c2 = ConstantTermAdjust(pc->u.cc.c2); + pc->y_u.cc.c1 = ConstantTermAdjust(pc->y_u.cc.c1); + pc->y_u.cc.c2 = ConstantTermAdjust(pc->y_u.cc.c2); pc = NEXTOP(pc,cc); break; /* instructions type ccc */ case _get_3atoms: - pc->u.ccc.c1 = ConstantTermAdjust(pc->u.ccc.c1); - pc->u.ccc.c2 = ConstantTermAdjust(pc->u.ccc.c2); - pc->u.ccc.c3 = ConstantTermAdjust(pc->u.ccc.c3); + pc->y_u.ccc.c1 = ConstantTermAdjust(pc->y_u.ccc.c1); + pc->y_u.ccc.c2 = ConstantTermAdjust(pc->y_u.ccc.c2); + pc->y_u.ccc.c3 = ConstantTermAdjust(pc->y_u.ccc.c3); pc = NEXTOP(pc,ccc); break; /* instructions type cccc */ case _get_4atoms: - pc->u.cccc.c1 = ConstantTermAdjust(pc->u.cccc.c1); - pc->u.cccc.c2 = ConstantTermAdjust(pc->u.cccc.c2); - pc->u.cccc.c3 = ConstantTermAdjust(pc->u.cccc.c3); - pc->u.cccc.c4 = ConstantTermAdjust(pc->u.cccc.c4); + pc->y_u.cccc.c1 = ConstantTermAdjust(pc->y_u.cccc.c1); + pc->y_u.cccc.c2 = ConstantTermAdjust(pc->y_u.cccc.c2); + pc->y_u.cccc.c3 = ConstantTermAdjust(pc->y_u.cccc.c3); + pc->y_u.cccc.c4 = ConstantTermAdjust(pc->y_u.cccc.c4); pc = NEXTOP(pc,cccc); break; /* instructions type ccccc */ case _get_5atoms: - pc->u.ccccc.c1 = ConstantTermAdjust(pc->u.ccccc.c1); - pc->u.ccccc.c2 = ConstantTermAdjust(pc->u.ccccc.c2); - pc->u.ccccc.c3 = ConstantTermAdjust(pc->u.ccccc.c3); - pc->u.ccccc.c4 = ConstantTermAdjust(pc->u.ccccc.c4); - pc->u.ccccc.c5 = ConstantTermAdjust(pc->u.ccccc.c5); + pc->y_u.ccccc.c1 = ConstantTermAdjust(pc->y_u.ccccc.c1); + pc->y_u.ccccc.c2 = ConstantTermAdjust(pc->y_u.ccccc.c2); + pc->y_u.ccccc.c3 = ConstantTermAdjust(pc->y_u.ccccc.c3); + pc->y_u.ccccc.c4 = ConstantTermAdjust(pc->y_u.ccccc.c4); + pc->y_u.ccccc.c5 = ConstantTermAdjust(pc->y_u.ccccc.c5); pc = NEXTOP(pc,ccccc); break; /* instructions type cccccc */ case _get_6atoms: - pc->u.cccccc.c1 = ConstantTermAdjust(pc->u.cccccc.c1); - pc->u.cccccc.c2 = ConstantTermAdjust(pc->u.cccccc.c2); - pc->u.cccccc.c3 = ConstantTermAdjust(pc->u.cccccc.c3); - pc->u.cccccc.c4 = ConstantTermAdjust(pc->u.cccccc.c4); - pc->u.cccccc.c5 = ConstantTermAdjust(pc->u.cccccc.c5); - pc->u.cccccc.c6 = ConstantTermAdjust(pc->u.cccccc.c6); + pc->y_u.cccccc.c1 = ConstantTermAdjust(pc->y_u.cccccc.c1); + pc->y_u.cccccc.c2 = ConstantTermAdjust(pc->y_u.cccccc.c2); + pc->y_u.cccccc.c3 = ConstantTermAdjust(pc->y_u.cccccc.c3); + pc->y_u.cccccc.c4 = ConstantTermAdjust(pc->y_u.cccccc.c4); + pc->y_u.cccccc.c5 = ConstantTermAdjust(pc->y_u.cccccc.c5); + pc->y_u.cccccc.c6 = ConstantTermAdjust(pc->y_u.cccccc.c6); pc = NEXTOP(pc,cccccc); break; /* instructions type clll */ case _if_not_then: - pc->u.clll.c = ConstantTermAdjust(pc->u.clll.c); - pc->u.clll.l1 = PtoOpAdjust(pc->u.clll.l1); - pc->u.clll.l2 = PtoOpAdjust(pc->u.clll.l2); - pc->u.clll.l3 = PtoOpAdjust(pc->u.clll.l3); + pc->y_u.clll.c = ConstantTermAdjust(pc->y_u.clll.c); + pc->y_u.clll.l1 = PtoOpAdjust(pc->y_u.clll.l1); + pc->y_u.clll.l2 = PtoOpAdjust(pc->y_u.clll.l2); + pc->y_u.clll.l3 = PtoOpAdjust(pc->y_u.clll.l3); pc = NEXTOP(pc,clll); break; /* instructions type d */ case _write_float: - DoubleInCodeAdjust(pc->u.d.d); + DoubleInCodeAdjust(pc->y_u.d.d); pc = NEXTOP(pc,d); break; /* instructions type e */ @@ -245,13 +245,13 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) /* instructions type fa */ case _write_l_struc: case _write_struct: - pc->u.fa.f = FuncAdjust(pc->u.fa.f); - pc->u.fa.a = ArityAdjust(pc->u.fa.a); + pc->y_u.fa.f = FuncAdjust(pc->y_u.fa.f); + pc->y_u.fa.a = ArityAdjust(pc->y_u.fa.a); pc = NEXTOP(pc,fa); break; /* instructions type i */ case _write_longint: - IntegerInCodeAdjust(pc->u.i.i); + IntegerInCodeAdjust(pc->y_u.i.i); pc = NEXTOP(pc,i); break; /* instructions type l */ @@ -269,16 +269,16 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _try_clause3: case _try_clause4: case _try_in: - pc->u.l.l = PtoOpAdjust(pc->u.l.l); + pc->y_u.l.l = PtoOpAdjust(pc->y_u.l.l); if (op == _Ystop) return; pc = NEXTOP(pc,l); break; /* instructions type llll */ case _switch_on_type: - pc->u.llll.l1 = PtoOpAdjust(pc->u.llll.l1); - pc->u.llll.l2 = PtoOpAdjust(pc->u.llll.l2); - pc->u.llll.l3 = PtoOpAdjust(pc->u.llll.l3); - pc->u.llll.l4 = PtoOpAdjust(pc->u.llll.l4); + pc->y_u.llll.l1 = PtoOpAdjust(pc->y_u.llll.l1); + pc->y_u.llll.l2 = PtoOpAdjust(pc->y_u.llll.l2); + pc->y_u.llll.l3 = PtoOpAdjust(pc->y_u.llll.l3); + pc->y_u.llll.l4 = PtoOpAdjust(pc->y_u.llll.l4); pc = NEXTOP(pc,llll); break; /* instructions type lp */ @@ -289,8 +289,8 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _try_exo: case _try_exo_udi: case _user_switch: - pc->u.lp.l = PtoOpAdjust(pc->u.lp.l); - pc->u.lp.p = PtoPredAdjust(pc->u.lp.p); + pc->y_u.lp.l = PtoOpAdjust(pc->y_u.lp.l); + pc->y_u.lp.p = PtoPredAdjust(pc->y_u.lp.p); pc = NEXTOP(pc,lp); break; /* instructions type o */ @@ -302,21 +302,21 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_list_write: case _unify_void: case _unify_void_write: - pc->u.o.opcw = OpcodeAdjust(pc->u.o.opcw); + pc->y_u.o.opcw = OpcodeAdjust(pc->y_u.o.opcw); pc = NEXTOP(pc,o); break; /* instructions type oD */ case _unify_dbterm: case _unify_l_dbterm: - pc->u.oD.opcw = OpcodeAdjust(pc->u.oD.opcw); - pc->u.oD.D = DBGroundTermAdjust(pc->u.oD.D); + pc->y_u.oD.opcw = OpcodeAdjust(pc->y_u.oD.opcw); + pc->y_u.oD.D = DBGroundTermAdjust(pc->y_u.oD.D); pc = NEXTOP(pc,oD); break; /* instructions type oN */ case _unify_bigint: case _unify_l_bigint: - pc->u.oN.opcw = OpcodeAdjust(pc->u.oN.opcw); - pc->u.oN.b = BlobTermInCodeAdjust(pc->u.oN.b); + pc->y_u.oN.opcw = OpcodeAdjust(pc->y_u.oN.opcw); + pc->y_u.oN.b = BlobTermInCodeAdjust(pc->y_u.oN.b); pc = NEXTOP(pc,oN); break; /* instructions type oc */ @@ -324,8 +324,8 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_atom_write: case _unify_l_atom: case _unify_l_atom_write: - pc->u.oc.opcw = OpcodeAdjust(pc->u.oc.opcw); - pc->u.oc.c = ConstantTermAdjust(pc->u.oc.c); + pc->y_u.oc.opcw = OpcodeAdjust(pc->y_u.oc.opcw); + pc->y_u.oc.c = ConstantTermAdjust(pc->y_u.oc.c); pc = NEXTOP(pc,oc); break; /* instructions type od */ @@ -333,8 +333,8 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_float_write: case _unify_l_float: case _unify_l_float_write: - pc->u.od.opcw = OpcodeAdjust(pc->u.od.opcw); - DoubleInCodeAdjust(pc->u.od.d); + pc->y_u.od.opcw = OpcodeAdjust(pc->y_u.od.opcw); + DoubleInCodeAdjust(pc->y_u.od.d); pc = NEXTOP(pc,od); break; /* instructions type ofa */ @@ -342,9 +342,9 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_l_struc_write: case _unify_struct: case _unify_struct_write: - pc->u.ofa.opcw = OpcodeAdjust(pc->u.ofa.opcw); - pc->u.ofa.f = FuncAdjust(pc->u.ofa.f); - pc->u.ofa.a = ArityAdjust(pc->u.ofa.a); + pc->y_u.ofa.opcw = OpcodeAdjust(pc->y_u.ofa.opcw); + pc->y_u.ofa.f = FuncAdjust(pc->y_u.ofa.f); + pc->y_u.ofa.a = ArityAdjust(pc->y_u.ofa.a); pc = NEXTOP(pc,ofa); break; /* instructions type oi */ @@ -352,17 +352,17 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_l_longint_write: case _unify_longint: case _unify_longint_write: - pc->u.oi.opcw = OpcodeAdjust(pc->u.oi.opcw); - IntegerInCodeAdjust(pc->u.oi.i); + pc->y_u.oi.opcw = OpcodeAdjust(pc->y_u.oi.opcw); + IntegerInCodeAdjust(pc->y_u.oi.i); pc = NEXTOP(pc,oi); break; /* instructions type ollll */ case _switch_list_nl: - pc->u.ollll.pop = OpcodeAdjust(pc->u.ollll.pop); - pc->u.ollll.l1 = PtoOpAdjust(pc->u.ollll.l1); - pc->u.ollll.l2 = PtoOpAdjust(pc->u.ollll.l2); - pc->u.ollll.l3 = PtoOpAdjust(pc->u.ollll.l3); - pc->u.ollll.l4 = PtoOpAdjust(pc->u.ollll.l4); + pc->y_u.ollll.pop = OpcodeAdjust(pc->y_u.ollll.pop); + pc->y_u.ollll.l1 = PtoOpAdjust(pc->y_u.ollll.l1); + pc->y_u.ollll.l2 = PtoOpAdjust(pc->y_u.ollll.l2); + pc->y_u.ollll.l3 = PtoOpAdjust(pc->y_u.ollll.l3); + pc->y_u.ollll.l4 = PtoOpAdjust(pc->y_u.ollll.l4); pc = NEXTOP(pc,ollll); break; /* instructions type os */ @@ -373,23 +373,23 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_l_n_voids_write: case _unify_n_voids: case _unify_n_voids_write: - pc->u.os.opcw = OpcodeAdjust(pc->u.os.opcw); - pc->u.os.s = ConstantAdjust(pc->u.os.s); + pc->y_u.os.opcw = OpcodeAdjust(pc->y_u.os.opcw); + pc->y_u.os.s = ConstantAdjust(pc->y_u.os.s); pc = NEXTOP(pc,os); break; /* instructions type osc */ case _unify_n_atoms: case _unify_n_atoms_write: - pc->u.osc.opcw = OpcodeAdjust(pc->u.osc.opcw); - pc->u.osc.s = ConstantAdjust(pc->u.osc.s); - pc->u.osc.c = ConstantTermAdjust(pc->u.osc.c); + pc->y_u.osc.opcw = OpcodeAdjust(pc->y_u.osc.opcw); + pc->y_u.osc.s = ConstantAdjust(pc->y_u.osc.s); + pc->y_u.osc.c = ConstantTermAdjust(pc->y_u.osc.c); pc = NEXTOP(pc,osc); break; /* instructions type ou */ case _unify_l_string: case _unify_string: - pc->u.ou.opcw = OpcodeAdjust(pc->u.ou.opcw); - pc->u.ou.ut = BlobTermInCodeAdjust(pc->u.ou.ut); + pc->y_u.ou.opcw = OpcodeAdjust(pc->y_u.ou.opcw); + pc->y_u.ou.ut = BlobTermInCodeAdjust(pc->y_u.ou.ut); pc = NEXTOP(pc,ou); break; /* instructions type ox */ @@ -409,8 +409,8 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_x_val_write: case _unify_x_var: case _unify_x_var_write: - pc->u.ox.opcw = OpcodeAdjust(pc->u.ox.opcw); - pc->u.ox.x = XAdjust(pc->u.ox.x); + pc->y_u.ox.opcw = OpcodeAdjust(pc->y_u.ox.opcw); + pc->y_u.ox.x = XAdjust(pc->y_u.ox.x); pc = NEXTOP(pc,ox); break; /* instructions type oxx */ @@ -418,9 +418,9 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_l_x_var2_write: case _unify_x_var2: case _unify_x_var2_write: - pc->u.oxx.opcw = OpcodeAdjust(pc->u.oxx.opcw); - pc->u.oxx.xl = XAdjust(pc->u.oxx.xl); - pc->u.oxx.xr = XAdjust(pc->u.oxx.xr); + pc->y_u.oxx.opcw = OpcodeAdjust(pc->y_u.oxx.opcw); + pc->y_u.oxx.xl = XAdjust(pc->y_u.oxx.xl); + pc->y_u.oxx.xr = XAdjust(pc->y_u.oxx.xr); pc = NEXTOP(pc,oxx); break; /* instructions type oy */ @@ -440,8 +440,8 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _unify_y_val_write: case _unify_y_var: case _unify_y_var_write: - pc->u.oy.opcw = OpcodeAdjust(pc->u.oy.opcw); - pc->u.oy.y = YAdjust(pc->u.oy.y); + pc->y_u.oy.opcw = OpcodeAdjust(pc->y_u.oy.opcw); + pc->y_u.oy.y = YAdjust(pc->y_u.oy.y); pc = NEXTOP(pc,oy); break; /* instructions type p */ @@ -454,43 +454,43 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _retry_profiled: case _retry_udi: case _try_udi: - pc->u.p.p = PtoPredAdjust(pc->u.p.p); + pc->y_u.p.p = PtoPredAdjust(pc->y_u.p.p); pc = NEXTOP(pc,p); break; /* instructions type plxxs */ case _call_bfunc_xx: - pc->u.plxxs.p = PtoPredAdjust(pc->u.plxxs.p); - pc->u.plxxs.f = PtoOpAdjust(pc->u.plxxs.f); - pc->u.plxxs.x1 = XAdjust(pc->u.plxxs.x1); - pc->u.plxxs.x2 = XAdjust(pc->u.plxxs.x2); - pc->u.plxxs.flags = ConstantAdjust(pc->u.plxxs.flags); + pc->y_u.plxxs.p = PtoPredAdjust(pc->y_u.plxxs.p); + pc->y_u.plxxs.f = PtoOpAdjust(pc->y_u.plxxs.f); + pc->y_u.plxxs.x1 = XAdjust(pc->y_u.plxxs.x1); + pc->y_u.plxxs.x2 = XAdjust(pc->y_u.plxxs.x2); + pc->y_u.plxxs.flags = ConstantAdjust(pc->y_u.plxxs.flags); pc = NEXTOP(pc,plxxs); break; /* instructions type plxys */ case _call_bfunc_xy: case _call_bfunc_yx: - pc->u.plxys.p = PtoPredAdjust(pc->u.plxys.p); - pc->u.plxys.f = PtoOpAdjust(pc->u.plxys.f); - pc->u.plxys.x = XAdjust(pc->u.plxys.x); - pc->u.plxys.y = YAdjust(pc->u.plxys.y); - pc->u.plxys.flags = ConstantAdjust(pc->u.plxys.flags); + pc->y_u.plxys.p = PtoPredAdjust(pc->y_u.plxys.p); + pc->y_u.plxys.f = PtoOpAdjust(pc->y_u.plxys.f); + pc->y_u.plxys.x = XAdjust(pc->y_u.plxys.x); + pc->y_u.plxys.y = YAdjust(pc->y_u.plxys.y); + pc->y_u.plxys.flags = ConstantAdjust(pc->y_u.plxys.flags); pc = NEXTOP(pc,plxys); break; /* instructions type plyys */ case _call_bfunc_yy: - pc->u.plyys.p = PtoPredAdjust(pc->u.plyys.p); - pc->u.plyys.f = PtoOpAdjust(pc->u.plyys.f); - pc->u.plyys.y1 = YAdjust(pc->u.plyys.y1); - pc->u.plyys.y2 = YAdjust(pc->u.plyys.y2); - pc->u.plyys.flags = ConstantAdjust(pc->u.plyys.flags); + pc->y_u.plyys.p = PtoPredAdjust(pc->y_u.plyys.p); + pc->y_u.plyys.f = PtoOpAdjust(pc->y_u.plyys.f); + pc->y_u.plyys.y1 = YAdjust(pc->y_u.plyys.y1); + pc->y_u.plyys.y2 = YAdjust(pc->y_u.plyys.y2); + pc->y_u.plyys.flags = ConstantAdjust(pc->y_u.plyys.flags); pc = NEXTOP(pc,plyys); break; /* instructions type pp */ case _dexecute: case _execute: case _execute_cpred: - pc->u.pp.p = PtoPredAdjust(pc->u.pp.p); - pc->u.pp.p0 = PtoPredAdjust(pc->u.pp.p0); + pc->y_u.pp.p = PtoPredAdjust(pc->y_u.pp.p); + pc->y_u.pp.p0 = PtoPredAdjust(pc->y_u.pp.p0); pc = NEXTOP(pc,pp); break; /* instructions type s */ @@ -499,29 +499,29 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _cut_t: case _pop_n: case _write_n_voids: - pc->u.s.s = ConstantAdjust(pc->u.s.s); + pc->y_u.s.s = ConstantAdjust(pc->y_u.s.s); pc = NEXTOP(pc,s); break; /* instructions type sc */ case _write_n_atoms: - pc->u.sc.s = ConstantAdjust(pc->u.sc.s); - pc->u.sc.c = ConstantTermAdjust(pc->u.sc.c); + pc->y_u.sc.s = ConstantAdjust(pc->y_u.sc.s); + pc->y_u.sc.c = ConstantTermAdjust(pc->y_u.sc.c); pc = NEXTOP(pc,sc); break; /* instructions type sllll */ case _switch_on_sub_arg_type: - pc->u.sllll.s = ConstantAdjust(pc->u.sllll.s); - pc->u.sllll.l1 = PtoOpAdjust(pc->u.sllll.l1); - pc->u.sllll.l2 = PtoOpAdjust(pc->u.sllll.l2); - pc->u.sllll.l3 = PtoOpAdjust(pc->u.sllll.l3); - pc->u.sllll.l4 = PtoOpAdjust(pc->u.sllll.l4); + pc->y_u.sllll.s = ConstantAdjust(pc->y_u.sllll.s); + pc->y_u.sllll.l1 = PtoOpAdjust(pc->y_u.sllll.l1); + pc->y_u.sllll.l2 = PtoOpAdjust(pc->y_u.sllll.l2); + pc->y_u.sllll.l3 = PtoOpAdjust(pc->y_u.sllll.l3); + pc->y_u.sllll.l4 = PtoOpAdjust(pc->y_u.sllll.l4); pc = NEXTOP(pc,sllll); break; /* instructions type slp */ case _call_c_wfail: - pc->u.slp.s = ConstantAdjust(pc->u.slp.s); - pc->u.slp.l = PtoOpAdjust(pc->u.slp.l); - pc->u.slp.p = PtoPredAdjust(pc->u.slp.p); + pc->y_u.slp.s = ConstantAdjust(pc->y_u.slp.s); + pc->y_u.slp.l = PtoOpAdjust(pc->y_u.slp.l); + pc->y_u.slp.p = PtoPredAdjust(pc->y_u.slp.p); pc = NEXTOP(pc,slp); break; /* instructions type sssl */ @@ -531,21 +531,21 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _if_func: case _switch_on_cons: case _switch_on_func: - pc->u.sssl.s = ConstantAdjust(pc->u.sssl.s); - pc->u.sssl.e = ConstantAdjust(pc->u.sssl.e); - pc->u.sssl.w = ConstantAdjust(pc->u.sssl.w); - pc->u.sssl.l = PtoOpAdjust(pc->u.sssl.l); - AdjustSwitchTable(op, pc->u.sssl.l, pc->u.sssl.s); + pc->y_u.sssl.s = ConstantAdjust(pc->y_u.sssl.s); + pc->y_u.sssl.e = ConstantAdjust(pc->y_u.sssl.e); + pc->y_u.sssl.w = ConstantAdjust(pc->y_u.sssl.w); + pc->y_u.sssl.l = PtoOpAdjust(pc->y_u.sssl.l); + AdjustSwitchTable(op, pc->y_u.sssl.l, pc->y_u.sssl.s); pc = NEXTOP(pc,sssl); break; /* instructions type sssllp */ case _expand_clauses: - pc->u.sssllp.s1 = ConstantAdjust(pc->u.sssllp.s1); - pc->u.sssllp.s2 = ConstantAdjust(pc->u.sssllp.s2); - pc->u.sssllp.s3 = ConstantAdjust(pc->u.sssllp.s3); - pc->u.sssllp.sprev = PtoOpAdjust(pc->u.sssllp.sprev); - pc->u.sssllp.snext = PtoOpAdjust(pc->u.sssllp.snext); - pc->u.sssllp.p = PtoPredAdjust(pc->u.sssllp.p); + pc->y_u.sssllp.s1 = ConstantAdjust(pc->y_u.sssllp.s1); + pc->y_u.sssllp.s2 = ConstantAdjust(pc->y_u.sssllp.s2); + pc->y_u.sssllp.s3 = ConstantAdjust(pc->y_u.sssllp.s3); + pc->y_u.sssllp.sprev = PtoOpAdjust(pc->y_u.sssllp.sprev); + pc->y_u.sssllp.snext = PtoOpAdjust(pc->y_u.sssllp.snext); + pc->y_u.sssllp.p = PtoPredAdjust(pc->y_u.sssllp.p); pc = NEXTOP(pc,sssllp); break; /* instructions type x */ @@ -556,50 +556,50 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _write_x_loc: case _write_x_val: case _write_x_var: - pc->u.x.x = XAdjust(pc->u.x.x); + pc->y_u.x.x = XAdjust(pc->y_u.x.x); pc = NEXTOP(pc,x); break; /* instructions type xD */ case _get_dbterm: case _put_dbterm: - pc->u.xD.x = XAdjust(pc->u.xD.x); - pc->u.xD.D = DBGroundTermAdjust(pc->u.xD.D); + pc->y_u.xD.x = XAdjust(pc->y_u.xD.x); + pc->y_u.xD.D = DBGroundTermAdjust(pc->y_u.xD.D); pc = NEXTOP(pc,xD); break; /* instructions type xN */ case _get_bigint: case _put_bigint: - pc->u.xN.x = XAdjust(pc->u.xN.x); - pc->u.xN.b = BlobTermInCodeAdjust(pc->u.xN.b); + pc->y_u.xN.x = XAdjust(pc->y_u.xN.x); + pc->y_u.xN.b = BlobTermInCodeAdjust(pc->y_u.xN.b); pc = NEXTOP(pc,xN); break; /* instructions type xc */ case _get_atom: case _put_atom: - pc->u.xc.x = XAdjust(pc->u.xc.x); - pc->u.xc.c = ConstantTermAdjust(pc->u.xc.c); + pc->y_u.xc.x = XAdjust(pc->y_u.xc.x); + pc->y_u.xc.c = ConstantTermAdjust(pc->y_u.xc.c); pc = NEXTOP(pc,xc); break; /* instructions type xd */ case _get_float: case _put_float: - pc->u.xd.x = XAdjust(pc->u.xd.x); - DoubleInCodeAdjust(pc->u.xd.d); + pc->y_u.xd.x = XAdjust(pc->y_u.xd.x); + DoubleInCodeAdjust(pc->y_u.xd.d); pc = NEXTOP(pc,xd); break; /* instructions type xfa */ case _get_struct: case _put_struct: - pc->u.xfa.x = XAdjust(pc->u.xfa.x); - pc->u.xfa.f = FuncAdjust(pc->u.xfa.f); - pc->u.xfa.a = ArityAdjust(pc->u.xfa.a); + pc->y_u.xfa.x = XAdjust(pc->y_u.xfa.x); + pc->y_u.xfa.f = FuncAdjust(pc->y_u.xfa.f); + pc->y_u.xfa.a = ArityAdjust(pc->y_u.xfa.a); pc = NEXTOP(pc,xfa); break; /* instructions type xi */ case _get_longint: case _put_longint: - pc->u.xi.x = XAdjust(pc->u.xi.x); - IntegerInCodeAdjust(pc->u.xi.i); + pc->y_u.xi.x = XAdjust(pc->y_u.xi.x); + IntegerInCodeAdjust(pc->y_u.xi.i); pc = NEXTOP(pc,xi); break; /* instructions type xl */ @@ -613,37 +613,37 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_number_x: case _p_primitive_x: case _p_var_x: - pc->u.xl.x = XAdjust(pc->u.xl.x); - pc->u.xl.F = PtoOpAdjust(pc->u.xl.F); + pc->y_u.xl.x = XAdjust(pc->y_u.xl.x); + pc->y_u.xl.F = PtoOpAdjust(pc->y_u.xl.F); pc = NEXTOP(pc,xl); break; /* instructions type xll */ case _jump_if_nonvar: - pc->u.xll.x = XAdjust(pc->u.xll.x); - pc->u.xll.l1 = PtoOpAdjust(pc->u.xll.l1); - pc->u.xll.l2 = PtoOpAdjust(pc->u.xll.l2); + pc->y_u.xll.x = XAdjust(pc->y_u.xll.x); + pc->y_u.xll.l1 = PtoOpAdjust(pc->y_u.xll.l1); + pc->y_u.xll.l2 = PtoOpAdjust(pc->y_u.xll.l2); pc = NEXTOP(pc,xll); break; /* instructions type xllll */ case _switch_on_arg_type: - pc->u.xllll.x = XAdjust(pc->u.xllll.x); - pc->u.xllll.l1 = PtoOpAdjust(pc->u.xllll.l1); - pc->u.xllll.l2 = PtoOpAdjust(pc->u.xllll.l2); - pc->u.xllll.l3 = PtoOpAdjust(pc->u.xllll.l3); - pc->u.xllll.l4 = PtoOpAdjust(pc->u.xllll.l4); + pc->y_u.xllll.x = XAdjust(pc->y_u.xllll.x); + pc->y_u.xllll.l1 = PtoOpAdjust(pc->y_u.xllll.l1); + pc->y_u.xllll.l2 = PtoOpAdjust(pc->y_u.xllll.l2); + pc->y_u.xllll.l3 = PtoOpAdjust(pc->y_u.xllll.l3); + pc->y_u.xllll.l4 = PtoOpAdjust(pc->y_u.xllll.l4); pc = NEXTOP(pc,xllll); break; /* instructions type xps */ case _commit_b_x: - pc->u.xps.x = XAdjust(pc->u.xps.x); - pc->u.xps.p0 = PtoPredAdjust(pc->u.xps.p0); - pc->u.xps.s = ConstantAdjust(pc->u.xps.s); + pc->y_u.xps.x = XAdjust(pc->y_u.xps.x); + pc->y_u.xps.p0 = PtoPredAdjust(pc->y_u.xps.p0); + pc->y_u.xps.s = ConstantAdjust(pc->y_u.xps.s); pc = NEXTOP(pc,xps); break; /* instructions type xu */ case _get_string: - pc->u.xu.x = XAdjust(pc->u.xu.x); - pc->u.xu.ut = BlobTermInCodeAdjust(pc->u.xu.ut); + pc->y_u.xu.x = XAdjust(pc->y_u.xu.x); + pc->y_u.xu.ut = BlobTermInCodeAdjust(pc->y_u.xu.ut); pc = NEXTOP(pc,xu); break; /* instructions type xx */ @@ -654,15 +654,15 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _glist_valx: case _put_x_val: case _put_x_var: - pc->u.xx.xl = XAdjust(pc->u.xx.xl); - pc->u.xx.xr = XAdjust(pc->u.xx.xr); + pc->y_u.xx.xl = XAdjust(pc->y_u.xx.xl); + pc->y_u.xx.xr = XAdjust(pc->y_u.xx.xr); pc = NEXTOP(pc,xx); break; /* instructions type xxc */ case _p_func2s_cv: - pc->u.xxc.x = XAdjust(pc->u.xxc.x); - pc->u.xxc.xi = XAdjust(pc->u.xxc.xi); - pc->u.xxc.c = ConstantTermAdjust(pc->u.xxc.c); + pc->y_u.xxc.x = XAdjust(pc->y_u.xxc.x); + pc->y_u.xxc.xi = XAdjust(pc->y_u.xxc.xi); + pc->y_u.xxc.c = ConstantTermAdjust(pc->y_u.xxc.c); pc = NEXTOP(pc,xxc); break; /* instructions type xxn */ @@ -679,9 +679,9 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_slr_cv: case _p_slr_vc: case _p_times_vc: - pc->u.xxn.x = XAdjust(pc->u.xxn.x); - pc->u.xxn.xi = XAdjust(pc->u.xxn.xi); - pc->u.xxn.c = IntegerAdjust(pc->u.xxn.c); + pc->y_u.xxn.x = XAdjust(pc->y_u.xxn.x); + pc->y_u.xxn.xi = XAdjust(pc->y_u.xxn.xi); + pc->y_u.xxn.c = IntegerAdjust(pc->y_u.xxn.c); pc = NEXTOP(pc,xxn); break; /* instructions type xxx */ @@ -696,24 +696,24 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_sll_vv: case _p_slr_vv: case _p_times_vv: - pc->u.xxx.x = XAdjust(pc->u.xxx.x); - pc->u.xxx.x1 = XAdjust(pc->u.xxx.x1); - pc->u.xxx.x2 = XAdjust(pc->u.xxx.x2); + pc->y_u.xxx.x = XAdjust(pc->y_u.xxx.x); + pc->y_u.xxx.x1 = XAdjust(pc->y_u.xxx.x1); + pc->y_u.xxx.x2 = XAdjust(pc->y_u.xxx.x2); pc = NEXTOP(pc,xxx); break; /* instructions type xxxx */ case _put_xx_val: - pc->u.xxxx.xl1 = XAdjust(pc->u.xxxx.xl1); - pc->u.xxxx.xl2 = XAdjust(pc->u.xxxx.xl2); - pc->u.xxxx.xr1 = XAdjust(pc->u.xxxx.xr1); - pc->u.xxxx.xr2 = XAdjust(pc->u.xxxx.xr2); + pc->y_u.xxxx.xl1 = XAdjust(pc->y_u.xxxx.xl1); + pc->y_u.xxxx.xl2 = XAdjust(pc->y_u.xxxx.xl2); + pc->y_u.xxxx.xr1 = XAdjust(pc->y_u.xxxx.xr1); + pc->y_u.xxxx.xr2 = XAdjust(pc->y_u.xxxx.xr2); pc = NEXTOP(pc,xxxx); break; /* instructions type xxy */ case _p_func2f_xy: - pc->u.xxy.x = XAdjust(pc->u.xxy.x); - pc->u.xxy.x1 = XAdjust(pc->u.xxy.x1); - pc->u.xxy.y2 = YAdjust(pc->u.xxy.y2); + pc->y_u.xxy.x = XAdjust(pc->y_u.xxy.x); + pc->y_u.xxy.x1 = XAdjust(pc->y_u.xxy.x1); + pc->y_u.xxy.y2 = YAdjust(pc->y_u.xxy.y2); pc = NEXTOP(pc,xxy); break; /* instructions type y */ @@ -721,7 +721,7 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _write_y_loc: case _write_y_val: case _write_y_var: - pc->u.y.y = YAdjust(pc->u.y.y); + pc->y_u.y.y = YAdjust(pc->y_u.y.y); pc = NEXTOP(pc,y); break; /* instructions type yl */ @@ -735,15 +735,15 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_number_y: case _p_primitive_y: case _p_var_y: - pc->u.yl.y = YAdjust(pc->u.yl.y); - pc->u.yl.F = PtoOpAdjust(pc->u.yl.F); + pc->y_u.yl.y = YAdjust(pc->y_u.yl.y); + pc->y_u.yl.F = PtoOpAdjust(pc->y_u.yl.F); pc = NEXTOP(pc,yl); break; /* instructions type yps */ case _commit_b_y: - pc->u.yps.y = YAdjust(pc->u.yps.y); - pc->u.yps.p0 = PtoPredAdjust(pc->u.yps.p0); - pc->u.yps.s = ConstantAdjust(pc->u.yps.s); + pc->y_u.yps.y = YAdjust(pc->y_u.yps.y); + pc->y_u.yps.p0 = PtoPredAdjust(pc->y_u.yps.p0); + pc->y_u.yps.s = ConstantAdjust(pc->y_u.yps.s); pc = NEXTOP(pc,yps); break; /* instructions type yx */ @@ -755,15 +755,15 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _put_unsafe: case _put_y_val: case _put_y_var: - pc->u.yx.y = YAdjust(pc->u.yx.y); - pc->u.yx.x = XAdjust(pc->u.yx.x); + pc->y_u.yx.y = YAdjust(pc->y_u.yx.y); + pc->y_u.yx.x = XAdjust(pc->y_u.yx.x); pc = NEXTOP(pc,yx); break; /* instructions type yxc */ case _p_func2s_y_cv: - pc->u.yxc.y = YAdjust(pc->u.yxc.y); - pc->u.yxc.xi = XAdjust(pc->u.yxc.xi); - pc->u.yxc.c = ConstantTermAdjust(pc->u.yxc.c); + pc->y_u.yxc.y = YAdjust(pc->y_u.yxc.y); + pc->y_u.yxc.xi = XAdjust(pc->y_u.yxc.xi); + pc->y_u.yxc.c = ConstantTermAdjust(pc->y_u.yxc.c); pc = NEXTOP(pc,yxc); break; /* instructions type yxn */ @@ -780,9 +780,9 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_slr_y_cv: case _p_slr_y_vc: case _p_times_y_vc: - pc->u.yxn.y = YAdjust(pc->u.yxn.y); - pc->u.yxn.xi = XAdjust(pc->u.yxn.xi); - pc->u.yxn.c = IntegerAdjust(pc->u.yxn.c); + pc->y_u.yxn.y = YAdjust(pc->y_u.yxn.y); + pc->y_u.yxn.xi = XAdjust(pc->y_u.yxn.xi); + pc->y_u.yxn.c = IntegerAdjust(pc->y_u.yxn.c); pc = NEXTOP(pc,yxn); break; /* instructions type yxx */ @@ -797,25 +797,25 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _p_sll_y_vv: case _p_slr_y_vv: case _p_times_y_vv: - pc->u.yxx.y = YAdjust(pc->u.yxx.y); - pc->u.yxx.x1 = XAdjust(pc->u.yxx.x1); - pc->u.yxx.x2 = XAdjust(pc->u.yxx.x2); + pc->y_u.yxx.y = YAdjust(pc->y_u.yxx.y); + pc->y_u.yxx.x1 = XAdjust(pc->y_u.yxx.x1); + pc->y_u.yxx.x2 = XAdjust(pc->y_u.yxx.x2); pc = NEXTOP(pc,yxx); break; /* instructions type yyx */ case _p_func2f_yy: - pc->u.yyx.y1 = YAdjust(pc->u.yyx.y1); - pc->u.yyx.y2 = YAdjust(pc->u.yyx.y2); - pc->u.yyx.x = XAdjust(pc->u.yyx.x); + pc->y_u.yyx.y1 = YAdjust(pc->y_u.yyx.y1); + pc->y_u.yyx.y2 = YAdjust(pc->y_u.yyx.y2); + pc->y_u.yyx.x = XAdjust(pc->y_u.yyx.x); pc = NEXTOP(pc,yyx); break; /* instructions type yyxx */ case _get_yy_var: case _put_y_vals: - pc->u.yyxx.y1 = YAdjust(pc->u.yyxx.y1); - pc->u.yyxx.y2 = YAdjust(pc->u.yyxx.y2); - pc->u.yyxx.x1 = XAdjust(pc->u.yyxx.x1); - pc->u.yyxx.x2 = XAdjust(pc->u.yyxx.x2); + pc->y_u.yyxx.y1 = YAdjust(pc->y_u.yyxx.y1); + pc->y_u.yyxx.y2 = YAdjust(pc->y_u.yyxx.y2); + pc->y_u.yyxx.x1 = XAdjust(pc->y_u.yyxx.x1); + pc->y_u.yyxx.x2 = XAdjust(pc->y_u.yyxx.x2); pc = NEXTOP(pc,yyxx); break; #ifdef YAPOR @@ -823,11 +823,11 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _getwork: case _getwork_seq: case _sync: - OrArgAdjust(pc->u.Otapl.or_arg); - TabEntryAdjust(pc->u.Otapl.te); - pc->u.Otapl.s = ArityAdjust(pc->u.Otapl.s); - pc->u.Otapl.p = PtoPredAdjust(pc->u.Otapl.p); - pc->u.Otapl.d = PtoOpAdjust(pc->u.Otapl.d); + OrArgAdjust(pc->y_u.Otapl.or_arg); + TabEntryAdjust(pc->y_u.Otapl.te); + pc->y_u.Otapl.s = ArityAdjust(pc->y_u.Otapl.s); + pc->y_u.Otapl.p = PtoPredAdjust(pc->y_u.Otapl.p); + pc->y_u.Otapl.d = PtoOpAdjust(pc->y_u.Otapl.d); pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -852,11 +852,11 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) case _table_try_answer: case _table_try_me: case _table_try_single: - OrArgAdjust(pc->u.Otapl.or_arg); - TabEntryAdjust(pc->u.Otapl.te); - pc->u.Otapl.s = ArityAdjust(pc->u.Otapl.s); - pc->u.Otapl.p = PtoPredAdjust(pc->u.Otapl.p); - pc->u.Otapl.d = PtoOpAdjust(pc->u.Otapl.d); + OrArgAdjust(pc->y_u.Otapl.or_arg); + TabEntryAdjust(pc->y_u.Otapl.te); + pc->y_u.Otapl.s = ArityAdjust(pc->y_u.Otapl.s); + pc->y_u.Otapl.p = PtoPredAdjust(pc->y_u.Otapl.p); + pc->y_u.Otapl.d = PtoOpAdjust(pc->y_u.Otapl.d); pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -868,7 +868,7 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) break; /* instructions type s */ case _table_new_answer: - pc->u.s.s = ConstantAdjust(pc->u.s.s); + pc->y_u.s.s = ConstantAdjust(pc->y_u.s.s); pc = NEXTOP(pc,s); break; /* instructions type e */ @@ -943,15 +943,15 @@ restore_opcodes(yamop *pc, yamop *max USES_REGS) /* this instruction is hardwired */ case _or_last: #ifdef YAPOR - OrArgAdjust(pc->u.Osblp.or_arg); - pc->u.Osblp.s = ConstantAdjust(pc->u.Osblp.s); - pc->u.Osblp.bmap = CellPtoHeapAdjust(pc->u.Osblp.bmap); - pc->u.Osblp.l = PtoOpAdjust(pc->u.Osblp.l); - pc->u.Osblp.p0 = PtoPredAdjust(pc->u.Osblp.p0); + OrArgAdjust(pc->y_u.Osblp.or_arg); + pc->y_u.Osblp.s = ConstantAdjust(pc->y_u.Osblp.s); + pc->y_u.Osblp.bmap = CellPtoHeapAdjust(pc->y_u.Osblp.bmap); + pc->y_u.Osblp.l = PtoOpAdjust(pc->y_u.Osblp.l); + pc->y_u.Osblp.p0 = PtoPredAdjust(pc->y_u.Osblp.p0); pc = NEXTOP(pc,Osblp); break; #else - pc->u.p.p = PtoPredAdjust(pc->u.p.p); + pc->y_u.p.p = PtoPredAdjust(pc->y_u.p.p); pc = NEXTOP(pc,p); break; #endif diff --git a/H/rheap.h b/H/rheap.h index 1451660e5..5689c5f63 100644 --- a/H/rheap.h +++ b/H/rheap.h @@ -294,14 +294,14 @@ do_clean_susp_clauses(yamop *ipc USES_REGS) { yamop **st = (yamop **)NEXTOP(ipc,sssllp); ipc->opc = Yap_opcode(_expand_clauses); - ipc->u.sssllp.p = PtoPredAdjust(ipc->u.sssllp.p); - if (ipc->u.sssllp.sprev) { - ipc->u.sssllp.sprev = PtoOpAdjust(ipc->u.sssllp.sprev); + ipc->y_u.sssllp.p = PtoPredAdjust(ipc->y_u.sssllp.p); + if (ipc->y_u.sssllp.sprev) { + ipc->y_u.sssllp.sprev = PtoOpAdjust(ipc->y_u.sssllp.sprev); } - if (ipc->u.sssllp.snext) { - ipc->u.sssllp.snext = PtoOpAdjust(ipc->u.sssllp.snext); + if (ipc->y_u.sssllp.snext) { + ipc->y_u.sssllp.snext = PtoOpAdjust(ipc->y_u.sssllp.snext); } - for (i = 0; i < ipc->u.sssllp.s1; i++, st++) { + for (i = 0; i < ipc->y_u.sssllp.s1; i++, st++) { if (*st) { *st = PtoOpAdjust(*st); } @@ -766,10 +766,10 @@ RestoreEnvInst(yamop start[2], yamop **instp, op_numbers opc, PredEntry *pred) yamop *ipc = start; ipc->opc = Yap_opcode(_call); - ipc->u.Osbpp.p = pred; - ipc->u.Osbpp.p0 = pred; - ipc->u.Osbpp.bmap = NULL; - ipc->u.Osbpp.s = -Signed(RealEnvSize); + ipc->y_u.Osbpp.p = pred; + ipc->y_u.Osbpp.p0 = pred; + ipc->y_u.Osbpp.bmap = NULL; + ipc->y_u.Osbpp.s = -Signed(RealEnvSize); ipc = NEXTOP(ipc, Osbpp); ipc->opc = Yap_opcode(opc); *instp = ipc; @@ -782,15 +782,15 @@ RestoreOtaplInst__(yamop start[1], OPCODE opc, PredEntry *pe USES_REGS) /* this is a place holder, it should not really be used */ ipc->opc = Yap_opcode(opc); - ipc->u.Otapl.s = 0; - ipc->u.Otapl.p = pe; - if (ipc->u.Otapl.d) - ipc->u.Otapl.d = PtoOpAdjust(ipc->u.Otapl.d); + ipc->y_u.Otapl.s = 0; + ipc->y_u.Otapl.p = pe; + if (ipc->y_u.Otapl.d) + ipc->y_u.Otapl.d = PtoOpAdjust(ipc->y_u.Otapl.d); #ifdef YAPOR INIT_YAMOP_LTT(ipc, 1); #endif /* YAPOR */ #ifdef TABLING - ipc->u.Otapl.te = NULL; + ipc->y_u.Otapl.te = NULL; #endif /* TABLING */ } @@ -818,7 +818,7 @@ RestoreExpandList__( USES_REGS1 ) yamop *ptr = Yap_heap_regs->expand_clauses_first; while (ptr) { do_clean_susp_clauses(ptr PASS_REGS); - ptr = ptr->u.sssllp.snext; + ptr = ptr->y_u.sssllp.snext; } } } diff --git a/H/saveclause.h b/H/saveclause.h index 619062b65..887027402 100644 --- a/H/saveclause.h +++ b/H/saveclause.h @@ -13,61 +13,61 @@ switch (op) { /* instructions type D */ case _write_dbterm: - CHECK(save_DBGroundTerm(stream, pc->u.D.D)); + CHECK(save_DBGroundTerm(stream, pc->y_u.D.D)); pc = NEXTOP(pc,D); break; /* instructions type Illss */ case _enter_lu_pred: - CHECK(save_PtoLUIndex(stream, pc->u.Illss.I)); - CHECK(save_PtoOp(stream, pc->u.Illss.l1)); - CHECK(save_PtoOp(stream, pc->u.Illss.l2)); - CHECK(save_Constant(stream, pc->u.Illss.s)); - CHECK(save_Constant(stream, pc->u.Illss.e)); + CHECK(save_PtoLUIndex(stream, pc->y_u.Illss.I)); + CHECK(save_PtoOp(stream, pc->y_u.Illss.l1)); + CHECK(save_PtoOp(stream, pc->y_u.Illss.l2)); + CHECK(save_Constant(stream, pc->y_u.Illss.s)); + CHECK(save_Constant(stream, pc->y_u.Illss.e)); pc = NEXTOP(pc,Illss); break; /* instructions type L */ case _alloc_for_logical_pred: - CHECK(save_PtoLUClause(stream, pc->u.L.ClBase)); + CHECK(save_PtoLUClause(stream, pc->y_u.L.ClBase)); pc = NEXTOP(pc,L); break; /* instructions type N */ case _write_bigint: - CHECK(save_BlobTermInCode(stream, pc->u.N.b)); + CHECK(save_BlobTermInCode(stream, pc->y_u.N.b)); pc = NEXTOP(pc,N); break; /* instructions type Osblp */ case _either: case _or_else: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Osblp.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Osblp.or_arg)); #endif - CHECK(save_Constant(stream, pc->u.Osblp.s)); - CHECK(save_CellPtoHeap(stream, pc->u.Osblp.bmap)); - CHECK(save_PtoOp(stream, pc->u.Osblp.l)); - CHECK(save_PtoPred(stream, pc->u.Osblp.p0)); + CHECK(save_Constant(stream, pc->y_u.Osblp.s)); + CHECK(save_CellPtoHeap(stream, pc->y_u.Osblp.bmap)); + CHECK(save_PtoOp(stream, pc->y_u.Osblp.l)); + CHECK(save_PtoPred(stream, pc->y_u.Osblp.p0)); pc = NEXTOP(pc,Osblp); break; /* instructions type Osbmp */ case _p_execute: case _p_execute_tail: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Osbmp.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Osbmp.or_arg)); #endif - CHECK(save_Constant(stream, pc->u.Osbmp.s)); - CHECK(save_CellPtoHeap(stream, pc->u.Osbmp.bmap)); - CHECK(save_Module(stream, pc->u.Osbmp.mod)); - CHECK(save_PtoPred(stream, pc->u.Osbmp.p0)); + CHECK(save_Constant(stream, pc->y_u.Osbmp.s)); + CHECK(save_CellPtoHeap(stream, pc->y_u.Osbmp.bmap)); + CHECK(save_Module(stream, pc->y_u.Osbmp.mod)); + CHECK(save_PtoPred(stream, pc->y_u.Osbmp.p0)); pc = NEXTOP(pc,Osbmp); break; /* instructions type Osbpa */ case _ensure_space: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Osbpa.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Osbpa.or_arg)); #endif - CHECK(save_Constant(stream, pc->u.Osbpa.s)); - CHECK(save_CellPtoHeap(stream, pc->u.Osbpa.bmap)); - CHECK(save_PtoPred(stream, pc->u.Osbpa.p)); - CHECK(save_Arity(stream, pc->u.Osbpa.i)); + CHECK(save_Constant(stream, pc->y_u.Osbpa.s)); + CHECK(save_CellPtoHeap(stream, pc->y_u.Osbpa.bmap)); + CHECK(save_PtoPred(stream, pc->y_u.Osbpa.p)); + CHECK(save_Arity(stream, pc->y_u.Osbpa.i)); pc = NEXTOP(pc,Osbpa); break; /* instructions type Osbpp */ @@ -77,12 +77,12 @@ case _fcall: case _p_execute2: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Osbpp.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Osbpp.or_arg)); #endif - CHECK(save_Constant(stream, pc->u.Osbpp.s)); - CHECK(save_CellPtoHeap(stream, pc->u.Osbpp.bmap)); - CHECK(save_PtoPred(stream, pc->u.Osbpp.p)); - CHECK(save_PtoPred(stream, pc->u.Osbpp.p0)); + CHECK(save_Constant(stream, pc->y_u.Osbpp.s)); + CHECK(save_CellPtoHeap(stream, pc->y_u.Osbpp.bmap)); + CHECK(save_PtoPred(stream, pc->y_u.Osbpp.p)); + CHECK(save_PtoPred(stream, pc->y_u.Osbpp.p0)); pc = NEXTOP(pc,Osbpp); break; /* instructions type OtILl */ @@ -90,14 +90,14 @@ case _profiled_trust_logical: case _trust_logical: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.OtILl.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.OtILl.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.OtILl.te)); + CHECK(save_TabEntry(stream, pc->y_u.OtILl.te)); #endif - CHECK(save_PtoLUIndex(stream, pc->u.OtILl.block)); - CHECK(save_PtoLUClause(stream, pc->u.OtILl.d)); - CHECK(save_PtoOp(stream, pc->u.OtILl.n)); + CHECK(save_PtoLUIndex(stream, pc->y_u.OtILl.block)); + CHECK(save_PtoLUClause(stream, pc->y_u.OtILl.d)); + CHECK(save_PtoOp(stream, pc->y_u.OtILl.n)); pc = NEXTOP(pc,OtILl); break; /* instructions type OtaLl */ @@ -106,14 +106,14 @@ case _retry_logical: case _try_logical: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.OtaLl.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.OtaLl.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.OtaLl.te)); + CHECK(save_TabEntry(stream, pc->y_u.OtaLl.te)); #endif - CHECK(save_Arity(stream, pc->u.OtaLl.s)); - CHECK(save_PtoLUClause(stream, pc->u.OtaLl.d)); - CHECK(save_PtoOp(stream, pc->u.OtaLl.n)); + CHECK(save_Arity(stream, pc->y_u.OtaLl.s)); + CHECK(save_PtoLUClause(stream, pc->y_u.OtaLl.d)); + CHECK(save_PtoOp(stream, pc->y_u.OtaLl.n)); pc = NEXTOP(pc,OtaLl); break; /* instructions type OtapFs */ @@ -124,15 +124,15 @@ case _try_c: case _try_userc: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.OtapFs.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.OtapFs.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.OtapFs.te)); + CHECK(save_TabEntry(stream, pc->y_u.OtapFs.te)); #endif - CHECK(save_Arity(stream, pc->u.OtapFs.s)); - CHECK(save_PtoPred(stream, pc->u.OtapFs.p)); - CHECK(save_ExternalFunction(stream, pc->u.OtapFs.f)); - CHECK(save_Constant(stream, pc->u.OtapFs.extra)); + CHECK(save_Arity(stream, pc->y_u.OtapFs.s)); + CHECK(save_PtoPred(stream, pc->y_u.OtapFs.p)); + CHECK(save_ExternalFunction(stream, pc->y_u.OtapFs.f)); + CHECK(save_Constant(stream, pc->y_u.OtapFs.extra)); pc = NEXTOP(pc,OtapFs); break; /* instructions type Otapl */ @@ -152,80 +152,80 @@ case _try_clause: case _try_me: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Otapl.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.Otapl.te)); + CHECK(save_TabEntry(stream, pc->y_u.Otapl.te)); #endif - CHECK(save_Arity(stream, pc->u.Otapl.s)); - CHECK(save_PtoPred(stream, pc->u.Otapl.p)); - CHECK(save_PtoOp(stream, pc->u.Otapl.d)); + CHECK(save_Arity(stream, pc->y_u.Otapl.s)); + CHECK(save_PtoPred(stream, pc->y_u.Otapl.p)); + CHECK(save_PtoOp(stream, pc->y_u.Otapl.d)); pc = NEXTOP(pc,Otapl); break; /* instructions type aFlp */ case _native_me: - CHECK(save_Arity(stream, pc->u.aFlp.n)); - CHECK(save_ExternalFunction(stream, pc->u.aFlp.native)); - CHECK(save_PtoOp(stream, pc->u.aFlp.native_next)); - CHECK(save_PtoPred(stream, pc->u.aFlp.p)); + CHECK(save_Arity(stream, pc->y_u.aFlp.n)); + CHECK(save_ExternalFunction(stream, pc->y_u.aFlp.native)); + CHECK(save_PtoOp(stream, pc->y_u.aFlp.native_next)); + CHECK(save_PtoPred(stream, pc->y_u.aFlp.p)); pc = NEXTOP(pc,aFlp); break; /* instructions type c */ case _write_atom: - CHECK(save_ConstantTerm(stream, pc->u.c.c)); + CHECK(save_ConstantTerm(stream, pc->y_u.c.c)); pc = NEXTOP(pc,c); break; /* instructions type cc */ case _get_2atoms: - CHECK(save_ConstantTerm(stream, pc->u.cc.c1)); - CHECK(save_ConstantTerm(stream, pc->u.cc.c2)); + CHECK(save_ConstantTerm(stream, pc->y_u.cc.c1)); + CHECK(save_ConstantTerm(stream, pc->y_u.cc.c2)); pc = NEXTOP(pc,cc); break; /* instructions type ccc */ case _get_3atoms: - CHECK(save_ConstantTerm(stream, pc->u.ccc.c1)); - CHECK(save_ConstantTerm(stream, pc->u.ccc.c2)); - CHECK(save_ConstantTerm(stream, pc->u.ccc.c3)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c1)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c2)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccc.c3)); pc = NEXTOP(pc,ccc); break; /* instructions type cccc */ case _get_4atoms: - CHECK(save_ConstantTerm(stream, pc->u.cccc.c1)); - CHECK(save_ConstantTerm(stream, pc->u.cccc.c2)); - CHECK(save_ConstantTerm(stream, pc->u.cccc.c3)); - CHECK(save_ConstantTerm(stream, pc->u.cccc.c4)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c1)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c2)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c3)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccc.c4)); pc = NEXTOP(pc,cccc); break; /* instructions type ccccc */ case _get_5atoms: - CHECK(save_ConstantTerm(stream, pc->u.ccccc.c1)); - CHECK(save_ConstantTerm(stream, pc->u.ccccc.c2)); - CHECK(save_ConstantTerm(stream, pc->u.ccccc.c3)); - CHECK(save_ConstantTerm(stream, pc->u.ccccc.c4)); - CHECK(save_ConstantTerm(stream, pc->u.ccccc.c5)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c1)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c2)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c3)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c4)); + CHECK(save_ConstantTerm(stream, pc->y_u.ccccc.c5)); pc = NEXTOP(pc,ccccc); break; /* instructions type cccccc */ case _get_6atoms: - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c1)); - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c2)); - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c3)); - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c4)); - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c5)); - CHECK(save_ConstantTerm(stream, pc->u.cccccc.c6)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c1)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c2)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c3)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c4)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c5)); + CHECK(save_ConstantTerm(stream, pc->y_u.cccccc.c6)); pc = NEXTOP(pc,cccccc); break; /* instructions type clll */ case _if_not_then: - CHECK(save_ConstantTerm(stream, pc->u.clll.c)); - CHECK(save_PtoOp(stream, pc->u.clll.l1)); - CHECK(save_PtoOp(stream, pc->u.clll.l2)); - CHECK(save_PtoOp(stream, pc->u.clll.l3)); + CHECK(save_ConstantTerm(stream, pc->y_u.clll.c)); + CHECK(save_PtoOp(stream, pc->y_u.clll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.clll.l2)); + CHECK(save_PtoOp(stream, pc->y_u.clll.l3)); pc = NEXTOP(pc,clll); break; /* instructions type d */ case _write_float: - CHECK(save_DoubleInCode(stream, pc->u.d.d)); + CHECK(save_DoubleInCode(stream, pc->y_u.d.d)); pc = NEXTOP(pc,d); break; /* instructions type e */ @@ -263,13 +263,13 @@ /* instructions type fa */ case _write_l_struc: case _write_struct: - CHECK(save_Func(stream, pc->u.fa.f)); - CHECK(save_Arity(stream, pc->u.fa.a)); + CHECK(save_Func(stream, pc->y_u.fa.f)); + CHECK(save_Arity(stream, pc->y_u.fa.a)); pc = NEXTOP(pc,fa); break; /* instructions type i */ case _write_longint: - CHECK(save_IntegerInCode(stream, pc->u.i.i)); + CHECK(save_IntegerInCode(stream, pc->y_u.i.i)); pc = NEXTOP(pc,i); break; /* instructions type l */ @@ -287,15 +287,15 @@ case _try_clause3: case _try_clause4: case _try_in: - CHECK(save_PtoOp(stream, pc->u.l.l)); + CHECK(save_PtoOp(stream, pc->y_u.l.l)); pc = NEXTOP(pc,l); break; /* instructions type llll */ case _switch_on_type: - CHECK(save_PtoOp(stream, pc->u.llll.l1)); - CHECK(save_PtoOp(stream, pc->u.llll.l2)); - CHECK(save_PtoOp(stream, pc->u.llll.l3)); - CHECK(save_PtoOp(stream, pc->u.llll.l4)); + CHECK(save_PtoOp(stream, pc->y_u.llll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.llll.l2)); + CHECK(save_PtoOp(stream, pc->y_u.llll.l3)); + CHECK(save_PtoOp(stream, pc->y_u.llll.l4)); pc = NEXTOP(pc,llll); break; /* instructions type lp */ @@ -306,8 +306,8 @@ case _try_exo: case _try_exo_udi: case _user_switch: - CHECK(save_PtoOp(stream, pc->u.lp.l)); - CHECK(save_PtoPred(stream, pc->u.lp.p)); + CHECK(save_PtoOp(stream, pc->y_u.lp.l)); + CHECK(save_PtoPred(stream, pc->y_u.lp.p)); pc = NEXTOP(pc,lp); break; /* instructions type o */ @@ -319,21 +319,21 @@ case _unify_list_write: case _unify_void: case _unify_void_write: - CHECK(save_Opcode(stream, pc->u.o.opcw)); + CHECK(save_Opcode(stream, pc->y_u.o.opcw)); pc = NEXTOP(pc,o); break; /* instructions type oD */ case _unify_dbterm: case _unify_l_dbterm: - CHECK(save_Opcode(stream, pc->u.oD.opcw)); - CHECK(save_DBGroundTerm(stream, pc->u.oD.D)); + CHECK(save_Opcode(stream, pc->y_u.oD.opcw)); + CHECK(save_DBGroundTerm(stream, pc->y_u.oD.D)); pc = NEXTOP(pc,oD); break; /* instructions type oN */ case _unify_bigint: case _unify_l_bigint: - CHECK(save_Opcode(stream, pc->u.oN.opcw)); - CHECK(save_BlobTermInCode(stream, pc->u.oN.b)); + CHECK(save_Opcode(stream, pc->y_u.oN.opcw)); + CHECK(save_BlobTermInCode(stream, pc->y_u.oN.b)); pc = NEXTOP(pc,oN); break; /* instructions type oc */ @@ -341,8 +341,8 @@ case _unify_atom_write: case _unify_l_atom: case _unify_l_atom_write: - CHECK(save_Opcode(stream, pc->u.oc.opcw)); - CHECK(save_ConstantTerm(stream, pc->u.oc.c)); + CHECK(save_Opcode(stream, pc->y_u.oc.opcw)); + CHECK(save_ConstantTerm(stream, pc->y_u.oc.c)); pc = NEXTOP(pc,oc); break; /* instructions type od */ @@ -350,8 +350,8 @@ case _unify_float_write: case _unify_l_float: case _unify_l_float_write: - CHECK(save_Opcode(stream, pc->u.od.opcw)); - CHECK(save_DoubleInCode(stream, pc->u.od.d)); + CHECK(save_Opcode(stream, pc->y_u.od.opcw)); + CHECK(save_DoubleInCode(stream, pc->y_u.od.d)); pc = NEXTOP(pc,od); break; /* instructions type ofa */ @@ -359,9 +359,9 @@ case _unify_l_struc_write: case _unify_struct: case _unify_struct_write: - CHECK(save_Opcode(stream, pc->u.ofa.opcw)); - CHECK(save_Func(stream, pc->u.ofa.f)); - CHECK(save_Arity(stream, pc->u.ofa.a)); + CHECK(save_Opcode(stream, pc->y_u.ofa.opcw)); + CHECK(save_Func(stream, pc->y_u.ofa.f)); + CHECK(save_Arity(stream, pc->y_u.ofa.a)); pc = NEXTOP(pc,ofa); break; /* instructions type oi */ @@ -369,17 +369,17 @@ case _unify_l_longint_write: case _unify_longint: case _unify_longint_write: - CHECK(save_Opcode(stream, pc->u.oi.opcw)); - CHECK(save_IntegerInCode(stream, pc->u.oi.i)); + CHECK(save_Opcode(stream, pc->y_u.oi.opcw)); + CHECK(save_IntegerInCode(stream, pc->y_u.oi.i)); pc = NEXTOP(pc,oi); break; /* instructions type ollll */ case _switch_list_nl: - CHECK(save_Opcode(stream, pc->u.ollll.pop)); - CHECK(save_PtoOp(stream, pc->u.ollll.l1)); - CHECK(save_PtoOp(stream, pc->u.ollll.l2)); - CHECK(save_PtoOp(stream, pc->u.ollll.l3)); - CHECK(save_PtoOp(stream, pc->u.ollll.l4)); + CHECK(save_Opcode(stream, pc->y_u.ollll.pop)); + CHECK(save_PtoOp(stream, pc->y_u.ollll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.ollll.l2)); + CHECK(save_PtoOp(stream, pc->y_u.ollll.l3)); + CHECK(save_PtoOp(stream, pc->y_u.ollll.l4)); pc = NEXTOP(pc,ollll); break; /* instructions type os */ @@ -390,23 +390,23 @@ case _unify_l_n_voids_write: case _unify_n_voids: case _unify_n_voids_write: - CHECK(save_Opcode(stream, pc->u.os.opcw)); - CHECK(save_Constant(stream, pc->u.os.s)); + CHECK(save_Opcode(stream, pc->y_u.os.opcw)); + CHECK(save_Constant(stream, pc->y_u.os.s)); pc = NEXTOP(pc,os); break; /* instructions type osc */ case _unify_n_atoms: case _unify_n_atoms_write: - CHECK(save_Opcode(stream, pc->u.osc.opcw)); - CHECK(save_Constant(stream, pc->u.osc.s)); - CHECK(save_ConstantTerm(stream, pc->u.osc.c)); + CHECK(save_Opcode(stream, pc->y_u.osc.opcw)); + CHECK(save_Constant(stream, pc->y_u.osc.s)); + CHECK(save_ConstantTerm(stream, pc->y_u.osc.c)); pc = NEXTOP(pc,osc); break; /* instructions type ou */ case _unify_l_string: case _unify_string: - CHECK(save_Opcode(stream, pc->u.ou.opcw)); - CHECK(save_BlobTermInCode(stream, pc->u.ou.ut)); + CHECK(save_Opcode(stream, pc->y_u.ou.opcw)); + CHECK(save_BlobTermInCode(stream, pc->y_u.ou.ut)); pc = NEXTOP(pc,ou); break; /* instructions type ox */ @@ -426,8 +426,8 @@ case _unify_x_val_write: case _unify_x_var: case _unify_x_var_write: - CHECK(save_Opcode(stream, pc->u.ox.opcw)); - CHECK(save_X(stream, pc->u.ox.x)); + CHECK(save_Opcode(stream, pc->y_u.ox.opcw)); + CHECK(save_X(stream, pc->y_u.ox.x)); pc = NEXTOP(pc,ox); break; /* instructions type oxx */ @@ -435,9 +435,9 @@ case _unify_l_x_var2_write: case _unify_x_var2: case _unify_x_var2_write: - CHECK(save_Opcode(stream, pc->u.oxx.opcw)); - CHECK(save_X(stream, pc->u.oxx.xl)); - CHECK(save_X(stream, pc->u.oxx.xr)); + CHECK(save_Opcode(stream, pc->y_u.oxx.opcw)); + CHECK(save_X(stream, pc->y_u.oxx.xl)); + CHECK(save_X(stream, pc->y_u.oxx.xr)); pc = NEXTOP(pc,oxx); break; /* instructions type oy */ @@ -457,8 +457,8 @@ case _unify_y_val_write: case _unify_y_var: case _unify_y_var_write: - CHECK(save_Opcode(stream, pc->u.oy.opcw)); - CHECK(save_Y(stream, pc->u.oy.y)); + CHECK(save_Opcode(stream, pc->y_u.oy.opcw)); + CHECK(save_Y(stream, pc->y_u.oy.y)); pc = NEXTOP(pc,oy); break; /* instructions type p */ @@ -471,43 +471,43 @@ case _retry_profiled: case _retry_udi: case _try_udi: - CHECK(save_PtoPred(stream, pc->u.p.p)); + CHECK(save_PtoPred(stream, pc->y_u.p.p)); pc = NEXTOP(pc,p); break; /* instructions type plxxs */ case _call_bfunc_xx: - CHECK(save_PtoPred(stream, pc->u.plxxs.p)); - CHECK(save_PtoOp(stream, pc->u.plxxs.f)); - CHECK(save_X(stream, pc->u.plxxs.x1)); - CHECK(save_X(stream, pc->u.plxxs.x2)); - CHECK(save_Constant(stream, pc->u.plxxs.flags)); + CHECK(save_PtoPred(stream, pc->y_u.plxxs.p)); + CHECK(save_PtoOp(stream, pc->y_u.plxxs.f)); + CHECK(save_X(stream, pc->y_u.plxxs.x1)); + CHECK(save_X(stream, pc->y_u.plxxs.x2)); + CHECK(save_Constant(stream, pc->y_u.plxxs.flags)); pc = NEXTOP(pc,plxxs); break; /* instructions type plxys */ case _call_bfunc_xy: case _call_bfunc_yx: - CHECK(save_PtoPred(stream, pc->u.plxys.p)); - CHECK(save_PtoOp(stream, pc->u.plxys.f)); - CHECK(save_X(stream, pc->u.plxys.x)); - CHECK(save_Y(stream, pc->u.plxys.y)); - CHECK(save_Constant(stream, pc->u.plxys.flags)); + CHECK(save_PtoPred(stream, pc->y_u.plxys.p)); + CHECK(save_PtoOp(stream, pc->y_u.plxys.f)); + CHECK(save_X(stream, pc->y_u.plxys.x)); + CHECK(save_Y(stream, pc->y_u.plxys.y)); + CHECK(save_Constant(stream, pc->y_u.plxys.flags)); pc = NEXTOP(pc,plxys); break; /* instructions type plyys */ case _call_bfunc_yy: - CHECK(save_PtoPred(stream, pc->u.plyys.p)); - CHECK(save_PtoOp(stream, pc->u.plyys.f)); - CHECK(save_Y(stream, pc->u.plyys.y1)); - CHECK(save_Y(stream, pc->u.plyys.y2)); - CHECK(save_Constant(stream, pc->u.plyys.flags)); + CHECK(save_PtoPred(stream, pc->y_u.plyys.p)); + CHECK(save_PtoOp(stream, pc->y_u.plyys.f)); + CHECK(save_Y(stream, pc->y_u.plyys.y1)); + CHECK(save_Y(stream, pc->y_u.plyys.y2)); + CHECK(save_Constant(stream, pc->y_u.plyys.flags)); pc = NEXTOP(pc,plyys); break; /* instructions type pp */ case _dexecute: case _execute: case _execute_cpred: - CHECK(save_PtoPred(stream, pc->u.pp.p)); - CHECK(save_PtoPred(stream, pc->u.pp.p0)); + CHECK(save_PtoPred(stream, pc->y_u.pp.p)); + CHECK(save_PtoPred(stream, pc->y_u.pp.p0)); pc = NEXTOP(pc,pp); break; /* instructions type s */ @@ -516,29 +516,29 @@ case _cut_t: case _pop_n: case _write_n_voids: - CHECK(save_Constant(stream, pc->u.s.s)); + CHECK(save_Constant(stream, pc->y_u.s.s)); pc = NEXTOP(pc,s); break; /* instructions type sc */ case _write_n_atoms: - CHECK(save_Constant(stream, pc->u.sc.s)); - CHECK(save_ConstantTerm(stream, pc->u.sc.c)); + CHECK(save_Constant(stream, pc->y_u.sc.s)); + CHECK(save_ConstantTerm(stream, pc->y_u.sc.c)); pc = NEXTOP(pc,sc); break; /* instructions type sllll */ case _switch_on_sub_arg_type: - CHECK(save_Constant(stream, pc->u.sllll.s)); - CHECK(save_PtoOp(stream, pc->u.sllll.l1)); - CHECK(save_PtoOp(stream, pc->u.sllll.l2)); - CHECK(save_PtoOp(stream, pc->u.sllll.l3)); - CHECK(save_PtoOp(stream, pc->u.sllll.l4)); + CHECK(save_Constant(stream, pc->y_u.sllll.s)); + CHECK(save_PtoOp(stream, pc->y_u.sllll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.sllll.l2)); + CHECK(save_PtoOp(stream, pc->y_u.sllll.l3)); + CHECK(save_PtoOp(stream, pc->y_u.sllll.l4)); pc = NEXTOP(pc,sllll); break; /* instructions type slp */ case _call_c_wfail: - CHECK(save_Constant(stream, pc->u.slp.s)); - CHECK(save_PtoOp(stream, pc->u.slp.l)); - CHECK(save_PtoPred(stream, pc->u.slp.p)); + CHECK(save_Constant(stream, pc->y_u.slp.s)); + CHECK(save_PtoOp(stream, pc->y_u.slp.l)); + CHECK(save_PtoPred(stream, pc->y_u.slp.p)); pc = NEXTOP(pc,slp); break; /* instructions type sssl */ @@ -548,20 +548,20 @@ case _if_func: case _switch_on_cons: case _switch_on_func: - CHECK(save_Constant(stream, pc->u.sssl.s)); - CHECK(save_Constant(stream, pc->u.sssl.e)); - CHECK(save_Constant(stream, pc->u.sssl.w)); - CHECK(save_PtoOp(stream, pc->u.sssl.l)); + CHECK(save_Constant(stream, pc->y_u.sssl.s)); + CHECK(save_Constant(stream, pc->y_u.sssl.e)); + CHECK(save_Constant(stream, pc->y_u.sssl.w)); + CHECK(save_PtoOp(stream, pc->y_u.sssl.l)); pc = NEXTOP(pc,sssl); break; /* instructions type sssllp */ case _expand_clauses: - CHECK(save_Constant(stream, pc->u.sssllp.s1)); - CHECK(save_Constant(stream, pc->u.sssllp.s2)); - CHECK(save_Constant(stream, pc->u.sssllp.s3)); - CHECK(save_PtoOp(stream, pc->u.sssllp.sprev)); - CHECK(save_PtoOp(stream, pc->u.sssllp.snext)); - CHECK(save_PtoPred(stream, pc->u.sssllp.p)); + CHECK(save_Constant(stream, pc->y_u.sssllp.s1)); + CHECK(save_Constant(stream, pc->y_u.sssllp.s2)); + CHECK(save_Constant(stream, pc->y_u.sssllp.s3)); + CHECK(save_PtoOp(stream, pc->y_u.sssllp.sprev)); + CHECK(save_PtoOp(stream, pc->y_u.sssllp.snext)); + CHECK(save_PtoPred(stream, pc->y_u.sssllp.p)); pc = NEXTOP(pc,sssllp); break; /* instructions type x */ @@ -572,50 +572,50 @@ case _write_x_loc: case _write_x_val: case _write_x_var: - CHECK(save_X(stream, pc->u.x.x)); + CHECK(save_X(stream, pc->y_u.x.x)); pc = NEXTOP(pc,x); break; /* instructions type xD */ case _get_dbterm: case _put_dbterm: - CHECK(save_X(stream, pc->u.xD.x)); - CHECK(save_DBGroundTerm(stream, pc->u.xD.D)); + CHECK(save_X(stream, pc->y_u.xD.x)); + CHECK(save_DBGroundTerm(stream, pc->y_u.xD.D)); pc = NEXTOP(pc,xD); break; /* instructions type xN */ case _get_bigint: case _put_bigint: - CHECK(save_X(stream, pc->u.xN.x)); - CHECK(save_BlobTermInCode(stream, pc->u.xN.b)); + CHECK(save_X(stream, pc->y_u.xN.x)); + CHECK(save_BlobTermInCode(stream, pc->y_u.xN.b)); pc = NEXTOP(pc,xN); break; /* instructions type xc */ case _get_atom: case _put_atom: - CHECK(save_X(stream, pc->u.xc.x)); - CHECK(save_ConstantTerm(stream, pc->u.xc.c)); + CHECK(save_X(stream, pc->y_u.xc.x)); + CHECK(save_ConstantTerm(stream, pc->y_u.xc.c)); pc = NEXTOP(pc,xc); break; /* instructions type xd */ case _get_float: case _put_float: - CHECK(save_X(stream, pc->u.xd.x)); - CHECK(save_DoubleInCode(stream, pc->u.xd.d)); + CHECK(save_X(stream, pc->y_u.xd.x)); + CHECK(save_DoubleInCode(stream, pc->y_u.xd.d)); pc = NEXTOP(pc,xd); break; /* instructions type xfa */ case _get_struct: case _put_struct: - CHECK(save_X(stream, pc->u.xfa.x)); - CHECK(save_Func(stream, pc->u.xfa.f)); - CHECK(save_Arity(stream, pc->u.xfa.a)); + CHECK(save_X(stream, pc->y_u.xfa.x)); + CHECK(save_Func(stream, pc->y_u.xfa.f)); + CHECK(save_Arity(stream, pc->y_u.xfa.a)); pc = NEXTOP(pc,xfa); break; /* instructions type xi */ case _get_longint: case _put_longint: - CHECK(save_X(stream, pc->u.xi.x)); - CHECK(save_IntegerInCode(stream, pc->u.xi.i)); + CHECK(save_X(stream, pc->y_u.xi.x)); + CHECK(save_IntegerInCode(stream, pc->y_u.xi.i)); pc = NEXTOP(pc,xi); break; /* instructions type xl */ @@ -629,37 +629,37 @@ case _p_number_x: case _p_primitive_x: case _p_var_x: - CHECK(save_X(stream, pc->u.xl.x)); - CHECK(save_PtoOp(stream, pc->u.xl.F)); + CHECK(save_X(stream, pc->y_u.xl.x)); + CHECK(save_PtoOp(stream, pc->y_u.xl.F)); pc = NEXTOP(pc,xl); break; /* instructions type xll */ case _jump_if_nonvar: - CHECK(save_X(stream, pc->u.xll.x)); - CHECK(save_PtoOp(stream, pc->u.xll.l1)); - CHECK(save_PtoOp(stream, pc->u.xll.l2)); + CHECK(save_X(stream, pc->y_u.xll.x)); + CHECK(save_PtoOp(stream, pc->y_u.xll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.xll.l2)); pc = NEXTOP(pc,xll); break; /* instructions type xllll */ case _switch_on_arg_type: - CHECK(save_X(stream, pc->u.xllll.x)); - CHECK(save_PtoOp(stream, pc->u.xllll.l1)); - CHECK(save_PtoOp(stream, pc->u.xllll.l2)); - CHECK(save_PtoOp(stream, pc->u.xllll.l3)); - CHECK(save_PtoOp(stream, pc->u.xllll.l4)); + CHECK(save_X(stream, pc->y_u.xllll.x)); + CHECK(save_PtoOp(stream, pc->y_u.xllll.l1)); + CHECK(save_PtoOp(stream, pc->y_u.xllll.l2)); + CHECK(save_PtoOp(stream, pc->y_u.xllll.l3)); + CHECK(save_PtoOp(stream, pc->y_u.xllll.l4)); pc = NEXTOP(pc,xllll); break; /* instructions type xps */ case _commit_b_x: - CHECK(save_X(stream, pc->u.xps.x)); - CHECK(save_PtoPred(stream, pc->u.xps.p0)); - CHECK(save_Constant(stream, pc->u.xps.s)); + CHECK(save_X(stream, pc->y_u.xps.x)); + CHECK(save_PtoPred(stream, pc->y_u.xps.p0)); + CHECK(save_Constant(stream, pc->y_u.xps.s)); pc = NEXTOP(pc,xps); break; /* instructions type xu */ case _get_string: - CHECK(save_X(stream, pc->u.xu.x)); - CHECK(save_BlobTermInCode(stream, pc->u.xu.ut)); + CHECK(save_X(stream, pc->y_u.xu.x)); + CHECK(save_BlobTermInCode(stream, pc->y_u.xu.ut)); pc = NEXTOP(pc,xu); break; /* instructions type xx */ @@ -670,15 +670,15 @@ case _glist_valx: case _put_x_val: case _put_x_var: - CHECK(save_X(stream, pc->u.xx.xl)); - CHECK(save_X(stream, pc->u.xx.xr)); + CHECK(save_X(stream, pc->y_u.xx.xl)); + CHECK(save_X(stream, pc->y_u.xx.xr)); pc = NEXTOP(pc,xx); break; /* instructions type xxc */ case _p_func2s_cv: - CHECK(save_X(stream, pc->u.xxc.x)); - CHECK(save_X(stream, pc->u.xxc.xi)); - CHECK(save_ConstantTerm(stream, pc->u.xxc.c)); + CHECK(save_X(stream, pc->y_u.xxc.x)); + CHECK(save_X(stream, pc->y_u.xxc.xi)); + CHECK(save_ConstantTerm(stream, pc->y_u.xxc.c)); pc = NEXTOP(pc,xxc); break; /* instructions type xxn */ @@ -695,9 +695,9 @@ case _p_slr_cv: case _p_slr_vc: case _p_times_vc: - CHECK(save_X(stream, pc->u.xxn.x)); - CHECK(save_X(stream, pc->u.xxn.xi)); - CHECK(save_Integer(stream, pc->u.xxn.c)); + CHECK(save_X(stream, pc->y_u.xxn.x)); + CHECK(save_X(stream, pc->y_u.xxn.xi)); + CHECK(save_Integer(stream, pc->y_u.xxn.c)); pc = NEXTOP(pc,xxn); break; /* instructions type xxx */ @@ -712,24 +712,24 @@ case _p_sll_vv: case _p_slr_vv: case _p_times_vv: - CHECK(save_X(stream, pc->u.xxx.x)); - CHECK(save_X(stream, pc->u.xxx.x1)); - CHECK(save_X(stream, pc->u.xxx.x2)); + CHECK(save_X(stream, pc->y_u.xxx.x)); + CHECK(save_X(stream, pc->y_u.xxx.x1)); + CHECK(save_X(stream, pc->y_u.xxx.x2)); pc = NEXTOP(pc,xxx); break; /* instructions type xxxx */ case _put_xx_val: - CHECK(save_X(stream, pc->u.xxxx.xl1)); - CHECK(save_X(stream, pc->u.xxxx.xl2)); - CHECK(save_X(stream, pc->u.xxxx.xr1)); - CHECK(save_X(stream, pc->u.xxxx.xr2)); + CHECK(save_X(stream, pc->y_u.xxxx.xl1)); + CHECK(save_X(stream, pc->y_u.xxxx.xl2)); + CHECK(save_X(stream, pc->y_u.xxxx.xr1)); + CHECK(save_X(stream, pc->y_u.xxxx.xr2)); pc = NEXTOP(pc,xxxx); break; /* instructions type xxy */ case _p_func2f_xy: - CHECK(save_X(stream, pc->u.xxy.x)); - CHECK(save_X(stream, pc->u.xxy.x1)); - CHECK(save_Y(stream, pc->u.xxy.y2)); + CHECK(save_X(stream, pc->y_u.xxy.x)); + CHECK(save_X(stream, pc->y_u.xxy.x1)); + CHECK(save_Y(stream, pc->y_u.xxy.y2)); pc = NEXTOP(pc,xxy); break; /* instructions type y */ @@ -737,7 +737,7 @@ case _write_y_loc: case _write_y_val: case _write_y_var: - CHECK(save_Y(stream, pc->u.y.y)); + CHECK(save_Y(stream, pc->y_u.y.y)); pc = NEXTOP(pc,y); break; /* instructions type yl */ @@ -751,15 +751,15 @@ case _p_number_y: case _p_primitive_y: case _p_var_y: - CHECK(save_Y(stream, pc->u.yl.y)); - CHECK(save_PtoOp(stream, pc->u.yl.F)); + CHECK(save_Y(stream, pc->y_u.yl.y)); + CHECK(save_PtoOp(stream, pc->y_u.yl.F)); pc = NEXTOP(pc,yl); break; /* instructions type yps */ case _commit_b_y: - CHECK(save_Y(stream, pc->u.yps.y)); - CHECK(save_PtoPred(stream, pc->u.yps.p0)); - CHECK(save_Constant(stream, pc->u.yps.s)); + CHECK(save_Y(stream, pc->y_u.yps.y)); + CHECK(save_PtoPred(stream, pc->y_u.yps.p0)); + CHECK(save_Constant(stream, pc->y_u.yps.s)); pc = NEXTOP(pc,yps); break; /* instructions type yx */ @@ -771,15 +771,15 @@ case _put_unsafe: case _put_y_val: case _put_y_var: - CHECK(save_Y(stream, pc->u.yx.y)); - CHECK(save_X(stream, pc->u.yx.x)); + CHECK(save_Y(stream, pc->y_u.yx.y)); + CHECK(save_X(stream, pc->y_u.yx.x)); pc = NEXTOP(pc,yx); break; /* instructions type yxc */ case _p_func2s_y_cv: - CHECK(save_Y(stream, pc->u.yxc.y)); - CHECK(save_X(stream, pc->u.yxc.xi)); - CHECK(save_ConstantTerm(stream, pc->u.yxc.c)); + CHECK(save_Y(stream, pc->y_u.yxc.y)); + CHECK(save_X(stream, pc->y_u.yxc.xi)); + CHECK(save_ConstantTerm(stream, pc->y_u.yxc.c)); pc = NEXTOP(pc,yxc); break; /* instructions type yxn */ @@ -796,9 +796,9 @@ case _p_slr_y_cv: case _p_slr_y_vc: case _p_times_y_vc: - CHECK(save_Y(stream, pc->u.yxn.y)); - CHECK(save_X(stream, pc->u.yxn.xi)); - CHECK(save_Integer(stream, pc->u.yxn.c)); + CHECK(save_Y(stream, pc->y_u.yxn.y)); + CHECK(save_X(stream, pc->y_u.yxn.xi)); + CHECK(save_Integer(stream, pc->y_u.yxn.c)); pc = NEXTOP(pc,yxn); break; /* instructions type yxx */ @@ -813,25 +813,25 @@ case _p_sll_y_vv: case _p_slr_y_vv: case _p_times_y_vv: - CHECK(save_Y(stream, pc->u.yxx.y)); - CHECK(save_X(stream, pc->u.yxx.x1)); - CHECK(save_X(stream, pc->u.yxx.x2)); + CHECK(save_Y(stream, pc->y_u.yxx.y)); + CHECK(save_X(stream, pc->y_u.yxx.x1)); + CHECK(save_X(stream, pc->y_u.yxx.x2)); pc = NEXTOP(pc,yxx); break; /* instructions type yyx */ case _p_func2f_yy: - CHECK(save_Y(stream, pc->u.yyx.y1)); - CHECK(save_Y(stream, pc->u.yyx.y2)); - CHECK(save_X(stream, pc->u.yyx.x)); + CHECK(save_Y(stream, pc->y_u.yyx.y1)); + CHECK(save_Y(stream, pc->y_u.yyx.y2)); + CHECK(save_X(stream, pc->y_u.yyx.x)); pc = NEXTOP(pc,yyx); break; /* instructions type yyxx */ case _get_yy_var: case _put_y_vals: - CHECK(save_Y(stream, pc->u.yyxx.y1)); - CHECK(save_Y(stream, pc->u.yyxx.y2)); - CHECK(save_X(stream, pc->u.yyxx.x1)); - CHECK(save_X(stream, pc->u.yyxx.x2)); + CHECK(save_Y(stream, pc->y_u.yyxx.y1)); + CHECK(save_Y(stream, pc->y_u.yyxx.y2)); + CHECK(save_X(stream, pc->y_u.yyxx.x1)); + CHECK(save_X(stream, pc->y_u.yyxx.x2)); pc = NEXTOP(pc,yyxx); break; #ifdef YAPOR @@ -840,14 +840,14 @@ case _getwork_seq: case _sync: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Otapl.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.Otapl.te)); + CHECK(save_TabEntry(stream, pc->y_u.Otapl.te)); #endif - CHECK(save_Arity(stream, pc->u.Otapl.s)); - CHECK(save_PtoPred(stream, pc->u.Otapl.p)); - CHECK(save_PtoOp(stream, pc->u.Otapl.d)); + CHECK(save_Arity(stream, pc->y_u.Otapl.s)); + CHECK(save_PtoPred(stream, pc->y_u.Otapl.p)); + CHECK(save_PtoOp(stream, pc->y_u.Otapl.d)); pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -873,14 +873,14 @@ case _table_try_me: case _table_try_single: #ifdef YAPOR - CHECK(save_OrArg(stream, pc->u.Otapl.or_arg)); + CHECK(save_OrArg(stream, pc->y_u.Otapl.or_arg)); #endif #ifdef TABLING - CHECK(save_TabEntry(stream, pc->u.Otapl.te)); + CHECK(save_TabEntry(stream, pc->y_u.Otapl.te)); #endif - CHECK(save_Arity(stream, pc->u.Otapl.s)); - CHECK(save_PtoPred(stream, pc->u.Otapl.p)); - CHECK(save_PtoOp(stream, pc->u.Otapl.d)); + CHECK(save_Arity(stream, pc->y_u.Otapl.s)); + CHECK(save_PtoPred(stream, pc->y_u.Otapl.p)); + CHECK(save_PtoOp(stream, pc->y_u.Otapl.d)); pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -892,7 +892,7 @@ break; /* instructions type s */ case _table_new_answer: - CHECK(save_Constant(stream, pc->u.s.s)); + CHECK(save_Constant(stream, pc->y_u.s.s)); pc = NEXTOP(pc,s); break; /* instructions type e */ diff --git a/H/walkclause.h b/H/walkclause.h index 10e33c34c..8e1241d9a 100644 --- a/H/walkclause.h +++ b/H/walkclause.h @@ -15,10 +15,10 @@ break; /* instructions type Illss */ case _enter_lu_pred: - return walk_got_lu_block(pc->u.Illss.I, startp, endp); + return walk_got_lu_block(pc->y_u.Illss.I, startp, endp); /* instructions type L */ case _alloc_for_logical_pred: - return walk_got_lu_clause(pc->u.L.ClBase, startp, endp); + return walk_got_lu_clause(pc->y_u.L.ClBase, startp, endp); /* instructions type N */ case _write_bigint: pc = NEXTOP(pc,N); @@ -27,7 +27,7 @@ case _either: case _or_else: clause_code = TRUE; - pp = pc->u.Osblp.p0; + pp = pc->y_u.Osblp.p0; pc = NEXTOP(pc,Osblp); break; /* instructions type Osbmp */ @@ -41,30 +41,30 @@ break; /* instructions type Osbpp */ case _call_cpred: - pp = pc->u.Osbpp.p; + pp = pc->y_u.Osbpp.p; return walk_found_c_pred(pp, startp, endp); case _call_usercpred: - pp = pc->u.Osbpp.p; + pp = pc->y_u.Osbpp.p; return walk_found_c_pred(pp, startp, endp); case _p_execute2: return found_meta_call(startp, endp); case _call: case _fcall: clause_code = TRUE; - pp = pc->u.Osbpp.p0; + pp = pc->y_u.Osbpp.p0; pc = NEXTOP(pc,Osbpp); break; /* instructions type OtILl */ case _count_trust_logical: case _profiled_trust_logical: case _trust_logical: - return walk_got_lu_block(pc->u.OtILl.block, startp, endp); + return walk_got_lu_block(pc->y_u.OtILl.block, startp, endp); /* instructions type OtaLl */ case _count_retry_logical: case _profiled_retry_logical: case _retry_logical: case _try_logical: - pc = pc->u.OtaLl.n; + pc = pc->y_u.OtaLl.n; break; /* instructions type OtapFs */ case _cut_c: @@ -74,7 +74,7 @@ case _try_c: case _try_userc: clause_code = TRUE; - pp = pc->u.OtapFs.p; + pp = pc->y_u.OtapFs.p; pc = NEXTOP(pc,OtapFs); break; /* instructions type Otapl */ @@ -94,7 +94,7 @@ case _try_clause: case _try_me: clause_code = FALSE; - pp = pc->u.Otapl.p; + pp = pc->y_u.Otapl.p; pc = NEXTOP(pc,Otapl); break; /* instructions type aFlp */ @@ -342,7 +342,7 @@ /* instructions type p */ case _lock_lu: case _procceed: - pp = pc->u.p.p; + pp = pc->y_u.p.p; if (pp->PredFlags & MegaClausePredFlag) return found_mega_clause(pp, startp, endp); clause_code = TRUE; @@ -372,12 +372,12 @@ break; /* instructions type pp */ case _execute_cpred: - pp = pc->u.pp.p; + pp = pc->y_u.pp.p; return walk_found_c_pred(pp, startp, endp); case _dexecute: case _execute: clause_code = TRUE; - pp = pc->u.pp.p0; + pp = pc->y_u.pp.p0; pc = NEXTOP(pc,pp); break; /* instructions type s */ @@ -398,7 +398,7 @@ break; /* instructions type slp */ case _call_c_wfail: - pp = pc->u.slp.p; + pp = pc->y_u.slp.p; return walk_found_c_pred(pp, startp, endp); /* instructions type sssl */ case _go_on_cons: @@ -619,7 +619,7 @@ case _getwork_seq: case _sync: clause_code = FALSE; - pp = pc->u.Otapl.p; + pp = pc->y_u.Otapl.p; pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -644,7 +644,7 @@ case _table_try_me: case _table_try_single: clause_code = FALSE; - pp = pc->u.Otapl.p; + pp = pc->y_u.Otapl.p; pc = NEXTOP(pc,Otapl); break; /* instructions type e */ @@ -728,13 +728,13 @@ /* this instruction is hardwired */ case _or_last: #ifdef YAPOR - pp = pc->u.Osblp.p0; + pp = pc->y_u.Osblp.p0; if (pp->PredFlags & MegaClausePredFlag) return found_mega_clause(pp, startp, endp); clause_code = TRUE; pc = NEXTOP(pc,Osblp); #else - pp = pc->u.p.p; + pp = pc->y_u.p.p; if (pp->PredFlags & MegaClausePredFlag) return found_mega_clause(pp, startp, endp); clause_code = TRUE; diff --git a/OPTYap/or.macros.h b/OPTYap/or.macros.h index 20fa887f8..6cc98215f 100644 --- a/OPTYap/or.macros.h +++ b/OPTYap/or.macros.h @@ -80,16 +80,16 @@ static inline qg_sol_fr_ptr CUT_prune_solution_frames(qg_sol_fr_ptr, int); #define YAMOP_LTT_BITS OOOOPPS!!! Unknown Integer Sizeof #endif /* SIZEOF_INT */ -#define YAMOP_OR_ARG(INST) ((INST)->u.Otapl.or_arg) -#define YAMOP_LTT(INST) (((INST)->u.Otapl.or_arg) & YAMOP_LTT_BITS) -#define YAMOP_SEQ(INST) (((INST)->u.Otapl.or_arg) & YAMOP_SEQ_FLAG) -#define YAMOP_CUT(INST) (((INST)->u.Otapl.or_arg) & YAMOP_CUT_FLAG) -#define YAMOP_FLAGS(INST) (((INST)->u.Otapl.or_arg) & YAMOP_FLAGS_BITS) +#define YAMOP_OR_ARG(INST) ((INST)->y_u.Otapl.or_arg) +#define YAMOP_LTT(INST) (((INST)->y_u.Otapl.or_arg) & YAMOP_LTT_BITS) +#define YAMOP_SEQ(INST) (((INST)->y_u.Otapl.or_arg) & YAMOP_SEQ_FLAG) +#define YAMOP_CUT(INST) (((INST)->y_u.Otapl.or_arg) & YAMOP_CUT_FLAG) +#define YAMOP_FLAGS(INST) (((INST)->y_u.Otapl.or_arg) & YAMOP_FLAGS_BITS) -#define INIT_YAMOP_LTT(INST, LTT) ((INST)->u.Otapl.or_arg = LTT+1) -#define PUT_YAMOP_LTT(INST, LTT) (INST)->u.Otapl.or_arg = YAMOP_FLAGS(INST) | (LTT+1) -#define PUT_YAMOP_SEQ(INST) (INST)->u.Otapl.or_arg |= YAMOP_SEQ_FLAG -#define PUT_YAMOP_CUT(INST) (INST)->u.Otapl.or_arg |= YAMOP_CUT_FLAG +#define INIT_YAMOP_LTT(INST, LTT) ((INST)->y_u.Otapl.or_arg = LTT+1) +#define PUT_YAMOP_LTT(INST, LTT) (INST)->y_u.Otapl.or_arg = YAMOP_FLAGS(INST) | (LTT+1) +#define PUT_YAMOP_SEQ(INST) (INST)->y_u.Otapl.or_arg |= YAMOP_SEQ_FLAG +#define PUT_YAMOP_CUT(INST) (INST)->y_u.Otapl.or_arg |= YAMOP_CUT_FLAG #define BRANCH(WORKER, DEPTH) GLOBAL_branch(WORKER, DEPTH) #define BRANCH_LTT(WORKER, DEPTH) (BRANCH(WORKER, DEPTH) & YAMOP_LTT_BITS) diff --git a/OPTYap/tab.insts.i b/OPTYap/tab.insts.i index 85498d15a..0cd19c54d 100644 --- a/OPTYap/tab.insts.i +++ b/OPTYap/tab.insts.i @@ -434,14 +434,14 @@ if (PREG->opc == Yap_opcode(_table_try)) { /* table_try */ code_ap = NEXTOP(PREG,Otapl); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; } else if (PREG->opc == Yap_opcode(_table_try_single)) { /* table_try_single */ code_ap = COMPLETION; - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; } else { /* table_try_me */ - code_ap = PREG->u.Otapl.d; + code_ap = PREG->y_u.Otapl.d; PREG = NEXTOP(PREG,Otapl); } PREFETCH_OP(PREG); @@ -453,7 +453,7 @@ GONext(); } #else - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; PREFETCH_OP(PREG); GONext(); #endif /* INCOMPLETE_TABLING */ @@ -470,7 +470,7 @@ sg_fr_ptr sg_fr; check_trail(TR); - tab_ent = PREG->u.Otapl.te; + tab_ent = PREG->y_u.Otapl.te; YENV2MEM; sg_fr = subgoal_search(PREG, YENV_ADDRESS); MEM2YENV; @@ -488,7 +488,7 @@ #ifdef THREADS_CONSUMER_SHARING if (SgFr_state(sg_fr) == ready_external) { init_subgoal_frame(sg_fr); - store_generator_consumer_node(tab_ent, sg_fr, TRUE, PREG->u.Otapl.s); + store_generator_consumer_node(tab_ent, sg_fr, TRUE, PREG->y_u.Otapl.s); PREFETCH_OP(PREG); allocate_environment(); check_for_deadlock(sg_fr); @@ -505,9 +505,9 @@ } else #endif /* DETERMINISTIC_TABLING */ { - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, COMPLETION); + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, COMPLETION); } - PREG = PREG->u.Otapl.d; /* should work also with PREG = NEXTOP(PREG,Otapl); */ + PREG = PREG->y_u.Otapl.d; /* should work also with PREG = NEXTOP(PREG,Otapl); */ PREFETCH_OP(PREG); allocate_environment(); GONext(); @@ -522,7 +522,7 @@ init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); SgFr_try_answer(sg_fr) = ans_node; - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, TRY_ANSWER); + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, TRY_ANSWER); PREG = (yamop *) CPREG; PREFETCH_OP(PREG); load_answer(ans_node, subs_ptr); @@ -638,7 +638,7 @@ sg_fr_ptr sg_fr; check_trail(TR); - tab_ent = PREG->u.Otapl.te; + tab_ent = PREG->y_u.Otapl.te; YENV2MEM; sg_fr = subgoal_search(PREG, YENV_ADDRESS); MEM2YENV; @@ -657,7 +657,7 @@ if (SgFr_state(sg_fr) == ready_external) { init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); - store_generator_consumer_node(tab_ent, sg_fr, TRUE, PREG->u.Otapl.s); + store_generator_consumer_node(tab_ent, sg_fr, TRUE, PREG->y_u.Otapl.s); PREFETCH_OP(PREG); allocate_environment(); check_for_deadlock(sg_fr); @@ -668,7 +668,7 @@ /* subgoal new */ init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, PREG->u.Otapl.d); + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, PREG->y_u.Otapl.d); PREG = NEXTOP(PREG, Otapl); PREFETCH_OP(PREG); allocate_environment(); @@ -684,7 +684,7 @@ init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); SgFr_try_answer(sg_fr) = ans_node; - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, TRY_ANSWER); + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, TRY_ANSWER); PREG = (yamop *) CPREG; PREFETCH_OP(PREG); load_answer(ans_node, subs_ptr); @@ -788,7 +788,7 @@ sg_fr_ptr sg_fr; check_trail(TR); - tab_ent = PREG->u.Otapl.te; + tab_ent = PREG->y_u.Otapl.te; YENV2MEM; sg_fr = subgoal_search(PREG, YENV_ADDRESS); MEM2YENV; @@ -807,7 +807,7 @@ if (SgFr_state(sg_fr) == ready_external) { init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); - store_generator_consumer_node(tab_ent, sg_fr, TRUE , PREG->u.Otapl.s); + store_generator_consumer_node(tab_ent, sg_fr, TRUE , PREG->y_u.Otapl.s); PREFETCH_OP(PREG); allocate_environment(); check_for_deadlock(sg_fr); @@ -818,8 +818,8 @@ /* subgoal new */ init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, NEXTOP(PREG,Otapl)); - PREG = PREG->u.Otapl.d; + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, NEXTOP(PREG,Otapl)); + PREG = PREG->y_u.Otapl.d; PREFETCH_OP(PREG); allocate_environment(); GONext(); @@ -834,7 +834,7 @@ init_subgoal_frame(sg_fr); UNLOCK_SG_FR(sg_fr); SgFr_try_answer(sg_fr) = ans_node; - store_generator_node(tab_ent, sg_fr, PREG->u.Otapl.s, TRY_ANSWER); + store_generator_node(tab_ent, sg_fr, PREG->y_u.Otapl.s, TRY_ANSWER); PREG = (yamop *) CPREG; PREFETCH_OP(PREG); load_answer(ans_node, subs_ptr); @@ -946,7 +946,7 @@ ************************************************************************/ Op(table_retry_me, Otapl) - restore_generator_node(PREG->u.Otapl.s, PREG->u.Otapl.d); + restore_generator_node(PREG->y_u.Otapl.s, PREG->y_u.Otapl.d); YENV = (CELL *) PROTECT_FROZEN_B(B); set_cut(YENV, B->cp_b); SET_BB(NORM_CP(YENV)); @@ -962,12 +962,12 @@ ************************************************************************/ Op(table_retry, Otapl) - restore_generator_node(PREG->u.Otapl.s, NEXTOP(PREG,Otapl)); + restore_generator_node(PREG->y_u.Otapl.s, NEXTOP(PREG,Otapl)); YENV = (CELL *) PROTECT_FROZEN_B(B); set_cut(YENV, B->cp_b); SET_BB(NORM_CP(YENV)); allocate_environment(); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; GONext(); ENDOp(); @@ -978,10 +978,10 @@ ************************************************************************/ Op(table_trust_me, Otapl) - restore_generator_node(PREG->u.Otapl.s, COMPLETION); + restore_generator_node(PREG->y_u.Otapl.s, COMPLETION); #ifdef DETERMINISTIC_TABLING if (B_FZ > B && IS_BATCHED_NORM_GEN_CP(B)) { - CELL *subs_ptr = (CELL *)(GEN_CP(B) + 1) + PREG->u.Otapl.s; + CELL *subs_ptr = (CELL *)(GEN_CP(B) + 1) + PREG->y_u.Otapl.s; choiceptr gcp = NORM_CP(DET_GEN_CP(subs_ptr) - 1); sg_fr_ptr sg_fr = GEN_CP(B)->cp_sg_fr; DET_GEN_CP(gcp)->cp_sg_fr = sg_fr; @@ -1010,10 +1010,10 @@ ************************************************************************/ Op(table_trust, Otapl) - restore_generator_node(PREG->u.Otapl.s, COMPLETION); + restore_generator_node(PREG->y_u.Otapl.s, COMPLETION); #ifdef DETERMINISTIC_TABLING if (B_FZ > B && IS_BATCHED_NORM_GEN_CP(B)) { - CELL *subs_ptr = (CELL *)(GEN_CP(B) + 1) + PREG->u.Otapl.s; + CELL *subs_ptr = (CELL *)(GEN_CP(B) + 1) + PREG->y_u.Otapl.s; choiceptr gcp = NORM_CP(DET_GEN_CP(subs_ptr) - 1); sg_fr_ptr sg_fr = GEN_CP(B)->cp_sg_fr; DET_GEN_CP(gcp)->cp_sg_fr = sg_fr; @@ -1031,7 +1031,7 @@ set_cut(YENV, B->cp_b); SET_BB(NORM_CP(YENV)); allocate_environment(); - PREG = PREG->u.Otapl.d; + PREG = PREG->y_u.Otapl.d; GONext(); ENDOp(); @@ -1056,7 +1056,7 @@ #endif /* DETERMINISTIC_TABLING */ { sg_fr = GEN_CP(gcp)->cp_sg_fr; - subs_ptr = (CELL *)(GEN_CP(gcp) + 1) + PREG->u.s.s; + subs_ptr = (CELL *)(GEN_CP(gcp) + 1) + PREG->y_u.s.s; } #if defined(DEBUG_TABLING) && !defined(DETERMINISTIC_TABLING) { @@ -1064,7 +1064,7 @@ CELL *aux_args; CELL *aux_subs; - arity_args = PREG->u.s.s; + arity_args = PREG->y_u.s.s; arity_subs = *subs_ptr; aux_args = (CELL *)(GEN_CP(gcp) + 1); aux_subs = subs_ptr; diff --git a/OPTYap/tab.structs.h b/OPTYap/tab.structs.h index 5f1a4c2d5..41f20c4af 100644 --- a/OPTYap/tab.structs.h +++ b/OPTYap/tab.structs.h @@ -271,8 +271,8 @@ typedef struct subgoal_entry { #define SgEnt_lock(X) ((X)->lock) #define SgEnt_code(X) ((X)->code_of_subgoal) -#define SgEnt_tab_ent(X) (((X)->code_of_subgoal)->u.Otapl.te) -#define SgEnt_arity(X) (((X)->code_of_subgoal)->u.Otapl.s) +#define SgEnt_tab_ent(X) (((X)->code_of_subgoal)->y_u.Otapl.te) +#define SgEnt_arity(X) (((X)->code_of_subgoal)->y_u.Otapl.s) #define SgEnt_hash_chain(X) ((X)->hash_chain) #define SgEnt_answer_trie(X) ((X)->answer_trie) #define SgEnt_first_answer(X) ((X)->first_answer) @@ -316,8 +316,8 @@ typedef struct subgoal_frame { #endif /* THREADS_FULL_SHARING || THREADS_CONSUMER_SHARING */ #define SgFr_lock(X) (SUBGOAL_ENTRY(X) lock) #define SgFr_code(X) (SUBGOAL_ENTRY(X) code_of_subgoal) -#define SgFr_tab_ent(X) ((SUBGOAL_ENTRY(X) code_of_subgoal)->u.Otapl.te) -#define SgFr_arity(X) ((SUBGOAL_ENTRY(X) code_of_subgoal)->u.Otapl.s) +#define SgFr_tab_ent(X) ((SUBGOAL_ENTRY(X) code_of_subgoal)->y_u.Otapl.te) +#define SgFr_arity(X) ((SUBGOAL_ENTRY(X) code_of_subgoal)->y_u.Otapl.s) #define SgFr_hash_chain(X) (SUBGOAL_ENTRY(X) hash_chain) #define SgFr_answer_trie(X) (SUBGOAL_ENTRY(X) answer_trie) #define SgFr_first_answer(X) (SUBGOAL_ENTRY(X) first_answer) diff --git a/OPTYap/tab.tries.c b/OPTYap/tab.tries.c index 4daf85a50..b417f36bc 100644 --- a/OPTYap/tab.tries.c +++ b/OPTYap/tab.tries.c @@ -1071,8 +1071,8 @@ sg_fr_ptr subgoal_search(yamop *preg, CELL **Yaddr) { stack_vars = *Yaddr; subs_arity = 0; - pred_arity = preg->u.Otapl.s; - tab_ent = preg->u.Otapl.te; + pred_arity = preg->y_u.Otapl.s; + tab_ent = preg->y_u.Otapl.te; current_sg_node = get_insert_subgoal_trie(tab_ent PASS_REGS); LOCK_SUBGOAL_TRIE(tab_ent); diff --git a/include/YapRegs.h b/include/YapRegs.h index 1485e3414..333a94ec0 100644 --- a/include/YapRegs.h +++ b/include/YapRegs.h @@ -30,7 +30,7 @@ typedef void *yamop; typedef char *ADDR; -#define RESET_VARIABLE(X) (*(X) = (CELL)(X)) +// #define RESET_VARIABLE(X) (*(X) = (CELL)(X)) #ifdef _YAP_NOT_INSTALLED_ #include "Regs.h" diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index 4b31ee038..2fcb42456 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -81,7 +81,7 @@ do_gc(UInt sz) yamop *nextpc; if (P && PREVOP(P,Osbpp)->opc == Yap_opcode(_call_usercpred)) { - arity = PREVOP(P,Osbpp)->u.Osbpp.p->ArityOfPE; + arity = PREVOP(P,Osbpp)->y_u.Osbpp.p->ArityOfPE; nextpc = P; } else { arity = 0; diff --git a/misc/buildops b/misc/buildops index 461880dea..33003c335 100644 --- a/misc/buildops +++ b/misc/buildops @@ -200,15 +200,15 @@ special_formats(C,"e") :- !, special_formats(C,"l") :- !, format(C,' if (op == _Ystop) return;~n',[]). special_formats(C,"sssl") :- !, - format(C,' AdjustSwitchTable(op, pc->u.sssl.l, pc->u.sssl.s);~n',[]). + format(C,' AdjustSwitchTable(op, pc->y_u.sssl.l, pc->y_u.sssl.s);~n',[]). special_formats(C,"Illss") :- !, format(C,' opc = NEXTOP(pc,Illss); - pc = pc->u.Illss.l1; + pc = pc->y_u.Illss.l1; break;~n',[]), % don't go to NEXTOP fail. special_formats(C,"OtaLl") :- !, - format(C,' pc = pc->u.OtaLl.n; + format(C,' pc = pc->y_u.OtaLl.n; break;~n',[]), % don't go to NEXTOP fail. @@ -230,10 +230,10 @@ dump_fields(C,[_|Info],Ops,T) :- dump_field(C,I,O,T) :- rewritable_field(O), !, get_op(O,A), - format(C,' ~sAdjust(pc->u.~s.~s);~n',[A,T,I]). + format(C,' ~sAdjust(pc->y_u.~s.~s);~n',[A,T,I]). dump_field(C,I,O,T) :- get_op(O,A), - format(C,' pc->u.~s.~s = ~sAdjust(pc->u.~s.~s);~n',[T,I,A,T,I]). + format(C,' pc->y_u.~s.~s = ~sAdjust(pc->y_u.~s.~s);~n',[T,I,A,T,I]). rewritable_field(0'd). rewritable_field(0'i). @@ -349,15 +349,15 @@ c_call_op("call_c_wfail"). % I field gives direct access to LU index block and to all Pred information output_walk(C,"Illss",_) :- !, - format(C,' return walk_got_lu_block(pc->u.Illss.I, startp, endp);~n',[]). + format(C,' return walk_got_lu_block(pc->y_u.Illss.I, startp, endp);~n',[]). output_walk(C,"OtILl",_) :- !, - format(C,' return walk_got_lu_block(pc->u.OtILl.block, startp, endp);~n',[]). + format(C,' return walk_got_lu_block(pc->y_u.OtILl.block, startp, endp);~n',[]). % I field gives direct access to LU index clause and to all Pred information output_walk(C,"L",_) :- !, - format(C,' return walk_got_lu_clause(pc->u.L.ClBase, startp, endp);~n',[]). + format(C,' return walk_got_lu_clause(pc->y_u.L.ClBase, startp, endp);~n',[]). % we cannot jump to clause code. output_walk(C,"OtaLl",_) :- !, - format(C,' pc = pc->u.OtaLl.n;~n break;~n',[]). + format(C,' pc = pc->y_u.OtaLl.n;~n break;~n',[]). % ops which point at the clause's predicate. output_walk(C,"Osblp",_) :- !, label_in_clause(C,"Osblp","p0"). @@ -443,23 +443,23 @@ output_ewalks(C,["trust_fail"|Ops]) :- label_in_clause(C,Type,Field) :- format(C,' clause_code = TRUE;~n',[]), - format(C,' pp = pc->u.~s.~s;~n',[Type,Field]), + format(C,' pp = pc->y_u.~s.~s;~n',[Type,Field]), format(C,' pc = NEXTOP(pc,~s); break;~n',[Type]). label_in_index(C,Type,Field) :- format(C,' clause_code = FALSE;~n',[]), - format(C,' pp = pc->u.~s.~s;~n',[Type,Field]), + format(C,' pp = pc->y_u.~s.~s;~n',[Type,Field]), format(C,' pc = NEXTOP(pc,~s); break;~n',[Type]). add_pi(C,Type,Field) :- - format(C,' pp = pc->u.~s.~s;~n',[Type,Field]), + format(C,' pp = pc->y_u.~s.~s;~n',[Type,Field]), format(C,' clause_code = FALSE;~n',[]), format(C,' pc = NEXTOP(pc,~s);~n',[Type]). add_pp(C,Type,Field) :- - format(C,' pp = pc->u.~s.~s;~n',[Type,Field]), + format(C,' pp = pc->y_u.~s.~s;~n',[Type,Field]), format(C,' if (pp->PredFlags & MegaClausePredFlag)~n',[]), format(C,' return found_mega_clause(pp, startp, endp);~n',[]), format(C,' clause_code = TRUE;~n',[]), @@ -469,7 +469,7 @@ walk_to_meta_call(C) :- format(C,' return found_meta_call(startp, endp);~n',[]). walk_to_c_code(C,Type,Field) :- - format(C,' pp = pc->u.~s.~s;~n',[Type,Field]), + format(C,' pp = pc->y_u.~s.~s;~n',[Type,Field]), format(C,' return walk_found_c_pred(pp, startp, endp);~n',[]). % @@ -500,7 +500,7 @@ dump_actions([A|Actions], Op, T, L) :- % conditional jumps can dump_action(body, _, _, _). dump_action(ifthenelse, _, T, L) :- - format(L,' if (cl->u.~s.F != FAILCODE) { + format(L,' if (cl->y_u.~s.F != FAILCODE) { clause->Tag = (CELL)NULL; return; }~n', [T]). @@ -517,22 +517,22 @@ dump_action(bind(Who,What,Extra), _, T, L) :- handle_bind_extra(Extra, T, Command), handle_constant(What, T, Constant), check_atom_dbref(What, Constant, ExtraAction), - format(L,' if (is_regcopy(myregs, nofregs, cl->u.~s.~s)) { + format(L,' if (is_regcopy(myregs, nofregs, cl->y_u.~s.~s)) { ~sclause->Tag = ~s;~s return; }~n', [T, Who, ExtraAction, Constant, Command]). dump_action(new(Who), _, T, L) :- - format(L,' if (!(nofregs = delete_regcopy(myregs, nofregs, cl->u.~s.~s))) { + format(L,' if (!(nofregs = delete_regcopy(myregs, nofregs, cl->y_u.~s.~s))) { clause->Tag = (CELL)NULL; return; }~n', [T,Who]). dump_action(dup(Who1,Who2), _, T, L) :- - format(L,' if (!(nofregs = add_regcopy(myregs, nofregs, cl->u.~s.~s, cl->u.~s.~s))) { + format(L,' if (!(nofregs = add_regcopy(myregs, nofregs, cl->y_u.~s.~s, cl->y_u.~s.~s))) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1,T,Who2]). dump_action(unify(Who1,Who2), _, T, L) :- - format(L,' if (!(nofregs = link_regcopies(myregs, nofregs, cl->u.~s.~s, cl->u.~s.~s))) { + format(L,' if (!(nofregs = link_regcopies(myregs, nofregs, cl->y_u.~s.~s, cl->y_u.~s.~s))) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1,T,Who2]). @@ -579,7 +579,7 @@ handle_bind_extra([], _, ""). handle_bind_extra(t_ptr=[], _,S) :- !, format_to_chars("~n clause->ucd.t_ptr = (CELL)NULL;",[],S). handle_bind_extra(t_ptr=F, Type, S) :- - format_to_chars("~n clause->ucd.t_ptr = AbsAppl(cl->u.~s.~s);",[Type,F],S). + format_to_chars("~n clause->ucd.t_ptr = AbsAppl(cl->y_u.~s.~s);",[Type,F],S). handle_bind_extra(workpc=nextop, T,S) :- format_to_chars("~n clause->ucd.WorkPC = NEXTOP(cl,~s);",[T],S). handle_bind_extra(workpc=currentop, _,S) :- @@ -596,7 +596,7 @@ handle_constant(What, T, Const) :- -> Const = What ; - format_to_chars("cl->u.~s.~s",[T,What],Const) + format_to_chars("cl->y_u.~s.~s",[T,What],Const) ). % @@ -640,45 +640,45 @@ dump_head_action(bind(Who,What,Extra), _, T, L) :- handle_constant(What, T, Constant), handle_bind_extra(Extra, T, Command), check_atom_dbref(What, Constant, ExtraAction), - format(L,' if (iarg == cl->u.~s.~s) { + format(L,' if (iarg == cl->y_u.~s.~s) { ~sclause->Tag = ~s;~s return; }~n', [T,Who,ExtraAction,Constant,Command]). dump_head_action(new(Who), _, _, _) :- Who = [0'y|_], !. % 0'y done dump_head_action(new(Who), _, T, L) :- - format(L,' if (iarg == cl->u.~s.~s) { + format(L,' if (iarg == cl->y_u.~s.~s) { clause->Tag = (CELL)NULL; return; }~n', [T,Who]). dump_head_action(dup(Who1,Who2), _, T, L) :- Who1 = [0'y|_], !, % 0'y done - format(L,' if (cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who2]). dump_head_action(dup(Who1,Who2), _, T, L) :- Who2 = [0'y|_], !, % 0'y done - format(L,' if (cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1]). dump_head_action(dup(Who1,Who2), _, T, L) :- - format(L,' if (cl->u.~s.~s == iarg || - cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg || + cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1,T,Who2]). dump_head_action(unify(Who1,Who2), _, T, L) :- Who1 = [0'y|_], !, % 0'y done - format(L,' if (cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who2]). dump_head_action(unify(Who1,Who2), _, T, L) :- Who2 = [0'y|_], !, % 0'y done - format(L,' if (cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1]). dump_head_action(unify(Who1,Who2), _, T, L) :- - format(L,' if (cl->u.~s.~s == iarg || - cl->u.~s.~s == iarg) { + format(L,' if (cl->y_u.~s.~s == iarg || + cl->y_u.~s.~s == iarg) { clause->Tag = (CELL)NULL; return; }~n', [T,Who1,T,Who2]). @@ -882,7 +882,7 @@ opinfo("gl_void_valx",[bind("xl","AbsPair(NULL)",workpc=currentop)]). opinfo("gl_void_valy",[bind("y","AbsPair(NULL)",workpc=currentop)]). opinfo("gl_void_varx",[bind("xl","AbsPair(NULL)",workpc=currentop),new("xr")]). opinfo("gl_void_vary",[bind("y","AbsPair(NULL)",workpc=currentop),new("y")]). -opinfo("get_struct",[bind("x","AbsAppl((CELL *)cl->u.xfa.f)",workpc=nextop)]). +opinfo("get_struct",[bind("x","AbsAppl((CELL *)cl->y_u.xfa.f)",workpc=nextop)]). opinfo("get_float",[bind("x","AbsAppl((CELL *)FunctorDouble)",t_ptr="d")]). opinfo("get_longint",[bind("x","AbsAppl((CELL *)FunctorLongInt)",t_ptr="i")]). opinfo("get_string",[bind("x","AbsAppl((CELL *)FunctorString)",t_ptr=[])]). @@ -1166,10 +1166,10 @@ output_save(S, [Name|Names], [Type|Types], Desc) :- output_save_type(S, OpT, T-"none", Desc) :- !, get_op(OpT, Name), - format(S, " CHECK(save_~s(stream, pc->u.~s.~s));~n", [Name, Desc, T]). + format(S, " CHECK(save_~s(stream, pc->y_u.~s.~s));~n", [Name, Desc, T]). output_save_type(S, OpT, T-Def, Desc) :- get_op(OpT, Name), - format(S, "#ifdef ~s~n CHECK(save_~s(stream, pc->u.~s.~s));~n#endif~n", [Def,Name, Desc, T]). + format(S, "#ifdef ~s~n CHECK(save_~s(stream, pc->y_u.~s.~s));~n#endif~n", [Def,Name, Desc, T]). From 3087d51b18224305e649f7b7f68a00e5f6041935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 4 Jun 2014 22:07:37 +0100 Subject: [PATCH 05/13] more swig upddates. --- packages/swig/Android.mk.in | 1 + packages/swig/android/SwigSimple.java | 54 ++++++++++++++++++++++----- packages/swig/python/demo.py | 20 ++++++++++ 3 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 packages/swig/python/demo.py diff --git a/packages/swig/Android.mk.in b/packages/swig/Android.mk.in index 44b2617eb..1f8ce8a70 100644 --- a/packages/swig/Android.mk.in +++ b/packages/swig/Android.mk.in @@ -2,6 +2,7 @@ LOCAL_PATH := $(call my-dir) NDK_TOOLCHAIN_VERSION := 4.8 include $(CLEAR_VARS) +LOCAL_LDLIBS := -llog -landroid LOCAL_LDLIBS += @abs_top_builddir@/libYap.a @abs_top_builddir@/yapi.o LOCAL_MODULE := example LOCAL_SRC_FILES := yap_wrap.cpp diff --git a/packages/swig/android/SwigSimple.java b/packages/swig/android/SwigSimple.java index 8d759acfc..51179cfa7 100644 --- a/packages/swig/android/SwigSimple.java +++ b/packages/swig/android/SwigSimple.java @@ -6,50 +6,84 @@ import android.view.View; import android.widget.TextView; import android.widget.ScrollView; import android.text.method.ScrollingMovementMethod; +import android.content.pm.PackageManager; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.util.Log; +import android.content.res.AssetManager; public class SwigSimple extends Activity { TextView outputText = null; ScrollView scroller = null; + YAPEngine eng = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); - setContentView(R.layout.main); + String s = "ugh"; + setContentView(R.layout.main); + try { + PackageManager m = getPackageManager(); + s = getPackageName(); + PackageInfo p = m.getPackageInfo(s, 0); + s = p.applicationInfo.dataDir; + mgr = getResources().getAssets(); + load(mgr); + } catch(NameNotFoundException e) { + Log.e(TAG, "Couldn't find package information in PackageManager", e); + } + outputText = (TextView)findViewById(R.id.OutputText); - outputText.setText("Press 'Run' to start...\n"); + outputText.setText("Application " + s + "\nPress 'Run' to start...\n"); outputText.setMovementMethod(new ScrollingMovementMethod()); - + YAPParams p = new YAPParams(); + eng = new YAPEngine( p ); + scroller = (ScrollView)findViewById(R.id.Scroller); } public void onRunButtonClick(View view) { outputText.append("Started...\n"); - nativeCall(); + if (BuildConfig.DEBUG) { + Log.i(TAG, "onRunButtonClick called"); + } outputText.append("Finished!\n"); // Ensure scroll to end of text scroller.post(new Runnable() { public void run() { scroller.fullScroll(ScrollView.FOCUS_DOWN); + String s = "['/assets/share/Yap/lists'].\n"; + outputText.append(s); + YAPQuery q = eng.query(s); + q.next(); + String s = "member(X, [1,2,3]).\n"; + outputText.append(s); + YAPQuery q = eng.query(s); + q.next(); + String sn = } }); } - /** Calls into C/C++ code */ - public void nativeCall() - { - // YAPParams p = new YAPParams(); - //YAPEngine t = new YAPEngine( p ); // TODO - } /** static constructor */ static { + System.loadLibrary("android"); + System.loadLibrary("log"); System.loadLibrary("example"); } + + private static native void load(AssetManager mgr); + + private AssetManager mgr; + + private static final String TAG = "SwigSimple"; } diff --git a/packages/swig/python/demo.py b/packages/swig/python/demo.py new file mode 100644 index 000000000..2a853c3f7 --- /dev/null +++ b/packages/swig/python/demo.py @@ -0,0 +1,20 @@ +# python commands + +import sys +import yap + +engine = yap.YAPEngine(); +# engine = yap.YAPEngine(yap.YAPParams()); + +def go(): + while True: + s = raw_input("Prolog Query: ") + q = engine.query(s) + while q.next(): + vs = q.namedVars(); + while vs.length() > 0: + eq = vs.car() + print eq.text() + print eq.getArg(1).text() + " = " + eq.getArg(2).text() + vs = vs.cdr() + print "no more answers" From 71b40e04382e649c0f933c4ece136a3db36aad97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 4 Jun 2014 22:08:37 +0100 Subject: [PATCH 06/13] changes to support eclipse compat support of Android assets as /assets files. --- C/c_interface.c | 3 + C/grow.c | 24 +- C/heapgc.c | 17 +- C/iopreds.c | 5 +- C/qlyr.c | 1 + C/save.c | 31 +- C/threads.c | 17 + C/utilpreds.c | 34 ++ CXX/yapi.cpp | 147 ++++-- CXX/yapi.hh | 276 ++++++---- H/Atoms.h | 3 +- H/Yap.h | 10 + H/Yapproto.h | 2 + H/pl-yap.h | 2 + H/yapio.h | 1 - Makefile.in | 23 +- config.h.in | 6 + configure | 846 ++++++++++++++++++------------- configure.in | 31 +- os/SWI-Stream.h | 3 + os/pl-file.c | 12 +- os/pl-read.c | 103 ++-- os/pl-stream.c | 218 +++++++- packages/clib | 2 +- packages/odbc | 2 +- packages/prism/src/c/core/glue.c | 3 + packages/python/Makefile.in | 2 +- packages/swig/Makefile.in | 18 +- 28 files changed, 1273 insertions(+), 569 deletions(-) diff --git a/C/c_interface.c b/C/c_interface.c index 8ce538322..034504aae 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -2288,12 +2288,14 @@ YAP_EnterGoal(PredEntry *pe, Term *ptr, YAP_dogoalinfo *dgi) CACHE_REGS int out; + __android_log_print(ANDROID_LOG_INFO, "yapi.cpp", "got %p pred %p slot %d", LOCAL, pe, dgi->CurSlot); BACKUP_MACHINE_REGS(); LOCAL_PrologMode = UserMode; dgi->p = P; dgi->cp = CP; dgi->CurSlot = LOCAL_CurSlot; // ensure our current ENV receives current P. + Yap_PrepGoal(pe->ArityOfPE, ptr, B PASS_REGS); P = pe->CodeOfPred; dgi->b = LCL0-(CELL*)B; @@ -2986,6 +2988,7 @@ YAP_Init(YAP_init_args *yap_init) if (initialised) return YAP_BOOT_DONE_BEFOREHAND; initialised = TRUE; + __android_log_print(ANDROID_LOG_INFO, "c_interface.c", "entered init %p", yap_init); Yap_InitPageSize(); /* init memory page size, required by later functions */ #if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA) diff --git a/C/grow.c b/C/grow.c index 54b040fd5..a922485eb 100755 --- a/C/grow.c +++ b/C/grow.c @@ -1419,13 +1419,18 @@ Yap_locked_growheap(int fix_code, size_t in_size, void *cip) int res; int blob_overflow = (NOfBlobs > NOfBlobsMax); -#if (THREADS) || YAPOR - res = FALSE; - if (NOfAtoms > 2*AtomHashTableSize || blob_overflow) { - Yap_undo_signal( YAP_CDOVF_SIGNAL ); - return TRUE; + LOCK(GLOBAL_ThreadHandlesLock); + // make sure that we cannot have more than a thread life + if (Yap_NOfThreads() > 1) { + UNLOCK(GLOBAL_ThreadHandlesLock); + res = FALSE; + if (NOfAtoms > 2*AtomHashTableSize || blob_overflow) { + Yap_undo_signal( YAP_CDOVF_SIGNAL ); + UNLOCK(LOCAL_SignalLock); + return TRUE; + } } -#else + // don't release the MTHREAD lock in case we're running from the C-interface. if (NOfAtoms > 2*AtomHashTableSize || blob_overflow) { UInt n = NOfAtoms; if (GLOBAL_AGcThreshold) @@ -1438,11 +1443,14 @@ Yap_locked_growheap(int fix_code, size_t in_size, void *cip) res = growatomtable( PASS_REGS1 ); } else { Yap_undo_signal( YAP_CDOVF_SIGNAL ); + UNLOCK(GLOBAL_ThreadHandlesLock); return TRUE; } LeaveGrowMode(GrowHeapMode); - if (res) + if (res) { + UNLOCK(GLOBAL_ThreadHandlesLock); return res; + } } #if USE_SYSTEM_MALLOC P = Yap_Error(OUT_OF_HEAP_ERROR,TermNil,"malloc failed"); @@ -1451,7 +1459,7 @@ Yap_locked_growheap(int fix_code, size_t in_size, void *cip) res=do_growheap(fix_code, in_size, (struct intermediates *)cip, NULL, NULL, NULL PASS_REGS); #endif LeaveGrowMode(GrowHeapMode); -#endif + UNLOCK(GLOBAL_ThreadHandlesLock); return res; } diff --git a/C/heapgc.c b/C/heapgc.c index cbd69be2e..0bec346d5 100755 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -169,11 +169,13 @@ PUSH_POINTER(CELL *v USES_REGS) { *LOCAL_iptop++ = v; } +#ifdef EASY_SHUNTING inline static void POP_POINTER( USES_REGS1 ) { if (LOCAL_iptop >= (CELL_PTR *)ASP) return; --LOCAL_iptop; } +#endif inline static void POPSWAP_POINTER(CELL_PTR *vp, CELL_PTR v USES_REGS) { @@ -1524,21 +1526,6 @@ mark_external_reference(CELL *ptr USES_REGS) { } } -static void inline -mark_external_reference2(CELL *ptr USES_REGS) { - CELL *next = GET_NEXT(*ptr); - - if (ONHEAP(next)) { -#ifdef HYBRID_SCHEME - CELL_PTR *old = LOCAL_iptop; -#endif - mark_variable(ptr PASS_REGS); - POPSWAP_POINTER(old, ptr PASS_REGS); - } else { - mark_code(ptr,next PASS_REGS); - } -} - /* * mark all heap objects accessible from the trail (which includes the active * general purpose registers) diff --git a/C/iopreds.c b/C/iopreds.c index c03156e5a..fe8179cbe 100755 --- a/C/iopreds.c +++ b/C/iopreds.c @@ -484,7 +484,7 @@ Yap_read_term(term_t t0, IOSTREAM *inp_stream, struct read_data_t *rd) { CACHE_REGS TokEntry *tokstart; - Term t, v; + Term t; Term OCurrentModule = CurrentModule, tmod, tpos; int store_comments = rd->comments; @@ -614,6 +614,7 @@ Yap_read_term(term_t t0, IOSTREAM *inp_stream, struct read_data_t *rd) if (store_comments && !Yap_unify(LOCAL_Comments, Yap_GetFromSlot( rd->comments PASS_REGS))) return FALSE; if (rd->varnames) { + Term v; while (TRUE) { CELL *old_H = HR; @@ -638,6 +639,7 @@ Yap_read_term(term_t t0, IOSTREAM *inp_stream, struct read_data_t *rd) } if (rd->variables) { + Term v; while (TRUE) { CELL *old_H = HR; @@ -661,6 +663,7 @@ Yap_read_term(term_t t0, IOSTREAM *inp_stream, struct read_data_t *rd) return FALSE; } if (rd->singles) { + Term v; while (TRUE) { CELL *old_H = HR; diff --git a/C/qlyr.c b/C/qlyr.c index 7411ef7b9..fb6a70784 100755 --- a/C/qlyr.c +++ b/C/qlyr.c @@ -1082,6 +1082,7 @@ Yap_Restore(char *s, char *lib_dir) IOSTREAM *stream = Yap_OpenRestore(s, lib_dir); if (!stream) return -1; + __android_log_print(ANDROID_LOG_INFO, "qlyr.c", "loading startup %p", stream); GLOBAL_RestoreFile = s; read_module(stream); Sclose( stream ); diff --git a/C/save.c b/C/save.c index 7ec1f6212..250fed0ef 100755 --- a/C/save.c +++ b/C/save.c @@ -247,6 +247,22 @@ open_file(char *my_file, int flag) { int splfild; +#if __ANDROID__ + if (strstr(my_file, "/assets/") == my_file) { + if (flag == O_RDONLY) { + extern AAssetManager *assetManager; + my_file += strlen("/assets/"); + __android_log_print(ANDROID_LOG_ERROR, "save.c", "open_file %p %s", assetManager, my_file); + AAsset* asset = AAssetManager_open(assetManager, my_file, AASSET_MODE_UNKNOWN); + if (!asset) + return -1; + __android_log_print(ANDROID_LOG_ERROR, "save.c", "open_file %p", asset); + AAsset_close( asset ); + return 0; // usually the file will be compressed, so there is no point in actually trying to open it. + } + return -1; + } +#endif #ifdef M_WILLIAMS if (flag & O_CREAT) splfild = creat(my_file, flag); @@ -1453,6 +1469,11 @@ OpenRestore(char *inpf, char *YapLibDir, CELL *Astate, CELL *ATrail, CELL *AStac int mode = FAIL_RESTORE; char save_buffer[YAP_FILENAME_MAX+1]; +#if __ANDROID__ + if (!inpf) + inpf = YAPSTARTUP; +#endif + __android_log_print(ANDROID_LOG_ERROR, "save.c", "saved state %s", inpf); save_buffer[0] = '\0'; // LOCAL_ErrorMessage = NULL; if (inpf == NULL) { @@ -1473,10 +1494,13 @@ OpenRestore(char *inpf, char *YapLibDir, CELL *Astate, CELL *ATrail, CELL *AStac strncat(LOCAL_FileNameBuf, "/", YAP_FILENAME_MAX-1); strncat(LOCAL_FileNameBuf, inpf, YAP_FILENAME_MAX-1); } else { - strncat(LOCAL_FileNameBuf, inpf, YAP_FILENAME_MAX-1); + strncpy(LOCAL_FileNameBuf, inpf, YAP_FILENAME_MAX-1); } - if (inpf != NULL && !((splfild = open_file(inpf, O_RDONLY)) < 0)) { + if (inpf != NULL && + !((splfild = open_file(inpf, O_RDONLY)) < 0)) + { if ((mode = try_open(inpf,Astate,ATrail,AStack,AHeap,save_buffer,streamp)) != FAIL_RESTORE) { + __android_log_print(ANDROID_LOG_ERROR, "save.c", "saved state %p", *streamp); return mode; } } @@ -1517,7 +1541,7 @@ OpenRestore(char *inpf, char *YapLibDir, CELL *Astate, CELL *ATrail, CELL *AStac } #if _MSC_VER || defined(__MINGW32__) if ((inpf = Yap_RegistryGetString("startup"))) { - if (!((splfild = open_file(inpf, O_RDONLY)) < 0)) { + if (!((splfild = Sopen_file(inpf, "r")) < 0)) { if ((mode = try_open(inpf,Astate,ATrail,AStack,AHeap,save_buffer,streamp)) != FAIL_RESTORE) { return mode; } @@ -1582,6 +1606,7 @@ Yap_OpenRestore(char *inpf, char *YapLibDir) IOSTREAM *stream = NULL; OpenRestore(inpf, YapLibDir, NULL, NULL, NULL, NULL, &stream); + __android_log_print(ANDROID_LOG_ERROR, "save.c", "saved state %p", stream); return stream; } diff --git a/C/threads.c b/C/threads.c index f79f17cc8..ba8e517f7 100755 --- a/C/threads.c +++ b/C/threads.c @@ -90,6 +90,12 @@ Yap_ThreadID( void ) return -1; } +int +Yap_NOfThreads(void) { + // GLOBAL_ThreadHandlesLock is held + return GLOBAL_NOfThreads; +} + static int allocate_new_tid(void) { @@ -1090,6 +1096,17 @@ void Yap_InitThreadPreds(void) #else +int +Yap_NOfThreads(void) { + // GLOBAL_ThreadHandlesLock is held +#ifdef YAPOR + return 2; +#else + return 1; +#endif +} + + static Int p_no_threads(void) { /* '$thread_signal'(+P) */ diff --git a/C/utilpreds.c b/C/utilpreds.c index 13276834c..7ea8a0be8 100644 --- a/C/utilpreds.c +++ b/C/utilpreds.c @@ -1618,6 +1618,40 @@ p_term_variables( USES_REGS1 ) /* variables in term t */ return Yap_unify(ARG2,out); } +/** + * Exports a nil-terminated list with all the variables in a term. + * @param[in] the term + * @param[in] the arity of the calling predicate (required for exact garbage collection). + */ +Term +Yap_TermVariables( Term t, UInt arity USES_REGS ) /* variables in term t */ +{ + Term out; + + do { + t = Deref(t); + if (IsVarTerm(t)) { + return MkPairTerm(t, TermNil); + } else if (IsPrimitiveTerm(t)) { + return TermNil; + } else if (IsPairTerm(t)) { + out = vars_in_complex_term(RepPair(t)-1, + RepPair(t)+1, TermNil PASS_REGS); + } + else { + Functor f = FunctorOfTerm(t); + out = vars_in_complex_term(RepAppl(t), + RepAppl(t)+ + ArityOfFunctor(f), TermNil PASS_REGS); + } + if (out == 0L) { + if (!expand_vts( arity PASS_REGS )) + return FALSE; + } + } while (out == 0L); + return out; +} + static Term attvars_in_complex_term(register CELL *pt0, register CELL *pt0_end, Term inp USES_REGS) { diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index 6d0cfa0f1..fe03373ca 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -3,6 +3,8 @@ #include "yapi.hh" + + YAPAtomTerm::YAPAtomTerm(char *s) { // build string BACKUP_H(); @@ -12,7 +14,7 @@ YAPAtomTerm::YAPAtomTerm(char *s) { // build string inp.type = YAP_STRING_CHARS; out.type = YAP_STRING_ATOM; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = MkAtomTerm(out.val.a); + mk ( MkAtomTerm(out.val.a) ); else t = 0L; RECOVER_H(); } @@ -29,7 +31,7 @@ YAPAtomTerm::YAPAtomTerm(char *s, size_t len) { // build string out.sz = len; out.max = len; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = MkAtomTerm(out.val.a); + mk ( MkAtomTerm(out.val.a) ); else t = 0L; RECOVER_H(); } @@ -43,7 +45,7 @@ YAPAtomTerm::YAPAtomTerm(wchar_t *s): YAPTerm() { // build string inp.type = YAP_STRING_WCHARS; out.type = YAP_STRING_ATOM; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = MkAtomTerm(out.val.a); + mk ( MkAtomTerm(out.val.a) ); else t = 0L; RECOVER_H(); } @@ -60,7 +62,7 @@ YAPAtomTerm::YAPAtomTerm(wchar_t *s, size_t len) : YAPTerm() { // build string out.sz = len; out.max = len; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = MkAtomTerm(out.val.a); + mk ( MkAtomTerm(out.val.a) ); else t = 0L; RECOVER_H(); } @@ -75,7 +77,7 @@ YAPStringTerm::YAPStringTerm(char *s) { // build string inp.type = YAP_STRING_CHARS; out.type = YAP_STRING_STRING; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = out.val.t; + mk ( out.val.t ); else t = 0L; RECOVER_H(); } @@ -92,7 +94,7 @@ YAPStringTerm::YAPStringTerm(char *s, size_t len) { // build string out.sz = len; out.max = len; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = out.val.t; + mk ( out.val.t ); else t = 0L; RECOVER_H(); } @@ -106,7 +108,7 @@ YAPStringTerm::YAPStringTerm(wchar_t *s): YAPTerm() { // build string inp.type = YAP_STRING_WCHARS; out.type = YAP_STRING_STRING; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = out.val.t; + mk ( out.val.t ); else t = 0L; RECOVER_H(); } @@ -123,7 +125,7 @@ YAPStringTerm::YAPStringTerm(wchar_t *s, size_t len) : YAPTerm() { // build stri out.sz = len; out.max = len; if (Yap_CVT_Text(&inp, &out PASS_REGS)) - t = out.val.t; + mk ( out.val.t ); else t = 0L; RECOVER_H(); } @@ -131,25 +133,25 @@ YAPStringTerm::YAPStringTerm(wchar_t *s, size_t len) : YAPTerm() { // build stri YAPApplTerm::YAPApplTerm(YAPFunctor f, YAPTerm ts[]) : YAPTerm() { UInt arity = ArityOfFunctor(f.f); - t = Yap_MkApplTerm( f.f, arity, (Term *)ts); + mk ( Yap_MkApplTerm( f.f, arity, (Term *)ts) ); } YAPApplTerm::YAPApplTerm(YAPFunctor f) : YAPTerm() { UInt arity = ArityOfFunctor(f.f); - t = Yap_MkNewApplTerm( f.f, arity); + mk ( Yap_MkNewApplTerm( f.f, arity) ); } -YAPTerm YAPApplTerm::getArg(unsigned int arg) { - return YAPTerm( ArgOfTerm(arg, t) ); +YAPTerm YAPApplTerm::getArg(int arg) { + return YAPTerm( ArgOfTerm(arg, gt() ) ); } YAPFunctor YAPApplTerm::getFunctor() { - return YAPFunctor( FunctorOfTerm(t) ); + return YAPFunctor( FunctorOfTerm( gt( )) ); } YAPPairTerm::YAPPairTerm(YAPTerm th, YAPTerm tl) : YAPTerm() { CACHE_REGS - t = MkPairTerm( th.t, tl.t); + mk ( MkPairTerm( th.term(), tl.term() ) ); } YAPPairTerm::YAPPairTerm() : YAPTerm() { @@ -157,8 +159,9 @@ YAPPairTerm::YAPPairTerm() : YAPTerm() { } YAP_tag_t YAPTerm::tag() { - if (IsVarTerm(t)) { - CELL *pt = VarOfTerm(t); + Term tt = gt( ); + if (IsVarTerm(tt)) { + CELL *pt = VarOfTerm(tt); if (IsUnboundVar(pt)) { CACHE_REGS if (IsAttVar(pt)) @@ -167,14 +170,14 @@ YAP_tag_t YAPTerm::tag() { } return YAP_TAG_REF; } - if (IsPairTerm(t)) + if (IsPairTerm(tt)) return YAP_TAG_PAIR; - if (IsAtomOrIntTerm(t)) { - if (IsAtomTerm(t)) + if (IsAtomOrIntTerm(tt)) { + if (IsAtomTerm(tt)) return YAP_TAG_ATOM; return YAP_TAG_INT; } else { - Functor f = FunctorOfTerm(t); + Functor f = FunctorOfTerm(tt); if (IsExtensionFunctor(f)) { if (f == FunctorDBRef) { @@ -184,7 +187,7 @@ YAP_tag_t YAPTerm::tag() { return YAP_TAG_LONG_INT; } if (f == FunctorBigInt) { - big_blob_type bt = (big_blob_type)RepAppl(t)[1]; + big_blob_type bt = (big_blob_type)RepAppl(tt)[1]; switch (bt) { case BIG_INT: return YAP_TAG_BIG_INT; @@ -203,7 +206,7 @@ YAPTerm YAPTerm::deepCopy() { Term tn; BACKUP_MACHINE_REGS(); - tn = Yap_CopyTerm(t); + tn = Yap_CopyTerm( gt() ); RECOVER_MACHINE_REGS(); return new YAPTerm( tn ); @@ -213,7 +216,7 @@ bool YAPTerm::exactlyEqual(YAPTerm t1) { int out; BACKUP_MACHINE_REGS(); - out = Yap_eq(Deref(t), Deref(t1.t)); + out = Yap_eq(gt(), t1.term()); RECOVER_MACHINE_REGS(); return out; @@ -223,7 +226,7 @@ bool YAPTerm::unify(YAPTerm t1) { int out; BACKUP_MACHINE_REGS(); - out = Yap_unify(Deref(t), Deref(t1.t)); + out = Yap_unify(gt(), t1.term()); RECOVER_MACHINE_REGS(); return out; @@ -233,7 +236,7 @@ bool YAPTerm::unifiable(YAPTerm t1) { int out; BACKUP_MACHINE_REGS(); - out = Yap_Unifiable(Deref(t), Deref(t1.t)); + out = Yap_Unifiable(gt(), t1.term()); RECOVER_MACHINE_REGS(); return out; @@ -243,23 +246,57 @@ bool YAPTerm::variant(YAPTerm t1) { int out; BACKUP_MACHINE_REGS(); - out = Yap_Variant(Deref(t), Deref(t1.t)); + out = Yap_Variant(gt(), t1.term()); RECOVER_MACHINE_REGS(); return out; } intptr_t YAPTerm::hash(size_t sz, size_t depth, bool variant) { - Int out; + intptr_t out; BACKUP_MACHINE_REGS(); - out = Yap_TermHash(t, sz, depth, variant); + out = Yap_TermHash(gt(), sz, depth, variant) ; RECOVER_MACHINE_REGS(); return out; } +char *YAPTerm::text(void) { + size_t sze = 4096, sz, length; + char *buf = new char[sze], *b; + int enc; + + BACKUP_MACHINE_REGS(); + if ((b = Yap_TermToString(gt(), buf, sze, &length, &enc, 0)) != buf) { + if (b) free(b); + RECOVER_MACHINE_REGS(); + return NULL; + } + sz = length+1; + char *os = new char[sz]; + if (!os) { + RECOVER_MACHINE_REGS(); + return NULL; + } + memcpy(os, buf, sz); + delete buf; + RECOVER_MACHINE_REGS(); + return os; +} + +/* +YAPTerm *YAPTerm::vars() +{ + BACKUP_MACHINE_REGS(); + CACHE_REGS + YAPPairTerm lv = YAPPairTerm(Yap_TermVariables(gt(), 0 PASS_REGS)); + RECOVER_MACHINE_REGS(); + return lv; +} +*/ + char *YAPAtom::name(void) { if (IsWideAtom(a)) { @@ -312,8 +349,27 @@ char *YAPAtom::name(void) { } +YAPPredicate::YAPPredicate(const char *s, Term **outp, term_t &vnames) { + CACHE_REGS + vnames = Yap_NewSlots(1 PASS_REGS); + Term t = Yap_StringToTerm(s, strlen(s)+1, vnames), m; + t = Yap_StripModule(t, &m); + if (IsVarTerm(t) || IsNumTerm(t)) + ap = NULL; + if (IsAtomTerm(t)) { + ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); + *outp = NULL; + } else if (IsApplTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); + *outp = RepAppl(t)+1; + } else if (IsPairTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); + *outp = RepPair(t); + } +} + void -YAPQuery::initQuery( Term *t ) +YAPQuery::initQuery( Term *ts ) { CACHE_REGS @@ -322,35 +378,37 @@ YAPQuery::initQuery( Term *t ) this->q_open=1; this->q_state=0; this->q_flags = 0; - this->q_g = t; + this->q_g = ts; +} + +void +YAPQuery::initQuery( YAPTerm t[], arity_t arity ) +{ + Term *ts = new Term[arity]; + for (int i = 0; i < arity; i++) + ts[i] = t[i].term(); + + return initQuery( ts ); } YAPQuery::YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]): YAPPredicate(f, mod) { /* ignore flags for now */ - initQuery( (Term *)t ); + initQuery( t , f.arity()); } YAPQuery::YAPQuery(YAPFunctor f, YAPTerm t[]): YAPPredicate(f) { /* ignore flags for now */ - initQuery( (Term *)t ); + initQuery( t , f.arity()); } YAPQuery::YAPQuery(YAPPredicate p, YAPTerm t[]): YAPPredicate(p.ap) { - initQuery( (Term *)t ); + initQuery( t , p.ap->ArityOfPE); } -YAPQuery::YAPQuery(char *s): YAPPredicate(s, &this->q_g) -{ - Term *t = this->q_g; - - initQuery( t ); -} - - int YAPQuery::next() { CACHE_REGS @@ -412,3 +470,10 @@ YAPEngine::YAPEngine(YAPParams const& params) { YAP_Init( (YAP_init_args *)¶ms.init_args ); } +YAPEngine::YAPEngine() +{ +YAPParams *params = new YAPParams(); + YAP_Init( ¶ms->init_args ); +} + + diff --git a/CXX/yapi.hh b/CXX/yapi.hh index 35545bdce..faa56088b 100644 --- a/CXX/yapi.hh +++ b/CXX/yapi.hh @@ -63,6 +63,8 @@ extern "C" { // taken from yap_structs.h #include "iopreds.h" +extern Term Yap_StringToTerm(const char *s, size_t len, term_t bindings); + // we cannot consult YapInterface.h, that conflicts with what we declare, though // it shouldn't } @@ -73,6 +75,8 @@ class YAPEngine; class YAPTermHandle; class YAPAtom; class YAPFunctor; +class YAPApplTerm; +class YAPPairTerm; class YAPQuery; /** @@ -84,62 +88,89 @@ class YAPTerm { friend class YAPApplTerm; friend class YAPPairTerm; protected: - Term t; + term_t t; + inline void mk(Term t0) { CACHE_REGS t = Yap_InitSlot( t0 PASS_REGS); } + inline Term gt(void) { CACHE_REGS return Yap_GetFromSlot( t PASS_REGS); } public: - YAPTerm() { t = TermNil; } // do nothing constructor - YAPTerm(void *ptr) { CACHE_REGS t = MkIntegerTerm( (Int)ptr ); } - YAPTerm(Term tn) { t = tn; } - YAPTerm(char *s) { Term tp ; t = YAP_ReadBuffer(s,&tp); } - + YAPTerm() { mk(TermNil); } // do nothing constructor + YAPTerm(void *ptr) { CACHE_REGS mk( MkIntegerTerm( (Int)ptr ) );} + YAPTerm(Term tn) { mk( tn ); } + YAPTerm(char *s) { Term tp ; mk( YAP_ReadBuffer(s,&tp) ); } + /*~YAPTerm(void) { + CACHE_REGS + Yap_RecoverSlots(1, t PASS_REGS); + }*/ + Term term() { return gt(); } YAP_tag_t tag(); YAPTerm deepCopy(); + //const YAPTerm *vars(); bool exactlyEqual(YAPTerm t1); bool unify(YAPTerm t1); bool unifiable(YAPTerm t1); bool variant(YAPTerm t1); intptr_t hash(size_t sz, size_t depth, bool variant); - bool isVar() { return IsVarTerm(t); } - bool isAtom() { return IsAtomTerm(t); } - bool isInteger() { return IsIntegerTerm(t); } - bool isFloat() { return IsFloatTerm(t); } - bool isCompound() { return !(IsVarTerm(t) || IsNumTerm(t)); } - bool isAppl() { return IsApplTerm(t); } - bool isPair() { return IsPairTerm(t); } - bool isGround() { return Yap_IsGroundTerm(t); } - bool isList() { return Yap_IsListTerm(t); } - bool isString() { return IsStringTerm(t); } + bool isVar() { return IsVarTerm( gt() ); } + bool isAtom() { return IsAtomTerm( gt() ); } + bool isInteger() { return IsIntegerTerm( gt() ); } + bool isFloat() { return IsFloatTerm( gt() ); } + bool isCompound() { return !(IsVarTerm( gt() ) || IsNumTerm( gt() )); } + bool isAppl() { return IsApplTerm( gt() ); } + bool isPair() { return IsPairTerm( gt() ); } + bool isGround() { return Yap_IsGroundTerm( gt() ); } + bool isList() { return Yap_IsListTerm( gt() ); } + bool isString() { return IsStringTerm( gt() ); } + + inline YAPTerm getArg(int i) { + Term t0 = gt(); + if (IsApplTerm(t0)) + return YAPTerm(ArgOfTerm(i, t0)); + else if (IsPairTerm(t0)) { + if (i==1) + return YAPTerm(HeadOfTerm(t0)); + if (i==2) + return YAPTerm(TailOfTerm(t0)); + } + return YAPTerm((Term)0); + } + char *text(); }; /** * @brief Variable Term */ class YAPVarTerm: private YAPTerm { + YAPVarTerm(Term t) { if (IsVarTerm(t)) mk( t ); } public: - YAPVarTerm(): YAPTerm() { CACHE_REGS t = MkVarTerm(); } - CELL *getVar() { return VarOfTerm(t); } - bool unbound() { return IsUnboundVar(VarOfTerm(t)); } + YAPVarTerm() { CACHE_REGS mk( MkVarTerm( ) ); } + CELL *getVar() { return VarOfTerm( gt() ); } + bool unbound() { return IsUnboundVar(VarOfTerm( gt() )); } }; /** * @brief Compound Term */ class YAPApplTerm: private YAPTerm { + friend class YAPTerm; + YAPApplTerm(Term t0) { mk(t0); } public: + YAPApplTerm(YAPTerm t0) { mk(t0.term()); } YAPApplTerm(YAPFunctor f, YAPTerm ts[]); YAPApplTerm(YAPFunctor f); YAPFunctor getFunctor(); - YAPTerm getArg(unsigned int i); + YAPTerm getArg(int i); }; /** * @brief List Constructor Term */ class YAPPairTerm: private YAPTerm { + friend class YAPTerm; + YAPPairTerm(Term t0) { if (IsPairTerm(t0)) mk( t0 ); else mk(0); } public: YAPPairTerm(YAPTerm hd, YAPTerm tl); YAPPairTerm(); - YAPTerm getHead() { return YAPTerm(HeadOfTerm(t)); } - YAPTerm getTail() { return YAPTerm(TailOfTerm(t)); } + YAPTerm getHead() { return YAPTerm(HeadOfTerm( gt() )); } + YAPTerm getTail() { return YAPTerm(TailOfTerm( gt() )); } }; /** @@ -148,21 +179,39 @@ public: class YAPIntegerTerm: private YAPTerm { public: - YAPIntegerTerm(intptr_t i) { CACHE_REGS t = MkIntegerTerm( i ); } - intptr_t getInteger(YAPIntegerTerm t) { return IntegerOfTerm(t.t); } - bool isTagged(YAPIntegerTerm i) { return IsIntTerm( t ); } + YAPIntegerTerm(intptr_t i) { CACHE_REGS Term tn = MkIntegerTerm( i ); mk( tn ); } + intptr_t getInteger() { return IntegerOfTerm( gt() ); } + bool isTagged() { return IsIntTerm( gt() ); } }; -/* -class YAPListTerm: private YAPPairTerm { +class YAPListTerm: private YAPTerm { public: - YAPListTerm(YAPTerm ts[], size_t n); - YAPListTerm(Term ts[], size_t n); - YAPListTerm( vector v ); - size_t length() { Term *tailp; return Yap_SkipList(&t, &tailp); } - vector toVector(); + /// Create a list term out of a standard term. Check if a valid operation. + /// + /// @param[in] the term + YAPListTerm(Term t0) { mk(t0); /* else type_error */ } +/* /// Create a list term out of an array of terms. + /// + /// @param[in] the array of terms + /// @param[in] the length of the array + YAPListTerm(YAPTerm ts[], size_t n); + /// Create a list term out of an array of Prolog terms. + /// + /// @param[in] the array of terms + /// @param[in] the length of the array + YAPListTerm(Term ts[], size_t n); + */ +// YAPListTerm( vector v ); + /// Return the number of elements in a list term. + size_t length() { Term *tailp; Term t1 = gt(); return Yap_SkipList(&t1, &tailp); } +// vector toVector(); + /// Create an array of term out of a list. + /// + /// @param[in] the list + YAPTerm car() { if (IsPairTerm(gt())) return YAPTerm(HeadOfTerm(gt())); else return YAPTerm((term_t)0); } + YAPListTerm cdr() { if (IsPairTerm(gt())) return YAPListTerm(TailOfTerm(gt())); else return YAPListTerm((term_t)0); } + bool nil() { return gt() == TermNil; } }; - */ /** * @brief Atom @@ -190,7 +239,7 @@ public: YAPStringTerm(char *s, size_t len); YAPStringTerm(wchar_t *s) ; YAPStringTerm(wchar_t *s, size_t len); - const char *getString() { return StringOfTerm(t); } + const char *getString() { return StringOfTerm( gt() ); } }; /** @@ -198,13 +247,13 @@ public: */ class YAPAtomTerm: private YAPTerm { public: - YAPAtomTerm(YAPAtom a): YAPTerm() { t = MkAtomTerm(a.a); } - YAPAtomTerm(Atom a): YAPTerm() { t = MkAtomTerm(a); } + YAPAtomTerm(YAPAtom a): YAPTerm() { mk( MkAtomTerm(a.a) ); } + YAPAtomTerm(Atom a): YAPTerm() { mk( MkAtomTerm(a) ); } YAPAtomTerm(char *s) ; YAPAtomTerm(char *s, size_t len); YAPAtomTerm(wchar_t *s) ; YAPAtomTerm(wchar_t *s, size_t len); - YAPAtom getAtom() { return YAPAtom(AtomOfTerm(t)); } + YAPAtom getAtom() { return YAPAtom(AtomOfTerm( gt() )); } }; /** @@ -215,16 +264,16 @@ class YAPFunctor { friend class YAPPredicate; Functor f; public: - YAPFunctor( char * s, unsigned int arity) { f = Yap_MkFunctor( Yap_LookupAtom( s ), arity ); } - YAPFunctor( wchar_t * s, unsigned int arity) { f = Yap_MkFunctor( Yap_LookupWideAtom( s ), arity ); } - YAPFunctor( YAPAtom at, unsigned int arity) { f = Yap_MkFunctor( at.a, arity ); } + YAPFunctor( char * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupAtom( s ), arity ); } + YAPFunctor( wchar_t * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupWideAtom( s ), arity ); } + YAPFunctor( YAPAtom at, arity_t arity) { f = Yap_MkFunctor( at.a, arity ); } YAPFunctor( Functor ff) { f = ff; } Atom name(void) { return NameOfFunctor( f ); } - unsigned int arity(void) { + arity_t arity(void) { return ArityOfFunctor( f ); } }; @@ -239,15 +288,6 @@ public: CACHE_REGS handle = Yap_InitSlot(t PASS_REGS); } - ~YAPTermHandle(void) { - CACHE_REGS - Yap_RecoverSlots(1, handle PASS_REGS); - } - - YAPTerm get() { - CACHE_REGS - return new YAPTerm( Yap_GetFromSlot(handle PASS_REGS) ); - } void set(YAPTerm t) { CACHE_REGS @@ -262,42 +302,42 @@ class YAPPredicate { friend class YAPQuery; PredEntry *ap; // trick to communicate t[] back to yapquery - YAPPredicate(char *s, Term **th) { + YAPPredicate(const char *s, Term **outp, term_t& vnames ); + inline YAPPredicate(Term t) { CACHE_REGS - Term t, tp, m = CurrentModule ; - t = YAP_ReadBuffer(s,&tp); + Term m = CurrentModule ; t = Yap_StripModule(t, &m); if (IsVarTerm(t) || IsNumTerm(t)) ap = NULL; if (IsAtomTerm(t)) { ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); - *th = NULL; } else if (IsApplTerm(t)) { ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - *th = RepAppl(t)+1; + } else if (IsPairTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorCsult, PROLOG_MODULE)); } else { ap = NULL; } } -public: - YAPPredicate(PredEntry *pe) { + inline YAPPredicate(PredEntry *pe) { ap = pe; } - YAPPredicate(YAPFunctor f) { +public: + inline YAPPredicate(YAPFunctor f) { CACHE_REGS ap = RepPredProp(PredPropByFunc(f.f,CurrentModule)); } - YAPPredicate(YAPFunctor f, YAPTerm mod) { + inline YAPPredicate(YAPFunctor f, YAPTerm mod) { ap = RepPredProp(PredPropByFunc(f.f,mod.t)); } - YAPPredicate(YAPAtom at, YAPTerm mod) { + inline YAPPredicate(YAPAtom at, YAPTerm mod) { ap = RepPredProp(PredPropByAtom(at.a,mod.t)); } - YAPPredicate(YAPAtom at) { + inline YAPPredicate(YAPAtom at) { CACHE_REGS ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); } - YAPPredicate(YAPAtom at, unsigned int arity, YAPTerm mod) { + inline YAPPredicate(YAPAtom at, arity_t arity, YAPTerm mod) { if (arity) { Functor f = Yap_MkFunctor(at.a, arity); ap = RepPredProp(PredPropByFunc(f,mod.t)); @@ -305,7 +345,7 @@ public: ap = RepPredProp(PredPropByAtom(at.a,mod.t)); } } - YAPPredicate(YAPAtom at, unsigned int arity) { + inline YAPPredicate(YAPAtom at, arity_t arity) { CACHE_REGS if (arity) { Functor f = Yap_MkFunctor(at.a, arity); @@ -314,7 +354,7 @@ public: ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); } } - YAPPredicate(char *s) { + inline YAPPredicate(char *s) { CACHE_REGS Term t, tp, m = CurrentModule ; t = YAP_ReadBuffer(s,&tp); @@ -327,37 +367,102 @@ public: ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); } } + inline YAPPredicate(char *s, Term **outp) { + CACHE_REGS + Term t, tp, m = CurrentModule ; + t = YAP_ReadBuffer(s,&tp); + t = Yap_StripModule(t, &m); + if (IsVarTerm(t) || IsNumTerm(t)) + ap = NULL; + if (IsAtomTerm(t)) { + ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); + *outp = NULL; + } else if (IsApplTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); + *outp = RepAppl(t)+1; + } else if (IsPairTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); + *outp = RepPair(t); + } + } int call(YAPTerm ts[]); + arity_t arity() { return ap->ArityOfPE; } + /// module of predicate + /// + /// notice that modules are currently treated as atoms, this should change. + YAPAtom module() { if (ap->ModuleOfPred == PROLOG_MODULE) + return YAPAtom(AtomProlog); + else + return YAPAtom(AtomOfTerm(ap->ModuleOfPred)); } + /// name of predicate + /// + /// notice that we return the atom, not a string. + YAPAtom name() { if (ap->ArityOfPE) + return YAPAtom((Atom)ap->FunctorOfPred); + else + return YAPAtom(NameOfFunctor(ap->FunctorOfPred)); + } }; /** - * @brief Term Handle + * @brief Queries * * interface to a YAP Query; * uses an SWI-like status info internally. */ class YAPQuery: private YAPPredicate { - int q_open; - int q_state; - Term *q_g; - yamop *q_p, *q_cp; - jmp_buf q_env; - int q_flags; - YAP_dogoalinfo q_h; - YAPQuery *oq; - void initQuery( Term *t ); + int q_open; + int q_state; + Term *q_g; + yamop *q_p, *q_cp; + jmp_buf q_env; + int q_flags; + YAP_dogoalinfo q_h; + YAPQuery *oq; + term_t vnames; + void initQuery( Term ts[] ); + void initQuery( YAPTerm t[], arity_t arity ); public: - /// full constructor, is given a functor, module, and an array of terms that must hav at least - /// the same arity as the functor. - YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]); - YAPQuery(YAPFunctor f, YAPTerm t[]); - YAPQuery(YAPPredicate p, YAPTerm t[]); - YAPQuery(char *s); - // YAPQuery(YAPTerm t); - int next(); - void cut(); - void close(); -}; + /// main constructor, uses a predicate and an array of terms + /// + /// It is given a YAPPredicate _p_ , and an array of terms that must have at least + /// the same arity as the functor. + YAPQuery(YAPPredicate p, YAPTerm t[]); + /// full constructor, + /// + /// It is given a functor, module, and an array of terms that must have at least + /// the same arity as the functor. + YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]); + /// functor/term constructor, + /// + /// It is given a functor, and an array of terms that must have at least + /// the same arity as the functor. Works within the current module. + YAPQuery(YAPFunctor f, YAPTerm t[]); + /// string constructor with varnames + /// + /// It is given a string, calls the parser and obtains a Prolog term that should be a callable + /// goal and a list of variables. Useful for top-level simulation. Works within the current module. + inline YAPQuery(char *s): YAPPredicate(s, &this->q_g, vnames) + { + Term *ts = this->q_g; + + initQuery( ts ); + } + /// first query + /// + /// actually implemented by calling the next(); + inline int first() { return next(); } + /// ask for the next solution of the current query + /// same call for every solution + int next(); + /// remove alternatives in the current search space, and finish the current query + void cut(); + /// finish the current query: undo all bindings. + void close(); + /// query variables. + YAPListTerm namedVars() { CACHE_REGS Term o = Yap_GetFromSlot( vnames PASS_REGS ); return YAPListTerm( o ); } + }; + class YAPParams; @@ -368,6 +473,7 @@ class YAPParams; class YAPEngine { public: YAPEngine(YAPParams const& params); /// construct a new engine + YAPEngine(); /// construct a new engine, no arguments YAPQuery *query( char *s ) { return new YAPQuery( s ); } /// build a query on the engine }; diff --git a/H/Atoms.h b/H/Atoms.h index 152a365e5..4bda9a031 100644 --- a/H/Atoms.h +++ b/H/Atoms.h @@ -107,6 +107,7 @@ typedef struct PropEntryStruct #define MaxArity 255 +typedef CELL arity_t; #define FunctorProperty ((PropFlags)(0xbb00)) @@ -115,7 +116,7 @@ typedef struct FunctorEntryStruct { Prop NextOfPE; /* used to chain properties */ PropFlags KindOfPE; /* kind of property */ - unsigned int ArityOfFE; /* arity of functor */ + arity_t ArityOfFE; /* arity of functor */ Atom NameOfFE; /* back pointer to owner atom */ Prop PropsOfFE; /* pointer to list of properties for this functor */ #if defined(YAPOR) || defined(THREADS) diff --git a/H/Yap.h b/H/Yap.h index cbbfd5fcb..0aaf86196 100755 --- a/H/Yap.h +++ b/H/Yap.h @@ -445,6 +445,16 @@ extern ADDR Yap_HeapBase; #ifdef DEBUG extern int Yap_output_msg; #endif +#if __ANDROID__ +#include +#include +#include +#else +inline void __android_log_print(int i, char *loc, char *msg, ...) {} +#define ANDROID_LOG_INFO 0 +#define ANDROID_LOG_ERROR 0 +#define ANDROID_LOG_DEBUG 0 +#endif /************************************************************************************************* variables concerned with atoms table diff --git a/H/Yapproto.h b/H/Yapproto.h index 074560add..112a1c4f2 100755 --- a/H/Yapproto.h +++ b/H/Yapproto.h @@ -387,6 +387,7 @@ void Yap_WinError(char *); void Yap_InitThreadPreds(void); void Yap_InitFirstWorkerThreadHandle(void); int Yap_ThreadID( void ); +int Yap_NOfThreads( void ); #if THREADS int Yap_InitThread(int); #endif @@ -427,6 +428,7 @@ int Yap_IsAcyclicTerm(Term); void Yap_InitUtilCPreds(void); Int Yap_TermHash(Term, Int, Int, int); Int Yap_NumberVars(Term, Int, int); +Term Yap_TermVariables( Term t, UInt arity USES_REGS ); Term Yap_UnNumberTerm(Term, int); Int Yap_SkipList(Term *, Term **); /* yap.c */ diff --git a/H/pl-yap.h b/H/pl-yap.h index 8223905ed..ac15cd7af 100644 --- a/H/pl-yap.h +++ b/H/pl-yap.h @@ -251,4 +251,6 @@ atom_t ATOM_; intptr_t system_thread_id(PL_thread_info_t *info); #endif +extern Term Yap_StringToTerm(const char *s, size_t len, term_t bindings); + #endif /* PL_YAP_H */ diff --git a/H/yapio.h b/H/yapio.h index 8198a2d55..e2b11b553 100644 --- a/H/yapio.h +++ b/H/yapio.h @@ -266,7 +266,6 @@ int Yap_PlFGetchar(void); int Yap_GetCharForSIGINT(void); Int Yap_StreamToFileNo(Term); Term Yap_OpenStream(FILE *,char *,Term,int); -Term Yap_StringToTerm(char *,Term *); char *Yap_TermToString(Term t, char *s, size_t sz, size_t *length, int *encoding, int flags); int Yap_GetFreeStreamD(void); int Yap_GetFreeStreamDForReading(void); diff --git a/Makefile.in b/Makefile.in index 49ac681b0..b8b5a21b9 100755 --- a/Makefile.in +++ b/Makefile.in @@ -52,7 +52,7 @@ DOCSDIR=$(SHAREDIR)/doc/Yap # YAP_EXTRAS=@YAP_EXTRAS@ -YAPSTARTUP=startup.yss +YAPSTARTUP=@SAVED_STATE_PREFIX@startup.yss # # Please do not add YAP_EXTRA flags here: if you do check the flags @@ -108,6 +108,7 @@ VPATH=@srcdir@ CWD=$(PWD) # VERSION=@YAP_VERSION@ +Y=@YAP_MAJOR_VERSION@ DOC_VERSION=@DOC_VERSION@ MYDDAS_VERSION=@MYDDAS_VERSION@ # @@ -451,6 +452,9 @@ clause_list.o: C/clause_list.c include/clause_list.h config.h udi.o: C/udi.c config.h $(CC) -c $(C_INTERF_FLAGS) $< -o $@ +save.o: C/save.c + $(CC) -c $(C_INTERF_FLAGS) -DYAPSTARTUP=\"$(YAPSTARTUP)\" $< -o $@ + %.o: C/%.c config.h $(CC) -c $(CFLAGS) $< -o $@ @@ -590,27 +594,26 @@ libYap.a: $(LIB_OBJECTS) $(LN_S) -f @DYNYAPLIB@ $$p; \ done -@STARTUP_ANDROID@startup.yss: yap@EXEC_SUFFIX@ $(PL_SOURCES) $(SWI_LIB_SOURCES) +@STARTUP_ANDROID@startup.yss: yap@EXEC_SUFFIX@ @DYNYAPLIB@ $(PL_SOURCES) $(SWI_LIB_SOURCES) install_unix adb shell mkdir -p /data/yap adb shell mkdir -p /data/yap/pl adb shell mkdir -p /data/yap/swi/library adb push yap /data/yap/ - adb push libYap.so.? /data/yap/ + adb push @DYNYAPLIB@ /data/yap/ adb push $(srcdir)/swi/library /data/yap/swi/library adb push $(srcdir)/pl /data/yap/pl/ adb shell "echo \"bootstrap('/data/yap/pl/init.yap'). module(user). qsave_program('/data/yap/startup.yss').\" | LD_LIBRARY_PATH=/data/yap /data/yap/yap@EXEC_SUFFIX@ -b /data/yap/pl/boot.yap" - adb pull /data/yap/startup.yss . + adb pull /data/yap/startup.yss -install: @INSTALL_COMMAND@ install_common +install: @INSTALL_COMMAND@ install_startup install_common -install_unix: startup.yss @YAPLIB@ +install_unix: @YAPLIB@ yap@EXEC_SUFFIX@ mkdir -p $(DESTDIR)$(BINDIR) mkdir -p $(DESTDIR)$(YAPLIBDIR) mkdir -p $(DESTDIR)$(SHAREDIR) mkdir -p $(DESTDIR)$(SHAREDIR)/Yap mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/icons $(INSTALL_PROGRAM) -m 755 yap@EXEC_SUFFIX@ $(DESTDIR)$(BINDIR)/yap - $(INSTALL_DATA) startup.yss $(DESTDIR)$(YAPLIBDIR)/startup.yss $(INSTALL_DATA) -m 755 @YAPLIB@ $(DESTDIR)$(LIBDIR) install_startup: startup.yss @@ -626,10 +629,12 @@ install_win32: startup.yss @WINDOWS@ yap-win@EXEC_SUFFIX@ @WINDOWS@ $(INSTALL_PROGRAM) -m 755 yap-win.exe $(DESTDIR)$(BINDIR)/yap-win.exe @WINDOWS@ $(INSTALL_PROGRAM) -m 755 yap.exe $(DESTDIR)$(BINDIR)/yap.exe @WINDOWS@ for i in *.dll; do $(INSTALL_PROGRAM) -m 755 $$i $(DESTDIR)$(BINDIR)/; done - $(INSTALL_DATA) startup.yss $(DESTDIR)$(YAPLIBDIR)/startup.yss $(INSTALL_DATA) $(srcdir)/misc/icons/yap.ico $(DESTDIR)$(SHAREDIR)/Yap/icons/yap.ico -install_common: +install_common: install_startup + mkdir -p $(DESTDIR)$(YAPLIBDIR) + mkdir -p $(DESTDIR)$(SHAREDIR) + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap mkdir -p $(DESTDIR)$(SHAREDIR)/PrologCommons mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl mkdir -p $(DESTDIR)$(DOCSDIR) diff --git a/config.h.in b/config.h.in index aaa48af1d..4b1c2e9c2 100644 --- a/config.h.in +++ b/config.h.in @@ -324,6 +324,9 @@ /* Define to 1 if you have the `lgamma' function. */ #undef HAVE_LGAMMA +/* Define to 1 if you have the `android' library (-landroid). */ +#undef HAVE_LIBANDROID + /* Define to 1 if you have the `comdlg32' library (-lcomdlg32). */ #undef HAVE_LIBCOMDLG32 @@ -339,6 +342,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LIBLOADERAPI_H +/* Define to 1 if you have the `log' library (-llog). */ +#undef HAVE_LIBLOG + /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM diff --git a/configure b/configure index c78ed2bc4..9c7b50124 100755 --- a/configure +++ b/configure @@ -708,6 +708,7 @@ IN_SWI IN_YAP PROLOG_SYSTEM M4GENABSMI +SAVED_STATE_PREFIX INSTALL_PRISM PKG_REAL PKG_MINISAT @@ -760,8 +761,6 @@ M4 PRE_INSTALL_ENV INSTALL_ENV PKG_PRISM -EGREP -GREP INDENT INSTALL_INFO AR @@ -770,6 +769,8 @@ INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM LN_S +EGREP +GREP SED target_os target_vendor @@ -1782,6 +1783,125 @@ fi } # ac_fn_cxx_try_compile +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. @@ -1882,79 +2002,6 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_type -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using @@ -2715,8 +2762,6 @@ if test "${with_sysroot+set}" = set; then : CFLAGS="$CFLAGS --sysroot=$SYSROOT" CPPFLAGS="$CPPFLAGS --sysroot=$SYSROOT" LDFLAGS="$LDFLAGS --sysroot=$SYSROOT" -else - yap_cv_gmp=yes fi @@ -4807,6 +4852,275 @@ else STATIC_MODE="# " fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_decl "$LINENO" "__clang_major__" "ac_cv_have_decl___clang_major__" "$ac_includes_default" +if test "x$ac_cv_have_decl___clang_major__" = xyes; then : + CLANG=yes +else + CLANG=no +fi + + if test "$GCC" = "yes" then if test "$debugyap" = "yes" @@ -5375,8 +5689,7 @@ then if test $win_abi = 32; then LIBS="$LIBS $pthreadlib" else - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5 $as_echo_n "checking for main in -lpthread... " >&6; } if ${ac_cv_lib_pthread_main+:} false; then : $as_echo_n "(cached) " >&6 @@ -5963,6 +6276,92 @@ else INSTALL_COMMAND="install_unix" WINDOWS="#" PKG_WINCONSOLE="" + case "$host" in + *android*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -landroid" >&5 +$as_echo_n "checking for main in -landroid... " >&6; } +if ${ac_cv_lib_android_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-landroid $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_android_main=yes +else + ac_cv_lib_android_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_android_main" >&5 +$as_echo "$ac_cv_lib_android_main" >&6; } +if test "x$ac_cv_lib_android_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBANDROID 1 +_ACEOF + + LIBS="-landroid $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -llog" >&5 +$as_echo_n "checking for main in -llog... " >&6; } +if ${ac_cv_lib_log_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-llog $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_log_main=yes +else + ac_cv_lib_log_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_log_main" >&5 +$as_echo "$ac_cv_lib_log_main" >&6; } +if test "x$ac_cv_lib_log_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBLOG 1 +_ACEOF + + LIBS="-llog $LIBS" + +fi + + ;; + **) + STARTUP_ANDROID="x" + STARTUP_DEFAULT="" + ;; + esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 $as_echo_n "checking for sin in -lm... " >&6; } if ${ac_cv_lib_m_sin+:} false; then : @@ -6462,267 +6861,7 @@ See \`config.log' for more details" "$LINENO" 5; } fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -ac_fn_c_check_type "$LINENO" "rl_hook_func_t" "ac_cv_type_rl_hook_func_t" "$ac_includes_default" + ac_fn_c_check_type "$LINENO" "rl_hook_func_t" "ac_cv_type_rl_hook_func_t" "$ac_includes_default" if test "x$ac_cv_type_rl_hook_func_t" = xyes; then : cat >>confdefs.h <<_ACEOF @@ -7459,8 +7598,14 @@ fi fi if test "$ac_cv_c_compiler_gnu" = "yes" then - SHLIB_CFLAGS="-shared -fPIC $CFLAGS" - SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS" + if test "$CLANG" = "yes" + then + SHLIB_CFLAGS="-fPIC $CFLAGS" + SHLIB_CXXFLAGS="-fPIC $CXXFLAGS" + else + SHLIB_CFLAGS="-shared -fPIC $CFLAGS" + SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS" + fi INSTALL_DLLS="yes" fi CC="$CC -fstrict-aliasing -freorder-blocks -fsched-interblock -Wall" @@ -8651,7 +8796,7 @@ fi case "$host" in *android*) STARTUP_ANDROID="" - STARTUP_DEFAULT="x" + STARTUP_DEFAULT="x" ;; **) STARTUP_ANDROID="x" @@ -8711,6 +8856,8 @@ CMDEXT=sh + + @@ -9419,6 +9566,7 @@ done case "$host" in *android*) echo "no locale" + SAVED_STATE_PREFIX="/assets/lib/Yap/" ;; **) for ac_header in locale.h @@ -10813,8 +10961,8 @@ $as_echo "$as_me: WARNING: Cannot find getrlimit\"()\" -- dropping rlimit.pl" >& fi CLIB_PLTARGETS=`echo $CLIB_TARGETS | sed -e "s/\.$SO/.pl/g" -e "s/files.pl/filesex.pl/"` -if echo "$PL_CLIB_TARGETS" | grep socket.pl 2>&1 >/dev/null; then - CLIB_PLTARGETS="$PLCLIB_TARGETS streampool.pl" +if echo "$CLIB_PLTARGETS" | grep socket.pl 2>&1 >/dev/null; then + CLIB_PLTARGETS="$CLIB_PLTARGETS streampool.pl" fi @@ -12481,7 +12629,7 @@ else JAVA_TEST=Test.java CLASS_TEST=Test.class cat << \EOF > $JAVA_TEST -/* #line 12484 "configure" */ +/* #line 12632 "configure" */ public class Test { } EOF @@ -12657,7 +12805,7 @@ EOF if uudecode$EXEEXT Test.uue; then ac_cv_prog_uudecode_base64=yes else - echo "configure: 12660: uudecode had trouble decoding base 64 file 'Test.uue'" >&5 + echo "configure: 12808: uudecode had trouble decoding base 64 file 'Test.uue'" >&5 echo "configure: failed file was:" >&5 cat Test.uue >&5 ac_cv_prog_uudecode_base64=no @@ -12788,7 +12936,7 @@ else JAVA_TEST=Test.java CLASS_TEST=Test.class cat << \EOF > $JAVA_TEST -/* #line 12791 "configure" */ +/* #line 12939 "configure" */ public class Test { } EOF @@ -12823,7 +12971,7 @@ JAVA_TEST=Test.java CLASS_TEST=Test.class TEST=Test cat << \EOF > $JAVA_TEST -/* [#]line 12826 "configure" */ +/* [#]line 12974 "configure" */ public class Test { public static void main (String args[]) { System.exit (0); diff --git a/configure.in b/configure.in index 3dcca92ad..b80cb13ea 100755 --- a/configure.in +++ b/configure.in @@ -47,7 +47,7 @@ AC_ARG_WITH(sysroot, CFLAGS="$CFLAGS --sysroot=$SYSROOT" CPPFLAGS="$CPPFLAGS --sysroot=$SYSROOT" LDFLAGS="$LDFLAGS --sysroot=$SYSROOT" ], - [yap_cv_gmp=yes]) + []) AC_PROG_CC AC_PROG_CPP @@ -409,6 +409,8 @@ else STATIC_MODE="# " fi +AC_CHECK_DECL(__clang_major__, CLANG=yes, CLANG=no) + dnl Compilation Flags if test "$GCC" = "yes" then @@ -615,6 +617,16 @@ else INSTALL_COMMAND="install_unix" WINDOWS="#" PKG_WINCONSOLE="" + case "$host" in + *android*) + AC_CHECK_LIB(android,main) + AC_CHECK_LIB(log,main) + ;; + **) + STARTUP_ANDROID="x" + STARTUP_DEFAULT="" + ;; + esac AC_CHECK_LIB(m,sin) AC_CHECK_LIB(socket,socket) dnl X/Open Networking is sometimes a separate library @@ -860,7 +872,7 @@ fi fi if test "$have_nsl" = yes then - LIBS="$LIBS -lnsl" + LIBS="$LIBS -lnsl" fi if test "$dynamic_loading" = "yes" then @@ -1009,8 +1021,14 @@ dnl Linux has both elf and a.out, in this case we found elf fi if test "$ac_cv_prog_gcc" = "yes" then - SHLIB_CFLAGS="-shared -fPIC $CFLAGS" - SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS" + if test "$CLANG" = "yes" + then + SHLIB_CFLAGS="-fPIC $CFLAGS" + SHLIB_CXXFLAGS="-fPIC $CXXFLAGS" + else + SHLIB_CFLAGS="-shared -fPIC $CFLAGS" + SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS" + fi INSTALL_DLLS="yes" fi CC="$CC -fstrict-aliasing -freorder-blocks -fsched-interblock -Wall" @@ -1348,7 +1366,7 @@ AC_SUBST(ARCH) case "$host" in *android*) STARTUP_ANDROID="" - STARTUP_DEFAULT="x" + STARTUP_DEFAULT="x" ;; **) STARTUP_ANDROID="x" @@ -1424,6 +1442,8 @@ AC_SUBST(PKG_REAL) AC_SUBST(INSTALL_PRISM) +AC_SUBST(SAVED_STATE_PREFIX) + dnl check for threaded code AC_MSG_CHECKING(for gcc threaded code) AC_CACHE_VAL(yap_cv_threaded_code,[ @@ -1634,6 +1654,7 @@ AC_CHECK_FUNCS(time times tmpnam usleep utime vsnprintf wcsdup wcsnlen) case "$host" in *android*) echo "no locale" + SAVED_STATE_PREFIX="/assets/lib/Yap/" ;; **) AC_CHECK_HEADERS(locale.h) diff --git a/os/SWI-Stream.h b/os/SWI-Stream.h index c6bc44409..99ca0c81c 100755 --- a/os/SWI-Stream.h +++ b/os/SWI-Stream.h @@ -373,6 +373,9 @@ PL_EXPORT(int) StryLock(IOSTREAM *s); PL_EXPORT(int) Sunlock(IOSTREAM *s); PL_EXPORT(IOSTREAM *) Snew(void *handle, int flags, IOFUNCTIONS *functions); PL_EXPORT(IOSTREAM *) Sopen_file(const char *path, const char *how); +#if __ANDROID__ +PL_EXPORT(IOSTREAM *) Sopen_asset(char *bufp, const char *how); +#endif PL_EXPORT(IOSTREAM *) Sfdopen(int fd, const char *type); PL_EXPORT(int) Sfileno(IOSTREAM *s); PL_EXPORT(IOSTREAM *) Sopen_pipe(const char *command, const char *type); diff --git a/os/pl-file.c b/os/pl-file.c index 53f8578ed..9de753aff 100755 --- a/os/pl-file.c +++ b/os/pl-file.c @@ -3247,7 +3247,17 @@ openStream(term_t file, term_t mode, term_t options) } else #endif /*HAVE_POPEN*/ if ( PL_get_file_name(file, &path, 0) ) - { if ( !(s = Sopen_file(path, how)) ) + { +#if __ANDROID__ + if (strstr(path,"/assets/")) { + if (!(s=Sopen_asset(path+8, "r"))) + { PL_error(NULL, 0, OsError(), ERR_FILE_OPERATION, + ATOM_open, ATOM_source_sink, file); + return NULL; + } + } else +#endif + if ( !(s = Sopen_file(path, how)) ) { PL_error(NULL, 0, OsError(), ERR_FILE_OPERATION, ATOM_open, ATOM_source_sink, file); return NULL; diff --git a/os/pl-read.c b/os/pl-read.c index 46144b898..e7948b7d4 100644 --- a/os/pl-read.c +++ b/os/pl-read.c @@ -1413,64 +1413,89 @@ return FALSE; static int atom_to_term(term_t atom, term_t term, term_t bindings) { GET_LD - PL_chars_t txt; + PL_chars_t txt; if ( !bindings && PL_is_variable(atom) ) /* term_to_atom(+, -) */ -{ char buf[1024]; -size_t bufsize = sizeof(buf); -int rval; -char *s = buf; -IOSTREAM *stream; -PL_chars_t txt; + { char buf[1024]; + size_t bufsize = sizeof(buf); + int rval; + char *s = buf; + IOSTREAM *stream; + PL_chars_t txt; -stream = Sopenmem(&s, &bufsize, "w"); -stream->encoding = ENC_UTF8; -PL_write_term(stream, term, 1200, PL_WRT_QUOTED); -Sflush(stream); + stream = Sopenmem(&s, &bufsize, "w"); + stream->encoding = ENC_UTF8; + PL_write_term(stream, term, 1200, PL_WRT_QUOTED); + Sflush(stream); -txt.text.t = s; -txt.length = bufsize; -txt.storage = PL_CHARS_HEAP; -txt.encoding = ENC_UTF8; -txt.canonical = FALSE; -rval = PL_unify_text(atom, 0, &txt, PL_ATOM); + txt.text.t = s; + txt.length = bufsize; + txt.storage = PL_CHARS_HEAP; + txt.encoding = ENC_UTF8; + txt.canonical = FALSE; + rval = PL_unify_text(atom, 0, &txt, PL_ATOM); -Sclose(stream); -if ( s != buf ) - Sfree(s); + Sclose(stream); + if ( s != buf ) + Sfree(s); -return rval; -} + return rval; + } if ( PL_get_text(atom, &txt, CVT_ALL|CVT_EXCEPTION) ) -{ GET_LD - read_data rd; -int rval; -IOSTREAM *stream; -source_location oldsrc = LD->read_source; + { GET_LD + read_data rd; + int rval; + IOSTREAM *stream; + source_location oldsrc = LD->read_source; -stream = Sopen_text(&txt, "r"); + stream = Sopen_text(&txt, "r"); + + init_read_data(&rd, stream PASS_LD); + if ( bindings && (PL_is_variable(bindings) || PL_is_list(bindings)) ) + rd.varnames = bindings; + else if ( bindings ) + return PL_error(NULL, 0, NULL, ERR_TYPE, ATOM_list, bindings); + + if ( !(rval = read_term(term, &rd PASS_LD)) && rd.has_exception ) + rval = PL_raise_exception(rd.exception); + free_read_data(&rd); + Sclose(stream); + LD->read_source = oldsrc; + + // getchar(); + return rval; + } + +fail; +} + +Term +Yap_StringToTerm(const char *s, size_t len, term_t bindings) +{ GET_LD; + read_data rd; + int rval; + IOSTREAM *stream; + source_location oldsrc = LD->read_source; + + stream = Sopen_string(0, (char *)s, strlen( s ), "r"); init_read_data(&rd, stream PASS_LD); -if ( bindings && (PL_is_variable(bindings) || PL_is_list(bindings)) ) - rd.varnames = bindings; -else if ( bindings ) - return PL_error(NULL, 0, NULL, ERR_TYPE, ATOM_list, bindings); +rd.varnames = bindings; +term_t tt = Yap_NewSlots(1 PASS_REGS); -if ( !(rval = read_term(term, &rd PASS_LD)) && rd.has_exception ) - rval = PL_raise_exception(rd.exception); +if ( !(rval = read_term(tt, &rd PASS_LD)) && rd.has_exception ) { + rval = PL_raise_exception(rd.exception); + return 0L; +} free_read_data(&rd); Sclose(stream); LD->read_source = oldsrc; // getchar(); -return rval; +return Yap_GetFromSlot( tt PASS_REGS); } -fail; -} - - static PRED_IMPL("atom_to_term", 3, atom_to_term, 0) { return atom_to_term(A1, A2, A3); diff --git a/os/pl-stream.c b/os/pl-stream.c index 7bb43a842..971e1e28f 100755 --- a/os/pl-stream.c +++ b/os/pl-stream.c @@ -37,6 +37,16 @@ #else #include #endif +#if __ANDROID__ +#include +#include +#include +#else +inline void __android_log_print(int i, char *loc, char *msg, ...) {} +#define ANDROID_LOG_INFO 0 +#define ANDROID_LOG_ERROR 0 +#define ANDROID_LOG_DEBUG 0 +#endif /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This modules defines the SWI-Prolog I/O streams. These streams are @@ -545,7 +555,7 @@ S__fillbuf(IOSTREAM *s) if ( s->flags & SIO_NBUF ) { char chr; ssize_t n; - + __android_log_print(ANDROID_LOG_ERROR, "pl-stream.c", "calling read %p", s); n = (*s->functions->read)(s->handle, &chr, 1); if ( n == 1 ) { c = char_to_int(chr); @@ -578,7 +588,8 @@ S__fillbuf(IOSTREAM *s) len = s->bufsize; } - n = (*s->functions->read)(s->handle, s->limitp, len); + __android_log_print(ANDROID_LOG_ERROR, "save.c", "saved state %p %u", s, len); + n = (*s->functions->read)(s->handle, s->limitp, len); if ( n > 0 ) { s->limitp += n; c = char_to_int(*s->bufp++); @@ -738,7 +749,7 @@ unget_byte(int c, IOSTREAM *s) *--s->bufp = c; if ( p ) - { p->charno--; /* FIXME: not correct */ + { p->charno--; /* sz */ p->byteno--; if ( c == '\n' ) p->lineno--; @@ -2875,7 +2886,14 @@ Sopen_file(const char *path, const char *how) enum {lnone=0,lread,lwrite} lock = lnone; IOSTREAM *s; IOENC enc = ENC_UNKNOWN; - int wait = TRUE; + +#if __ANDROID__ + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "looking at asset %s", path); + if (strstr(path, "/assets/") == path) { + char * p = (char *)path + strlen("/assets/"); + return Sopen_asset( p, how-1); + } +#endif for( ; *how; how++) { switch(*how) @@ -2887,7 +2905,7 @@ Sopen_file(const char *path, const char *how) flags &= ~SIO_RECORDPOS; break; case 'L': /* lock r: read, w: write */ - wait = FALSE; +// wait = FALSE; /*FALLTHROUGH*/ case 'l': /* lock r: read, w: write */ if ( *++how == 'r' ) @@ -3181,6 +3199,196 @@ Sopen_pipe(const char *command, const char *type) #endif /*HAVE_POPEN*/ + +#if __ANDROID__ + + /******************************* + * ASSET FILES * + *******************************/ + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Asset files provide a mechanism for accesing file resources stored in +an Android application pack. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +static ssize_t +Swrite_asset(void *handle, char *buf, size_t size) +{ + return -1L; +} + + +static ssize_t +Sread_asset(void *handle, char *buf, size_t size) +{ + __android_log_print(ANDROID_LOG_ERROR, "os-stream.c", " size %d", size); + int res = AAsset_read((AAsset* )handle, (void* )buf, size); + __android_log_print(ANDROID_LOG_ERROR, "os-stream.c", "loaded %d", res); + if (res < 0) { + errno = ENOSPC; /* signal error */ + } + return res; +} + + +static long +Sseek_asset(void *handle, long offset, int whence) +{ int res = AAsset_seek((AAsset* )handle, (off_t)offset, whence); + if (res == (off_t)-1) { + errno = ENOSPC; /* signal error */ + } + return res; +} + +static int64_t +Sseek64_asset(void *handle, int64_t offset, int whence) +{ off64_t res = AAsset_seek64((AAsset* )handle, (off64_t)offset, whence); + if (res == (off64_t)-1) { + errno = ENOSPC; /* signal error */ + } + return res; +} + +static int +Scontrol_asset(void *handle, int action, void *arg) +{ AAsset* h = (AAsset* ) handle; + off_t *rval = (off_t *)arg; + + switch(action) + { + case SIO_GETSIZE: + *rval = AAsset_getLength(h); + return 0; + case SIO_GETFILENO: + { off_t start = 0, end = AAsset_getLength(h); + int fd = AAsset_openFileDescriptor((AAsset*)handle, &start, &end); + if (fd == 0) + return -1; + *rval = fd; + return 0; + } + case SIO_SETENCODING: + case SIO_FLUSHOUTPUT: + return 0; + default: + return -1; + } +} + + +static int +Sclose_asset(void *handle) +{ + AAsset_close((AAsset* )handle); + + return 0; +} + + + +IOFUNCTIONS Sassetfunctions = +{ Sread_asset, + Swrite_asset, + Sseek_asset, + Sclose_asset, + Scontrol_asset, + Sseek64_asset +}; + +#include +#include + +AAssetManager *assetManager; +JNIEnv *env; + +void Java_org_swig_simple_SwigSimple_load(JNIEnv *env0, jobject obj, jobject mgr); + +void Java_org_swig_simple_SwigSimple_load + (JNIEnv *env0, jobject obj, jobject mgr) +{ + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "loading asset manager %p", mgr); + assetManager = AAssetManager_fromJava(env0, mgr); + env = env0; + if (assetManager == NULL) { + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "error loading asset manager"); + } else { + __android_log_print(ANDROID_LOG_VERBOSE, "os-stream.c", "loaded asset manager"); + } + +} + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Sopen_asset(char **buffer, size_t *sizep, const char* mode) + Open an Android asset, essentially a read-only part of a ZIP archive. +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +IOSTREAM * +Sopen_asset(char *bufp, const char *how) +{ + AAsset* asset; + int flags = SIO_FILE|SIO_TEXT|SIO_RECORDPOS|SIO_FBUF; + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "looking at %s/%s", bufp, how);\ + int op = *how++; + IOSTREAM *s; + IOENC enc = ENC_UNKNOWN; + AAssetManager* mgr = assetManager; + + for( ; *how; how++) + { switch(*how) + { case 'b': /* binary */ + flags &= ~SIO_TEXT; + enc = ENC_OCTET; + break; + case 'r': /* no record */ + flags &= ~SIO_RECORDPOS; + break; + case 'L': /* lock r: read, w: write */ + case 'l': /* lock r: read, w: write */ + // read-only, nothing changes. + break; + default: + errno = EINVAL; + return NULL; + } + } + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "looking at %s/%c", bufp, op);\ + +#if O_LARGEFILES && defined(O_LARGEFILE) + oflags |= O_LARGEFILE; +#endif + + switch(op) + { case 'w': + return NULL; + case 'a': + return NULL; + case 'u': + return NULL; + case 'r': + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "loading asset %s", bufp);\ + //const char *utf8 = (*env)->GetStringUTFChars(env, bufp, NULL); + asset = AAssetManager_open(mgr, bufp, AASSET_MODE_UNKNOWN); + flags |= SIO_INPUT; + break; + default: + errno = EINVAL; + return NULL; + } + __android_log_print(ANDROID_LOG_INFO, "os-stream.c", "got asset %p", asset);\ + + if ( !asset ) + return NULL; + + + s = Snew((void *)asset, flags, &Sassetfunctions); + if ( enc != ENC_UNKNOWN ) + s->encoding = enc; + + return s; +} + +#endif /* __ANDROID__ */ + /******************************* * MEMORY STREAMS * *******************************/ diff --git a/packages/clib b/packages/clib index dec22cfcd..0a9fc69fe 160000 --- a/packages/clib +++ b/packages/clib @@ -1 +1 @@ -Subproject commit dec22cfcd9b99ffe18bb6716dcaa0761dbc29bce +Subproject commit 0a9fc69fecfb78fb07b4f0a624964ae33d4e7632 diff --git a/packages/odbc b/packages/odbc index 90510fe60..688bf6c3b 160000 --- a/packages/odbc +++ b/packages/odbc @@ -1 +1 @@ -Subproject commit 90510fe601057a9122b6abeb17b716fa16a7c1aa +Subproject commit 688bf6c3b2bc472ce8cb2fce58657cc38a496f07 diff --git a/packages/prism/src/c/core/glue.c b/packages/prism/src/c/core/glue.c index 4ad02a9df..6063b7983 100644 --- a/packages/prism/src/c/core/glue.c +++ b/packages/prism/src/c/core/glue.c @@ -18,6 +18,9 @@ SYM_REC_PTR insert_cpred(const char *, int, int(*)(void)); void exit(int); #ifdef __YAP_PROLOG__ +typedef int (*CPredicate)(void); +void +YAP_UserCPredicate(const char *name, CPredicate def, uintptr_t arity); SYM_REC_PTR insert_cpred(const char *s, int n, int(*f)(void)) { diff --git a/packages/python/Makefile.in b/packages/python/Makefile.in index f1199e3d9..70be01a65 100644 --- a/packages/python/Makefile.in +++ b/packages/python/Makefile.in @@ -27,7 +27,7 @@ install-dummy:: install-pitf: $(SOLIBS) $(addprefix $(srcdir)/, $(LIBPL)) install-examples mkdir -p $(DESTDIR)$(SOLIBDIR) rm -f $(DESTDIR)$(SOLIBDIR)/python.@SO@ - $(INSTALL_PROGRAM) $(SOLIBS) $(SOLIBDIR) + $(INSTALL_PROGRAM) $(SOLIBS) $(DESTDIR)$(SOLIBDIR) mkdir -p $(DESTDIR)$(PLLIBDIR) for f in $(LIBPL); do \ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(PLLIBDIR); \ diff --git a/packages/swig/Makefile.in b/packages/swig/Makefile.in index b2c1cc087..bae291b14 100644 --- a/packages/swig/Makefile.in +++ b/packages/swig/Makefile.in @@ -11,7 +11,7 @@ srcdir=@srcdir@ CPPFLAGS=@CPPFLAGS@ -I../.. -I$(srcdir)/../../H -I$(srcdir)/../../include -I$(srcdir)/../../os -I$(srcdir)/../../OPTYap -I$(srcdir)/../../BEAM -I$(srcdir)/../../CXX CXXFLAGS= @SHLIB_CXXFLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS) -PROGRAMS= \ +PROGRAMS= $(srcdir)/python/demo.py \ SWIG_FILES= \ $(srcdir)/yap.i @@ -19,11 +19,13 @@ SWIG_FILES= \ all: python java R python: $(SWIG_FILES) python/_yap.so python/yap.py + cp $(srcdir)/python/demo.py python python/_yap.so: python/yap_wrap.o $(CXX) -shared $(LDSOFLAGS) -o python/_yap.so python/yap_wrap.o ../../yapi.o $(LIBS) @PYTHON_LIBS@ -L ../.. -lYap -lpthread python/yap_wrap.c: $(srcdir)/yap.i + mkdir -p python $(SWIG) -c++ -python -outdir python -o $@ $(DEFS) $(CPPFLAGS) -Wall $< python/yap_wrap.o: python/yap_wrap.c @@ -41,14 +43,24 @@ jni/yap_wrap.cpp: $(srcdir)/yap.i jni/yap_wrap.o: jni/yap_wrap.cpp $(CXX) -c $(CXXFLAGS) @JPLCFLAGS@ $< -o $@ -android: android/jni/yap_wrap.cpp +# depends on make install on top-level +# also, should have an android device running, say +# emulator -avd first & +# +# adb uninstall org.swig.simple ( if not the first time ) +# adb install bin/SwigSimple-debug.apk +# +# +android: android/jni/yap_wrap.cpp android/jni/yap_wrap.cpp: $(srcdir)/yap.i android create project --target 1 --name SwigSimple --path ./android --activity SwigSimple --package org.swig.simple - ( cd android ; mkdir -p jni;\ + ( cd android ; mkdir -p jni; mkdir -p assets/share/Yap; mkdir -p assets/lib/Yap;\ $(SWIG) -c++ -java -I$(srcdir)/../../CXX -package org.swig.simple -outdir src/org/swig/simple -o jni/yap_wrap.cpp $< ;\ cp $(srcdir)/android/SwigSimple.java src/org/swig/simple/ ;\ cp $(srcdir)/android/main.xml res/layout ;\ + cp -r $(DESTDIR)$(PLLIBDIR)/* assets/share/Yap;\ + cp -r $(DESTDIR)$(SOLIBDIR)/* assets/lib/Yap;\ cp ../Android.mk jni ;\ ndk-build; \ ant debug \ From 2455a1d83cc3902d271d37173b78473ebf051774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 11 Jun 2014 19:26:50 +0100 Subject: [PATCH 07/13] Android /assets support --- pl/absf.yap | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pl/absf.yap b/pl/absf.yap index fe6e1ed9a..0628d141f 100755 --- a/pl/absf.yap +++ b/pl/absf.yap @@ -316,6 +316,14 @@ absolute_file_name(File0,File) :- '$check_file'(F0, Type, Access, F). '$check_file'(F, _Type, none, F) :- !. +'$check_file'(F0, _Type, _Access, F0) :- + format('IN ~w~n', [F0]), + yap_flag( c_cc, Flag), + sub_atom( Flag, _, _, _, android), + sub_atom( F0, 0, _, _, '/assets'), + catch( open( F0, Access, S ), _, fail ), + format('~w~n', [F0]), + !. '$check_file'(F0, Type, Access, F0) :- access_file(F0, Access), (Type == directory -> From 024115159908d2f4a7d031d55197e25046603375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 11 Jun 2014 19:27:54 +0100 Subject: [PATCH 08/13] support for init, callbacks --- CXX/yapi.cpp | 745 +++++++++++++++++++++++++++++++-------------------- CXX/yapi.hh | 727 ++++++++++++++++++++++++------------------------- 2 files changed, 815 insertions(+), 657 deletions(-) diff --git a/CXX/yapi.cpp b/CXX/yapi.cpp index fe03373ca..cbe92ed57 100644 --- a/CXX/yapi.cpp +++ b/CXX/yapi.cpp @@ -2,290 +2,299 @@ #define YAP_CPP_INTERFACE 1 #include "yapi.hh" - +#include "SWI-Stream.h" YAPAtomTerm::YAPAtomTerm(char *s) { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.c = s; - inp.type = YAP_STRING_CHARS; - out.type = YAP_STRING_ATOM; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( MkAtomTerm(out.val.a) ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.c = s; + inp.type = YAP_STRING_CHARS; + out.type = YAP_STRING_ATOM; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( MkAtomTerm(out.val.a) ); + else t = 0L; + RECOVER_H(); } YAPAtomTerm::YAPAtomTerm(char *s, size_t len) { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.c = s; - inp.type = YAP_STRING_CHARS; - out.type = YAP_STRING_ATOM|YAP_STRING_NCHARS|YAP_STRING_TRUNC; - out.sz = len; - out.max = len; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( MkAtomTerm(out.val.a) ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.c = s; + inp.type = YAP_STRING_CHARS; + out.type = YAP_STRING_ATOM|YAP_STRING_NCHARS|YAP_STRING_TRUNC; + out.sz = len; + out.max = len; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( MkAtomTerm(out.val.a) ); + else t = 0L; + RECOVER_H(); } YAPAtomTerm::YAPAtomTerm(wchar_t *s): YAPTerm() { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.w = s; - inp.type = YAP_STRING_WCHARS; - out.type = YAP_STRING_ATOM; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( MkAtomTerm(out.val.a) ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.w = s; + inp.type = YAP_STRING_WCHARS; + out.type = YAP_STRING_ATOM; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( MkAtomTerm(out.val.a) ); + else t = 0L; + RECOVER_H(); } YAPAtomTerm::YAPAtomTerm(wchar_t *s, size_t len) : YAPTerm() { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.w = s; - inp.type = YAP_STRING_WCHARS; - out.type = YAP_STRING_ATOM|YAP_STRING_NCHARS|YAP_STRING_TRUNC; - out.sz = len; - out.max = len; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( MkAtomTerm(out.val.a) ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.w = s; + inp.type = YAP_STRING_WCHARS; + out.type = YAP_STRING_ATOM|YAP_STRING_NCHARS|YAP_STRING_TRUNC; + out.sz = len; + out.max = len; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( MkAtomTerm(out.val.a) ); + else t = 0L; + RECOVER_H(); } YAPStringTerm::YAPStringTerm(char *s) { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.c = s; - inp.type = YAP_STRING_CHARS; - out.type = YAP_STRING_STRING; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( out.val.t ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.c = s; + inp.type = YAP_STRING_CHARS; + out.type = YAP_STRING_STRING; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( out.val.t ); + else t = 0L; + RECOVER_H(); } YAPStringTerm::YAPStringTerm(char *s, size_t len) { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.c = s; - inp.type = YAP_STRING_CHARS; - out.type = YAP_STRING_STRING|YAP_STRING_NCHARS|YAP_STRING_TRUNC; - out.sz = len; - out.max = len; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( out.val.t ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.c = s; + inp.type = YAP_STRING_CHARS; + out.type = YAP_STRING_STRING|YAP_STRING_NCHARS|YAP_STRING_TRUNC; + out.sz = len; + out.max = len; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( out.val.t ); + else t = 0L; + RECOVER_H(); } YAPStringTerm::YAPStringTerm(wchar_t *s): YAPTerm() { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.w = s; - inp.type = YAP_STRING_WCHARS; - out.type = YAP_STRING_STRING; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( out.val.t ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.w = s; + inp.type = YAP_STRING_WCHARS; + out.type = YAP_STRING_STRING; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( out.val.t ); + else t = 0L; + RECOVER_H(); } YAPStringTerm::YAPStringTerm(wchar_t *s, size_t len) : YAPTerm() { // build string - BACKUP_H(); + BACKUP_H(); - CACHE_REGS - seq_tv_t inp, out; - inp.val.w = s; - inp.type = YAP_STRING_WCHARS; - out.type = YAP_STRING_STRING|YAP_STRING_NCHARS|YAP_STRING_TRUNC; - out.sz = len; - out.max = len; - if (Yap_CVT_Text(&inp, &out PASS_REGS)) - mk ( out.val.t ); - else t = 0L; - RECOVER_H(); + CACHE_REGS + seq_tv_t inp, out; + inp.val.w = s; + inp.type = YAP_STRING_WCHARS; + out.type = YAP_STRING_STRING|YAP_STRING_NCHARS|YAP_STRING_TRUNC; + out.sz = len; + out.max = len; + if (Yap_CVT_Text(&inp, &out PASS_REGS)) + mk ( out.val.t ); + else t = 0L; + RECOVER_H(); } YAPApplTerm::YAPApplTerm(YAPFunctor f, YAPTerm ts[]) : YAPTerm() { - UInt arity = ArityOfFunctor(f.f); - mk ( Yap_MkApplTerm( f.f, arity, (Term *)ts) ); + UInt arity = ArityOfFunctor(f.f); + mk ( Yap_MkApplTerm( f.f, arity, (Term *)ts) ); } YAPApplTerm::YAPApplTerm(YAPFunctor f) : YAPTerm() { - UInt arity = ArityOfFunctor(f.f); - mk ( Yap_MkNewApplTerm( f.f, arity) ); + UInt arity = ArityOfFunctor(f.f); + mk ( Yap_MkNewApplTerm( f.f, arity) ); } YAPTerm YAPApplTerm::getArg(int arg) { - return YAPTerm( ArgOfTerm(arg, gt() ) ); + return YAPTerm( ArgOfTerm(arg, gt() ) ); } YAPFunctor YAPApplTerm::getFunctor() { - return YAPFunctor( FunctorOfTerm( gt( )) ); + return YAPFunctor( FunctorOfTerm( gt( )) ); } YAPPairTerm::YAPPairTerm(YAPTerm th, YAPTerm tl) : YAPTerm() { - CACHE_REGS - mk ( MkPairTerm( th.term(), tl.term() ) ); + CACHE_REGS + mk ( MkPairTerm( th.term(), tl.term() ) ); } YAPPairTerm::YAPPairTerm() : YAPTerm() { - t = Yap_MkNewPairTerm( ); + t = Yap_MkNewPairTerm( ); } +void YAPTerm::mk(Term t0) { CACHE_REGS t = Yap_InitSlot( t0 PASS_REGS); } + +Term YAPTerm::gt() { CACHE_REGS return Yap_GetFromSlot( t PASS_REGS); } + YAP_tag_t YAPTerm::tag() { Term tt = gt( ); - if (IsVarTerm(tt)) { - CELL *pt = VarOfTerm(tt); - if (IsUnboundVar(pt)) { - CACHE_REGS - if (IsAttVar(pt)) - return YAP_TAG_ATT; - return YAP_TAG_UNBOUND; - } - return YAP_TAG_REF; - } - if (IsPairTerm(tt)) - return YAP_TAG_PAIR; - if (IsAtomOrIntTerm(tt)) { - if (IsAtomTerm(tt)) - return YAP_TAG_ATOM; - return YAP_TAG_INT; - } else { - Functor f = FunctorOfTerm(tt); + if (IsVarTerm(tt)) { + CELL *pt = VarOfTerm(tt); + if (IsUnboundVar(pt)) { + CACHE_REGS + if (IsAttVar(pt)) + return YAP_TAG_ATT; + return YAP_TAG_UNBOUND; + } + return YAP_TAG_REF; + } + if (IsPairTerm(tt)) + return YAP_TAG_PAIR; + if (IsAtomOrIntTerm(tt)) { + if (IsAtomTerm(tt)) + return YAP_TAG_ATOM; + return YAP_TAG_INT; + } else { + Functor f = FunctorOfTerm(tt); - if (IsExtensionFunctor(f)) { - if (f == FunctorDBRef) { - return YAP_TAG_DBREF; - } - if (f == FunctorLongInt) { - return YAP_TAG_LONG_INT; - } - if (f == FunctorBigInt) { - big_blob_type bt = (big_blob_type)RepAppl(tt)[1]; - switch (bt) { - case BIG_INT: - return YAP_TAG_BIG_INT; - case BIG_RATIONAL: - return YAP_TAG_RATIONAL; - default: - return YAP_TAG_OPAQUE; - } - } - } - return YAP_TAG_APPL; - } + if (IsExtensionFunctor(f)) { + if (f == FunctorDBRef) { + return YAP_TAG_DBREF; + } + if (f == FunctorLongInt) { + return YAP_TAG_LONG_INT; + } + if (f == FunctorBigInt) { + big_blob_type bt = (big_blob_type)RepAppl(tt)[1]; + switch (bt) { + case BIG_INT: + return YAP_TAG_BIG_INT; + case BIG_RATIONAL: + return YAP_TAG_RATIONAL; + default: + return YAP_TAG_OPAQUE; + } + } + } + return YAP_TAG_APPL; + } } YAPTerm YAPTerm::deepCopy() { - Term tn; - BACKUP_MACHINE_REGS(); + Term tn; + BACKUP_MACHINE_REGS(); - tn = Yap_CopyTerm( gt() ); + tn = Yap_CopyTerm( gt() ); - RECOVER_MACHINE_REGS(); - return new YAPTerm( tn ); + RECOVER_MACHINE_REGS(); + return new YAPTerm( tn ); } bool YAPTerm::exactlyEqual(YAPTerm t1) { - int out; - BACKUP_MACHINE_REGS(); + int out; + BACKUP_MACHINE_REGS(); - out = Yap_eq(gt(), t1.term()); + out = Yap_eq(gt(), t1.term()); - RECOVER_MACHINE_REGS(); - return out; + RECOVER_MACHINE_REGS(); + return out; } bool YAPTerm::unify(YAPTerm t1) { - int out; - BACKUP_MACHINE_REGS(); + int out; + BACKUP_MACHINE_REGS(); - out = Yap_unify(gt(), t1.term()); + out = Yap_unify(gt(), t1.term()); - RECOVER_MACHINE_REGS(); - return out; + RECOVER_MACHINE_REGS(); + return out; } bool YAPTerm::unifiable(YAPTerm t1) { - int out; - BACKUP_MACHINE_REGS(); + int out; + BACKUP_MACHINE_REGS(); - out = Yap_Unifiable(gt(), t1.term()); + out = Yap_Unifiable(gt(), t1.term()); - RECOVER_MACHINE_REGS(); - return out; + RECOVER_MACHINE_REGS(); + return out; } bool YAPTerm::variant(YAPTerm t1) { - int out; - BACKUP_MACHINE_REGS(); + int out; + BACKUP_MACHINE_REGS(); - out = Yap_Variant(gt(), t1.term()); + out = Yap_Variant(gt(), t1.term()); - RECOVER_MACHINE_REGS(); - return out; + RECOVER_MACHINE_REGS(); + return out; } intptr_t YAPTerm::hash(size_t sz, size_t depth, bool variant) { intptr_t out; - BACKUP_MACHINE_REGS(); + BACKUP_MACHINE_REGS(); - out = Yap_TermHash(gt(), sz, depth, variant) ; + out = Yap_TermHash(gt(), sz, depth, variant) ; - RECOVER_MACHINE_REGS(); - return out; + RECOVER_MACHINE_REGS(); + return out; } char *YAPTerm::text(void) { - size_t sze = 4096, sz, length; - char *buf = new char[sze], *b; + size_t sze = 4096, length; + char *os; int enc; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I LCL0+%p/t=(%d) %x", LCL0, t, LCL0[-15]) ; } BACKUP_MACHINE_REGS(); - if ((b = Yap_TermToString(gt(), buf, sze, &length, &enc, 0)) != buf) { - if (b) free(b); + if (!(os = Yap_HandleToString(t, sze, &length, &enc, 0))) { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "IIa LCL0+t=(%p) %x", LCL0, LCL0[-15]) ; } RECOVER_MACHINE_REGS(); return NULL; } - sz = length+1; - char *os = new char[sz]; - if (!os) { - RECOVER_MACHINE_REGS(); - return NULL; - } - memcpy(os, buf, sz); - delete buf; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "II LCL0+t=(%p) %x", LCL0, LCL0[-15]) ; } RECOVER_MACHINE_REGS(); return os; } +bool YAPListTerm::nil() { + CACHE_REGS + __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "t=%d LCL0+t=(%p)", t, LCL0+t) ; + return gt() == TermNil; +} + + +YAPIntegerTerm::YAPIntegerTerm(intptr_t i) { CACHE_REGS Term tn = MkIntegerTerm( i ); mk( tn ); } + + + /* YAPTerm *YAPTerm::vars() { @@ -295,185 +304,327 @@ YAPTerm *YAPTerm::vars() RECOVER_MACHINE_REGS(); return lv; } -*/ + */ + +YAPTerm::YAPTerm(void *ptr) { CACHE_REGS mk( MkIntegerTerm( (Int)ptr ) );} + +YAPTerm::YAPTerm(intptr_t i) { CACHE_REGS Term tn = MkIntegerTerm( i ); mk( tn ); } + +YAPTerm YAPListTerm::car() +{ + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "t=%d LCL0+t=(%p)", t, LCL0+t) ; } + Term to = gt(); + if (IsPairTerm(to)) + return YAPTerm(HeadOfTerm(to)); + else + return MkIntTerm(-1); +} + +YAPVarTerm::YAPVarTerm() { CACHE_REGS mk( MkVarTerm( ) ); } char *YAPAtom::name(void) { - if (IsWideAtom(a)) { - // return an UTF-8 version - size_t sz = 512; - wchar_t * ptr = a->WStrOfAE; - int ch = -1; - char *s = new char[sz], *op = s; - while (ch) { - ch = *ptr++; - utf8_put_char( op, ch ); - } - sz = strlen(s)+1; - char *os = new char[sz]; - memcpy(os, s, sz); - delete s; - return os; - } else if (IsBlob(a)) { - PL_blob_t *type = RepBlobProp(a->PropsOfAE)->blob_t; - size_t sz = 512; + if (IsWideAtom(a)) { + // return an UTF-8 version + size_t sz = 512; + wchar_t * ptr = a->WStrOfAE; + int ch = -1; + char *s = new char[sz], *op = s; + while (ch) { + ch = *ptr++; + utf8_put_char( op, ch ); + } + sz = strlen(s)+1; + char *os = new char[sz]; + memcpy(os, s, sz); + delete s; + return os; + } else if (IsBlob(a)) { + PL_blob_t *type = RepBlobProp(a->PropsOfAE)->blob_t; + size_t sz = 512; - if (type->write) { - char *s = new char[sz]; - IOSTREAM *stream = Sopenmem(&s, &sz, "w"); - stream->encoding = ENC_UTF8; - atom_t at = YAP_SWIAtomFromAtom(AbsAtom(a)); - type->write(stream, at, 0); - Sclose(stream); - popOutputContext(); - sz = strlen(s)+1; - char *os = new char[sz]; - memcpy(os, s, sz); - delete s; - return os; - } else { - char *s = new char[sz]; + if (type->write) { + char *s = new char[sz]; + IOSTREAM *stream = Sopenmem(&s, &sz, "w"); + stream->encoding = ENC_UTF8; + atom_t at = YAP_SWIAtomFromAtom(AbsAtom(a)); + type->write(stream, at, 0); + Sclose(stream); + popOutputContext(); + sz = strlen(s)+1; + char *os = new char[sz]; + memcpy(os, s, sz); + delete s; + return os; + } else { + char *s = new char[sz]; #if defined(__linux__) || defined(__APPLE__) - snprintf(s, sz, "'%s'(%p)", AtomSWIStream->StrOfAE, a); + snprintf(s, sz, "'%s'(%p)", AtomSWIStream->StrOfAE, a); #else - snprintf(s, sz, "'%s'(0x%p)", AtomSWIStream->StrOfAE, a); + snprintf(s, sz, "'%s'(0x%p)", AtomSWIStream->StrOfAE, a); #endif - char *os = new char[sz]; - memcpy(os, s, sz); - delete s; - return os; - } - } else { - return a->StrOfAE; - } + char *os = new char[sz]; + memcpy(os, s, sz); + delete s; + return os; + } + } else { + return a->StrOfAE; + } } YAPPredicate::YAPPredicate(const char *s, Term **outp, term_t &vnames) { CACHE_REGS vnames = Yap_NewSlots(1 PASS_REGS); - Term t = Yap_StringToTerm(s, strlen(s)+1, vnames), m; - t = Yap_StripModule(t, &m); - if (IsVarTerm(t) || IsNumTerm(t)) - ap = NULL; - if (IsAtomTerm(t)) { - ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); - *outp = NULL; - } else if (IsApplTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - *outp = RepAppl(t)+1; - } else if (IsPairTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - *outp = RepPair(t); - } + Term t = Yap_StringToTerm(s, strlen(s)+1, vnames); + ap = getPred( t, outp ); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "OUT vnames=%d ap=%p LCL0=%p", vnames, ap, LCL0) ; } } +YAPPredicate::YAPPredicate(YAPAtom at) { + CACHE_REGS + ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); +} + +YAPPredicate::YAPPredicate(YAPAtom at, arity_t arity) { + CACHE_REGS + if (arity) { + Functor f = Yap_MkFunctor(at.a, arity); + ap = RepPredProp(PredPropByFunc(f,CurrentModule)); + } else { + ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); + } +} + +/// auxiliary routine to find a predicate in the current module. +PredEntry *YAPPredicate::getPred( Term t, Term **outp ) { + CACHE_REGS + Term m = CurrentModule ; + t = Yap_StripModule(t, &m); + if (IsVarTerm(t) || IsNumTerm(t)) { + ap = NULL; + if (outp) *outp = NULL; + } + if (IsAtomTerm(t)) { + ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); + if (outp) *outp = NULL; + } else if (IsPairTerm(t)) { + ap = RepPredProp(PredPropByFunc(FunctorCsult, PROLOG_MODULE)); + if (outp) *outp = HR; + HR[0] = RepPair(t)[0]; + HR[1] = m; + HR+=2; + } else { + Functor f = FunctorOfTerm(t); + if (IsExtensionFunctor(f)) { + ap = NULL; + if (outp) *outp = NULL; + } + ap = RepPredProp(PredPropByFunc(f, m)); + if (outp) *outp = RepAppl(t)+1; + } + return ap; +} + +YAPPredicate::YAPPredicate(YAPFunctor f) { + CACHE_REGS + ap = RepPredProp(PredPropByFunc(f.f,CurrentModule)); +} + + + + void YAPQuery::initQuery( Term *ts ) { - CACHE_REGS + CACHE_REGS - this->oq = (YAPQuery *)LOCAL_execution; - LOCAL_execution = (struct open_query_struct *)this; - this->q_open=1; - this->q_state=0; - this->q_flags = 0; - this->q_g = ts; + this->oq = (YAPQuery *)LOCAL_execution; + LOCAL_execution = (struct open_query_struct *)this; + this->q_open=1; + this->q_state=0; + this->q_flags = 0; + this->q_g = ts; } void YAPQuery::initQuery( YAPTerm t[], arity_t arity ) { - Term *ts = new Term[arity]; - for (int i = 0; i < arity; i++) - ts[i] = t[i].term(); + Term *ts = new Term[arity]; + for (arity_t i = 0; i < arity; i++) + ts[i] = t[i].term(); - return initQuery( ts ); + return initQuery( ts ); } YAPQuery::YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]): YAPPredicate(f, mod) { - /* ignore flags for now */ - initQuery( t , f.arity()); + /* ignore flags for now */ + initQuery( t , f.arity()); } YAPQuery::YAPQuery(YAPFunctor f, YAPTerm t[]): YAPPredicate(f) { - /* ignore flags for now */ - initQuery( t , f.arity()); + /* ignore flags for now */ + initQuery( t , f.arity()); } YAPQuery::YAPQuery(YAPPredicate p, YAPTerm t[]): YAPPredicate(p.ap) { - initQuery( t , p.ap->ArityOfPE); + initQuery( t , p.ap->ArityOfPE); } -int YAPQuery::next() +YAPListTerm YAPQuery::namedVars() { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "vnames=%d LCL0=%p %x", vnames, LCL0, LCL0[vnames]) ; } + CACHE_REGS + Term o = Yap_GetFromSlot( vnames PASS_REGS ); + return YAPListTerm( o ); +} + +bool YAPQuery::next() { - CACHE_REGS - int result; - if (this->q_open != 1) return 0; - if (setjmp(((YAPQuery *)LOCAL_execution)->q_env)) - return 0; - // don't forget, on success these guys must create slots - if (this->q_state == 0) { - result = YAP_EnterGoal((YAP_PredEntryPtr)this->ap, this->q_g, &this->q_h); - } else { - LOCAL_AllowRestart = this->q_open; - result = YAP_RetryGoal(&this->q_h); - } - this->q_state = 1; - if (result == 0) { - YAP_LeaveGoal(FALSE, &this->q_h); - this->q_open = 0; - } - return result; + CACHE_REGS + int result; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, " CALL vnames=%d ap=%p LCL0=%p %x", vnames, ap, LCL0, LCL0[vnames]) ; } + if (this->q_open != 1) return false; + if (setjmp(((YAPQuery *)LOCAL_execution)->q_env)) + return false; + // don't forget, on success these guys must create slots + if (this->q_state == 0) { + extern void toggle_low_level_trace(void); + //toggle_low_level_trace(); + result = (bool)YAP_EnterGoal((YAP_PredEntryPtr)this->ap, this->q_g, &this->q_h); + } else { + LOCAL_AllowRestart = this->q_open; + result = (bool)YAP_RetryGoal(&this->q_h); + } + this->q_state = 1; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "FAIL vnames=%d %d LCL0=(%p) %x", vnames, result, LCL0, LCL0[vnames]) ; } + if (!result) { + YAP_LeaveGoal(FALSE, &this->q_h); + this->q_open = 0; + } + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "SUCCESS vnames=%d ap=%p LCL0=(%p) %x", vnames, ap, LCL0, LCL0[vnames]) ; } + return result; } void YAPQuery::cut() { - CACHE_REGS + CACHE_REGS - if (this->q_open != 1 || this->q_state == 0) return; - YAP_LeaveGoal(FALSE, &this->q_h); - this->q_open = 0; - LOCAL_execution = (struct open_query_struct *)this->oq; + if (this->q_open != 1 || this->q_state == 0) return; + YAP_LeaveGoal(FALSE, &this->q_h); + this->q_open = 0; + LOCAL_execution = (struct open_query_struct *)this->oq; } void YAPQuery::close() { - CACHE_REGS + CACHE_REGS - if (EX && !(this->q_flags & (PL_Q_CATCH_EXCEPTION))) { - EX = NULL; - } - /* need to implement backtracking here */ - if (this->q_open != 1 || this->q_state == 0) { - return; - } - YAP_LeaveGoal(FALSE, &this->q_h); - this->q_open = 0; - LOCAL_execution = (struct open_query_struct *)this->oq; + if (EX && !(this->q_flags & (PL_Q_CATCH_EXCEPTION))) { + EX = NULL; + } + /* need to implement backtracking here */ + if (this->q_open != 1 || this->q_state == 0) { + return; + } + YAP_LeaveGoal(FALSE, &this->q_h); + this->q_open = 0; + LOCAL_execution = (struct open_query_struct *)this->oq; } int YAPPredicate::call(YAPTerm t[]) { - YAPQuery q = YAPQuery(*this, t); - int ret = q.next(); - q.cut(); - q.close(); - return ret; + YAPQuery q = YAPQuery(*this, t); + int ret = q.next(); + q.cut(); + q.close(); + return ret; } -YAPEngine::YAPEngine(YAPParams const& params) -{ YAP_Init( (YAP_init_args *)¶ms.init_args ); } +static YAPEngine *curren; +#if __ANDROID__ -YAPEngine::YAPEngine() +#include +#include + +extern AAssetManager *assetManager; + +extern char *Yap_AndroidBufp; +static size_t Yap_AndroidMax, Yap_AndroidSz; + +extern void(*Yap_DisplayWithJava)(int c); + +static void +displayWithJava(int c) { -YAPParams *params = new YAPParams(); - YAP_Init( ¶ms->init_args ); + char *ptr = Yap_AndroidBufp; + ptr[ Yap_AndroidSz++ ] = c; + if (Yap_AndroidMax-1 == Yap_AndroidSz) { + if (Yap_AndroidMax < 32*1024) { + Yap_AndroidMax *= 2; + } else { + Yap_AndroidMax += 32*1024; + } + Yap_AndroidBufp = (char *)realloc( ptr, Yap_AndroidMax); + } + Yap_AndroidBufp[Yap_AndroidSz] = '\0'; + if (c == '\n' ) { + Yap_AndroidBufp[Yap_AndroidSz] = '\0'; + __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "after char %c:%s %p",c, Yap_AndroidBufp, curren); + curren->display(Yap_AndroidBufp); + Yap_AndroidSz = 0; + } } +#endif + + +YAPEngine::YAPEngine( char *savedState, + size_t stackSize, + size_t trailSize, + size_t maxStackSize, + size_t maxTrailSize, + char *libDir, + char *bootFile, + char *goal, + char *topLevel, + bool script, + bool fastBoot, + YAPCallback *cb): _callback(0) +{ // a single engine can be active +#if __ANDROID__ + if (assetManager == NULL) + return; + Yap_DisplayWithJava = displayWithJava; + Yap_AndroidBufp = (char *)malloc(Yap_AndroidMax = 4096); + Yap_AndroidBufp[0] = '\0'; + Yap_AndroidSz = 0; +#endif + memset((void *)&init_args, 0, sizeof(init_args)); + init_args.SavedState = savedState; + init_args.StackSize = stackSize; + init_args.TrailSize = trailSize; + init_args.MaxStackSize = maxStackSize; + init_args.MaxTrailSize = maxTrailSize; + init_args.YapLibDir = libDir; + init_args.YapPrologBootFile = bootFile; + init_args.YapPrologGoal = goal; + init_args.YapPrologTopLevelGoal = topLevel; + init_args.HaltAfterConsult = script; + init_args.FastBoot = fastBoot; + delYAPCallback(); + if (cb) setYAPCallback(cb); + curren = this; + YAP_Init( &init_args ); +} + +YAPQuery *YAPEngine::query( char *s ) { + YAPQuery *n = new YAPQuery( s ); + return n; +} diff --git a/CXX/yapi.hh b/CXX/yapi.hh index faa56088b..d2350ff40 100644 --- a/CXX/yapi.hh +++ b/CXX/yapi.hh @@ -13,16 +13,26 @@ * with the swig interface language generator. It uses ideas from the old YAP * interface and from the SWI foreign language interface. * + * @{ + * */ #include #include +extern "C" { + +#ifdef __cplusplus +#define old_cplusplus __cplusplus +#undef __cplusplus +#endif #if USE_GMP #include #endif - -extern "C" { +#ifdef old_cplusplus +#define __cplusplus old_cplusplus +#undef old_cplusplus +#endif #include "Yap.h" @@ -60,348 +70,374 @@ extern "C" { #include #endif -// taken from yap_structs.h + // taken from yap_structs.h #include "iopreds.h" -extern Term Yap_StringToTerm(const char *s, size_t len, term_t bindings); + extern Term Yap_StringToTerm(const char *s, size_t len, term_t bindings); -// we cannot consult YapInterface.h, that conflicts with what we declare, though -// it shouldn't + // we cannot consult YapInterface.h, that conflicts with what we declare, though + // it shouldn't } //#include + class YAPEngine; -class YAPTermHandle; class YAPAtom; class YAPFunctor; class YAPApplTerm; class YAPPairTerm; class YAPQuery; +class TypeError {}; + /** * @brief Generic Prolog Term */ class YAPTerm { - friend class YAPPredicate; - friend class YAPTermHandle; - friend class YAPApplTerm; - friend class YAPPairTerm; + friend class YAPPredicate; + friend class YAPApplTerm; + friend class YAPPairTerm; + friend class YAPListTerm; protected: - term_t t; - inline void mk(Term t0) { CACHE_REGS t = Yap_InitSlot( t0 PASS_REGS); } - inline Term gt(void) { CACHE_REGS return Yap_GetFromSlot( t PASS_REGS); } + handle_t t; + void mk(Term t0); + Term gt(); + YAPTerm(Term tn) { mk( tn ); } public: - YAPTerm() { mk(TermNil); } // do nothing constructor - YAPTerm(void *ptr) { CACHE_REGS mk( MkIntegerTerm( (Int)ptr ) );} - YAPTerm(Term tn) { mk( tn ); } - YAPTerm(char *s) { Term tp ; mk( YAP_ReadBuffer(s,&tp) ); } - /*~YAPTerm(void) { + YAPTerm() { mk(TermNil); } // do nothing constructor + YAPTerm(intptr_t i); + YAPTerm(void *ptr); + YAPTerm(char *s) { Term tp ; mk( YAP_ReadBuffer(s,&tp) ); } + /*~YAPTerm(void) { CACHE_REGS Yap_RecoverSlots(1, t PASS_REGS); }*/ - Term term() { return gt(); } - YAP_tag_t tag(); - YAPTerm deepCopy(); - //const YAPTerm *vars(); - bool exactlyEqual(YAPTerm t1); - bool unify(YAPTerm t1); - bool unifiable(YAPTerm t1); - bool variant(YAPTerm t1); - intptr_t hash(size_t sz, size_t depth, bool variant); - bool isVar() { return IsVarTerm( gt() ); } - bool isAtom() { return IsAtomTerm( gt() ); } - bool isInteger() { return IsIntegerTerm( gt() ); } - bool isFloat() { return IsFloatTerm( gt() ); } - bool isCompound() { return !(IsVarTerm( gt() ) || IsNumTerm( gt() )); } - bool isAppl() { return IsApplTerm( gt() ); } - bool isPair() { return IsPairTerm( gt() ); } - bool isGround() { return Yap_IsGroundTerm( gt() ); } - bool isList() { return Yap_IsListTerm( gt() ); } - bool isString() { return IsStringTerm( gt() ); } + Term term() { return gt(); } + YAP_tag_t tag(); + YAPTerm deepCopy(); + //const YAPTerm *vars(); + bool exactlyEqual(YAPTerm t1); + bool unify(YAPTerm t1); + bool unifiable(YAPTerm t1); + bool variant(YAPTerm t1); + intptr_t hash(size_t sz, size_t depth, bool variant); + bool isVar() { return IsVarTerm( gt() ); } + bool isAtom() { return IsAtomTerm( gt() ); } + bool isInteger() { return IsIntegerTerm( gt() ); } + bool isFloat() { return IsFloatTerm( gt() ); } + bool isCompound() { return !(IsVarTerm( gt() ) || IsNumTerm( gt() )); } + bool isAppl() { return IsApplTerm( gt() ); } + bool isPair() { return IsPairTerm( gt() ); } + bool isGround() { return Yap_IsGroundTerm( gt() ); } + bool isList() { return Yap_IsListTerm( gt() ); } + bool isString() { return IsStringTerm( gt() ); } - inline YAPTerm getArg(int i) { - Term t0 = gt(); - if (IsApplTerm(t0)) - return YAPTerm(ArgOfTerm(i, t0)); - else if (IsPairTerm(t0)) { - if (i==1) - return YAPTerm(HeadOfTerm(t0)); - if (i==2) - return YAPTerm(TailOfTerm(t0)); - } - return YAPTerm((Term)0); - } - char *text(); + inline YAPTerm getArg(int i) { + Term t0 = gt(); + if (IsApplTerm(t0)) + return YAPTerm(ArgOfTerm(i, t0)); + else if (IsPairTerm(t0)) { + if (i==1) + return YAPTerm(HeadOfTerm(t0)); + if (i==2) + return YAPTerm(TailOfTerm(t0)); + } + return YAPTerm((Term)0); + } + char *text(); }; /** * @brief Variable Term */ -class YAPVarTerm: private YAPTerm { - YAPVarTerm(Term t) { if (IsVarTerm(t)) mk( t ); } +class YAPVarTerm: public YAPTerm { + YAPVarTerm(Term t) { if (IsVarTerm(t)) mk( t ); } public: - YAPVarTerm() { CACHE_REGS mk( MkVarTerm( ) ); } - CELL *getVar() { return VarOfTerm( gt() ); } - bool unbound() { return IsUnboundVar(VarOfTerm( gt() )); } + YAPVarTerm(); + CELL *getVar() { return VarOfTerm( gt() ); } + bool unbound() { return IsUnboundVar(VarOfTerm( gt() )); } }; /** * @brief Compound Term */ -class YAPApplTerm: private YAPTerm { +class YAPApplTerm: public YAPTerm { friend class YAPTerm; YAPApplTerm(Term t0) { mk(t0); } public: YAPApplTerm(YAPTerm t0) { mk(t0.term()); } - YAPApplTerm(YAPFunctor f, YAPTerm ts[]); - YAPApplTerm(YAPFunctor f); - YAPFunctor getFunctor(); - YAPTerm getArg(int i); + YAPApplTerm(YAPFunctor f, YAPTerm ts[]); + YAPApplTerm(YAPFunctor f); + YAPFunctor getFunctor(); + YAPTerm getArg(int i); }; /** * @brief List Constructor Term */ -class YAPPairTerm: private YAPTerm { +class YAPPairTerm: public YAPTerm { friend class YAPTerm; - YAPPairTerm(Term t0) { if (IsPairTerm(t0)) mk( t0 ); else mk(0); } + YAPPairTerm(Term t0) { if (IsPairTerm(t0)) mk( t0 ); else mk(0); } public: - YAPPairTerm(YAPTerm hd, YAPTerm tl); - YAPPairTerm(); - YAPTerm getHead() { return YAPTerm(HeadOfTerm( gt() )); } - YAPTerm getTail() { return YAPTerm(TailOfTerm( gt() )); } + YAPPairTerm(YAPTerm hd, YAPTerm tl); + YAPPairTerm(); + YAPTerm getHead() { return YAPTerm(HeadOfTerm( gt() )); } + YAPTerm getTail() { return YAPTerm(TailOfTerm( gt() )); } }; /** * @brief Integer Term */ -class YAPIntegerTerm: private YAPTerm { +class YAPIntegerTerm: public YAPTerm { public: - YAPIntegerTerm(intptr_t i) { CACHE_REGS Term tn = MkIntegerTerm( i ); mk( tn ); } - intptr_t getInteger() { return IntegerOfTerm( gt() ); } - bool isTagged() { return IsIntTerm( gt() ); } + YAPIntegerTerm(intptr_t i); + intptr_t getInteger() { return IntegerOfTerm( gt() ); } + bool isTagged() { return IsIntTerm( gt() ); } }; -class YAPListTerm: private YAPTerm { +class YAPListTerm: public YAPTerm { public: /// Create a list term out of a standard term. Check if a valid operation. - /// - /// @param[in] the term - YAPListTerm(Term t0) { mk(t0); /* else type_error */ } -/* /// Create a list term out of an array of terms. + /// + /// @param[in] the term + YAPListTerm(Term t0) { mk(t0); /* else type_error */ } + /* /// Create a list term out of an array of terms. /// /// @param[in] the array of terms /// @param[in] the length of the array YAPListTerm(YAPTerm ts[], size_t n); - /// Create a list term out of an array of Prolog terms. - /// - /// @param[in] the array of terms - /// @param[in] the length of the array - YAPListTerm(Term ts[], size_t n); - */ -// YAPListTerm( vector v ); + */ + // YAPListTerm( vector v ); /// Return the number of elements in a list term. size_t length() { Term *tailp; Term t1 = gt(); return Yap_SkipList(&t1, &tailp); } -// vector toVector(); - /// Create an array of term out of a list. - /// - /// @param[in] the list - YAPTerm car() { if (IsPairTerm(gt())) return YAPTerm(HeadOfTerm(gt())); else return YAPTerm((term_t)0); } - YAPListTerm cdr() { if (IsPairTerm(gt())) return YAPListTerm(TailOfTerm(gt())); else return YAPListTerm((term_t)0); } - bool nil() { return gt() == TermNil; } + /// Extract the first element of a list. + /// + /// @param[in] the list + YAPTerm car(); + /// Extract the tail elements of a list. + /// + /// @param[in] the list + YAPListTerm cdr() + { + Term to = gt(); + if (IsPairTerm( to )) + return YAPListTerm(TailOfTerm( to )); + else + return MkIntTerm(-1); + } + + /// Check if the list is empty. + /// + /// @param[in] the list + bool nil(); }; /** * @brief Atom */ class YAPAtom { - friend class YAPPredicate; - friend class YAPFunctor; - friend class YAPAtomTerm; - Atom a; + friend class YAPPredicate; + friend class YAPFunctor; + friend class YAPAtomTerm; + Atom a; public: - YAPAtom( Atom at ) { a = at; } - YAPAtom( char * s) { a = Yap_LookupAtom( s ); } - YAPAtom( wchar_t * s) { a = Yap_LookupMaybeWideAtom( s ); } - YAPAtom( char * s, size_t len) { a = Yap_LookupAtomWithLength( s, len ); } - YAPAtom( wchar_t * s, size_t len) { a = Yap_LookupMaybeWideAtomWithLength( s, len ); } - char *name(void); + YAPAtom( Atom at ) { a = at; } + YAPAtom( char * s) { a = Yap_LookupAtom( s ); } + YAPAtom( wchar_t * s) { a = Yap_LookupMaybeWideAtom( s ); } + YAPAtom( char * s, size_t len) { a = Yap_LookupAtomWithLength( s, len ); } + YAPAtom( wchar_t * s, size_t len) { a = Yap_LookupMaybeWideAtomWithLength( s, len ); } + char *name(void); }; /** * @brief String Term */ -class YAPStringTerm: private YAPTerm { +class YAPStringTerm: public YAPTerm { public: - YAPStringTerm(char *s) ; - YAPStringTerm(char *s, size_t len); - YAPStringTerm(wchar_t *s) ; - YAPStringTerm(wchar_t *s, size_t len); - const char *getString() { return StringOfTerm( gt() ); } + YAPStringTerm(char *s) ; + YAPStringTerm(char *s, size_t len); + YAPStringTerm(wchar_t *s) ; + YAPStringTerm(wchar_t *s, size_t len); + const char *getString() { return StringOfTerm( gt() ); } }; /** * @brief Atom Term */ -class YAPAtomTerm: private YAPTerm { +class YAPAtomTerm: public YAPTerm { public: - YAPAtomTerm(YAPAtom a): YAPTerm() { mk( MkAtomTerm(a.a) ); } - YAPAtomTerm(Atom a): YAPTerm() { mk( MkAtomTerm(a) ); } - YAPAtomTerm(char *s) ; - YAPAtomTerm(char *s, size_t len); - YAPAtomTerm(wchar_t *s) ; - YAPAtomTerm(wchar_t *s, size_t len); - YAPAtom getAtom() { return YAPAtom(AtomOfTerm( gt() )); } + YAPAtomTerm(YAPAtom a): YAPTerm() { mk( MkAtomTerm(a.a) ); } + YAPAtomTerm(Atom a): YAPTerm() { mk( MkAtomTerm(a) ); } + YAPAtomTerm(char *s) ; + YAPAtomTerm(char *s, size_t len); + YAPAtomTerm(wchar_t *s) ; + YAPAtomTerm(wchar_t *s, size_t len); + YAPAtom getAtom() { return YAPAtom(AtomOfTerm( gt() )); } }; /** - * @brief Functor + * @brief YAPFunctor represents Prolog functors Name/Arity */ class YAPFunctor { - friend class YAPApplTerm; - friend class YAPPredicate; - Functor f; + friend class YAPApplTerm; + friend class YAPPredicate; + Functor f; + /// Constructor: receives Prolog functor and casts it to YAPFunctor + /// + /// Notice that this is designed for internal use only. + YAPFunctor( Functor ff) { f = ff; } public: - YAPFunctor( char * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupAtom( s ), arity ); } - YAPFunctor( wchar_t * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupWideAtom( s ), arity ); } - YAPFunctor( YAPAtom at, arity_t arity) { f = Yap_MkFunctor( at.a, arity ); } - YAPFunctor( Functor ff) { f = ff; } + /// Constructor: receives name as a string plus arity + /// + /// Notice that this is designed for ISO-LATIN-1 right now + YAPFunctor( char * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupAtom( s ), arity ); } + /// Constructor: receives name as a wide string plus arity + /// + /// Notice that this is designed for UNICODE right now + YAPFunctor( wchar_t * s, arity_t arity) { f = Yap_MkFunctor( Yap_LookupWideAtom( s ), arity ); } + /// Constructor: receives name as an atom, plus arity + /// + /// This is the default method, and the most popi;at + YAPFunctor( YAPAtom at, arity_t arity) { f = Yap_MkFunctor( at.a, arity ); } - Atom name(void) { - return NameOfFunctor( f ); - } + /// Getter: extract name of functor as an atom + /// + /// this is for external usage. + YAPAtom name(void) { + return YAPAtom( NameOfFunctor( f ) ); + } - arity_t arity(void) { - return ArityOfFunctor( f ); - } + /// Getter: extract arity of functor as an unsigned integer + /// + /// this is for external usage. + arity_t arity(void) { + return ArityOfFunctor( f ); + } }; /** - * @brief Term Handle - */ -class YAPTermHandle { - long int handle; -public: - YAPTermHandle(Term t) { - CACHE_REGS - handle = Yap_InitSlot(t PASS_REGS); - } - - void set(YAPTerm t) { - CACHE_REGS - Yap_PutInSlot(handle, t.t PASS_REGS); - } -}; - -/** - * @brief Predicate + * @brief Predicates + * + * This class interfaces with PredEntry in Yatom.g */ class YAPPredicate { - friend class YAPQuery; - PredEntry *ap; - // trick to communicate t[] back to yapquery - YAPPredicate(const char *s, Term **outp, term_t& vnames ); - inline YAPPredicate(Term t) { - CACHE_REGS - Term m = CurrentModule ; - t = Yap_StripModule(t, &m); - if (IsVarTerm(t) || IsNumTerm(t)) - ap = NULL; - if (IsAtomTerm(t)) { - ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); - } else if (IsApplTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - } else if (IsPairTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorCsult, PROLOG_MODULE)); - } else { - ap = NULL; - } - } - inline YAPPredicate(PredEntry *pe) { - ap = pe; - } + friend class YAPQuery; + +private: + PredEntry *ap; + + /// auxiliary routine to find a predicate in the current module. + PredEntry *getPred( Term t, Term **outp ) ; + + /// String constructor for predicates + /// + /// It also communicates the array of arguments t[] abd the array of variables + /// back to yapquery + YAPPredicate(const char *s, Term **outp, handle_t& vnames ); + + /// Term constructor for predicates + /// + /// It is just a call to getPred + inline YAPPredicate(Term t) { + ap = getPred( t , NULL ); + } + + /// Cast constructor for predicates, + /// if we have the implementation data. + /// + inline YAPPredicate(PredEntry *pe) { + ap = pe; + } + public: - inline YAPPredicate(YAPFunctor f) { - CACHE_REGS - ap = RepPredProp(PredPropByFunc(f.f,CurrentModule)); - } - inline YAPPredicate(YAPFunctor f, YAPTerm mod) { - ap = RepPredProp(PredPropByFunc(f.f,mod.t)); - } - inline YAPPredicate(YAPAtom at, YAPTerm mod) { - ap = RepPredProp(PredPropByAtom(at.a,mod.t)); - } - inline YAPPredicate(YAPAtom at) { - CACHE_REGS - ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); - } - inline YAPPredicate(YAPAtom at, arity_t arity, YAPTerm mod) { - if (arity) { - Functor f = Yap_MkFunctor(at.a, arity); - ap = RepPredProp(PredPropByFunc(f,mod.t)); - } else { - ap = RepPredProp(PredPropByAtom(at.a,mod.t)); - } - } - inline YAPPredicate(YAPAtom at, arity_t arity) { - CACHE_REGS - if (arity) { - Functor f = Yap_MkFunctor(at.a, arity); - ap = RepPredProp(PredPropByFunc(f,CurrentModule)); - } else { - ap = RepPredProp(PredPropByAtom(at.a,CurrentModule)); - } - } - inline YAPPredicate(char *s) { - CACHE_REGS - Term t, tp, m = CurrentModule ; - t = YAP_ReadBuffer(s,&tp); - t = Yap_StripModule(t, &m); - if (IsVarTerm(t) || IsNumTerm(t)) - ap = NULL; - if (IsAtomTerm(t)) { - ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); - } else { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - } - } - inline YAPPredicate(char *s, Term **outp) { - CACHE_REGS - Term t, tp, m = CurrentModule ; - t = YAP_ReadBuffer(s,&tp); - t = Yap_StripModule(t, &m); - if (IsVarTerm(t) || IsNumTerm(t)) - ap = NULL; - if (IsAtomTerm(t)) { - ap = RepPredProp(PredPropByAtom(AtomOfTerm(t), m)); - *outp = NULL; - } else if (IsApplTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - *outp = RepAppl(t)+1; - } else if (IsPairTerm(t)) { - ap = RepPredProp(PredPropByFunc(FunctorOfTerm(t), m)); - *outp = RepPair(t); - } - } - int call(YAPTerm ts[]); - arity_t arity() { return ap->ArityOfPE; } - /// module of predicate - /// - /// notice that modules are currently treated as atoms, this should change. - YAPAtom module() { if (ap->ModuleOfPred == PROLOG_MODULE) - return YAPAtom(AtomProlog); - else - return YAPAtom(AtomOfTerm(ap->ModuleOfPred)); } - /// name of predicate - /// - /// notice that we return the atom, not a string. - YAPAtom name() { if (ap->ArityOfPE) - return YAPAtom((Atom)ap->FunctorOfPred); - else - return YAPAtom(NameOfFunctor(ap->FunctorOfPred)); - } + + /// Functor constructor for predicates + /// + /// Asssumes that we use the current module. + YAPPredicate(YAPFunctor f); + + /// Functor constructor for predicates, is given a specific module. + /// + inline YAPPredicate(YAPFunctor f, YAPTerm mod) { + ap = RepPredProp(PredPropByFunc(f.f,mod.t)); + } + + /// Name/arity constructor for predicates. + /// + inline YAPPredicate(YAPAtom at, YAPTerm mod) { + ap = RepPredProp(PredPropByAtom(at.a,mod.t)); + } + + + /// Name/0 constructor for predicates. + /// + YAPPredicate(YAPAtom at); + + /// Mod:Name/Arity constructor for predicates. + /// + inline YAPPredicate(YAPAtom at, arity_t arity, YAPTerm mod) { + if (arity) { + Functor f = Yap_MkFunctor(at.a, arity); + ap = RepPredProp(PredPropByFunc(f,mod.t)); + } else { + ap = RepPredProp(PredPropByAtom(at.a,mod.t)); + } + } + + /// Atom/Arity constructor for predicates. + /// + YAPPredicate(YAPAtom at, arity_t arity); + + + /// String constructor for predicates. + /// + /// String is a Prolog term, we extract the main functor after considering the module qualifiers. + inline YAPPredicate(char *s) { + Term t, tp; + t = YAP_ReadBuffer(s,&tp); + ap = getPred( t, NULL ); + } + + + /// String constructor for predicates, also keeps arguments in tp[] + /// + /// String is a Prolog term, we extract the main functor after considering the module qualifiers. + inline YAPPredicate(char *s, Term **outp) { + Term t, tp; + t = YAP_ReadBuffer(s,&tp); + ap = getPred( t, NULL ); + } + + /// meta-call this predicate, with arguments ts[] + /// + int call(YAPTerm ts[]); + + /// module of a predicate + /// + /// notice that modules are currently treated as atoms, this should change. + YAPAtom module() { + if (ap->ModuleOfPred == PROLOG_MODULE) + return YAPAtom(AtomProlog); + else + return YAPAtom(AtomOfTerm(ap->ModuleOfPred)); + } + + /// name of predicate + /// + /// notice that we return the atom, not a string. + YAPAtom name() { if (ap->ArityOfPE) + return YAPAtom((Atom)ap->FunctorOfPred); + else + return YAPAtom(NameOfFunctor(ap->FunctorOfPred)); + } + + /// arity of predicate + /// + /// we return a positive number. + arity_t getArity() { return ap->ArityOfPE; } + }; /** @@ -410,129 +446,100 @@ public: * interface to a YAP Query; * uses an SWI-like status info internally. */ -class YAPQuery: private YAPPredicate { - int q_open; - int q_state; - Term *q_g; - yamop *q_p, *q_cp; - jmp_buf q_env; - int q_flags; - YAP_dogoalinfo q_h; - YAPQuery *oq; - term_t vnames; - void initQuery( Term ts[] ); - void initQuery( YAPTerm t[], arity_t arity ); +class YAPQuery: public YAPPredicate { + int q_open; + int q_state; + Term *q_g; + yamop *q_p, *q_cp; + jmp_buf q_env; + int q_flags; + YAP_dogoalinfo q_h; + YAPQuery *oq; + handle_t vnames; + void initQuery( Term ts[] ); + void initQuery( YAPTerm t[], arity_t arity ); public: - /// main constructor, uses a predicate and an array of terms - /// - /// It is given a YAPPredicate _p_ , and an array of terms that must have at least - /// the same arity as the functor. - YAPQuery(YAPPredicate p, YAPTerm t[]); - /// full constructor, - /// - /// It is given a functor, module, and an array of terms that must have at least - /// the same arity as the functor. - YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]); - /// functor/term constructor, - /// - /// It is given a functor, and an array of terms that must have at least - /// the same arity as the functor. Works within the current module. - YAPQuery(YAPFunctor f, YAPTerm t[]); - /// string constructor with varnames - /// - /// It is given a string, calls the parser and obtains a Prolog term that should be a callable - /// goal and a list of variables. Useful for top-level simulation. Works within the current module. - inline YAPQuery(char *s): YAPPredicate(s, &this->q_g, vnames) - { - Term *ts = this->q_g; + /// main constructor, uses a predicate and an array of terms + /// + /// It is given a YAPPredicate _p_ , and an array of terms that must have at least + /// the same arity as the functor. + YAPQuery(YAPPredicate p, YAPTerm t[]); + /// full constructor, + /// + /// It is given a functor, module, and an array of terms that must have at least + /// the same arity as the functor. + YAPQuery(YAPFunctor f, YAPTerm mod, YAPTerm t[]); + /// functor/term constructor, + /// + /// It is given a functor, and an array of terms that must have at least + /// the same arity as the functor. Works within the current module. + YAPQuery(YAPFunctor f, YAPTerm t[]); + /// string constructor with varnames + /// + /// It is given a string, calls the parser and obtains a Prolog term that should be a callable + /// goal and a list of variables. Useful for top-level simulation. Works within the current module. + inline YAPQuery(char *s): YAPPredicate(s, &this->q_g, vnames) + { + Term *ts = this->q_g; - initQuery( ts ); - } - /// first query - /// - /// actually implemented by calling the next(); - inline int first() { return next(); } - /// ask for the next solution of the current query - /// same call for every solution - int next(); - /// remove alternatives in the current search space, and finish the current query - void cut(); - /// finish the current query: undo all bindings. - void close(); - /// query variables. - YAPListTerm namedVars() { CACHE_REGS Term o = Yap_GetFromSlot( vnames PASS_REGS ); return YAPListTerm( o ); } - }; + initQuery( ts ); + } + /// first query + /// + /// actually implemented by calling the next(); + inline bool first() { return next(); } + /// ask for the next solution of the current query + /// same call for every solution + bool next(); + /// remove alternatives in the current search space, and finish the current query + void cut(); + /// finish the current query: undo all bindings. + void close(); + /// query variables. + YAPListTerm namedVars(); +}; +// Java support -class YAPParams; +// This class implements a callback Prolog-side +class YAPCallback { +public: + virtual ~YAPCallback() { printf("~YAPCallback\n"); } + virtual void run() { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "callback"); } + virtual void displayInWindow(char *s) { } +}; /** - * @brief YAP Constructor + * @brief YAP Engine: takes care of constructing an execution environment where we can go executing goals * */ class YAPEngine { +private: + YAPCallback *_callback; + char **buf; + YAP_init_args init_args; public: - YAPEngine(YAPParams const& params); /// construct a new engine - YAPEngine(); /// construct a new engine, no arguments - YAPQuery *query( char *s ) { return new YAPQuery( s ); } /// build a query on the engine + YAPEngine(char *savedState = NULL, + size_t stackSize = 0, + size_t trailSize = 0, + size_t maxStackSize = 0, + size_t maxTrailSize = 0, + char *libDir = NULL, + char *bootFile = NULL, + char *goal = NULL, + char *topLevel = NULL, + bool script = FALSE, + bool fastBoot = FALSE, + YAPCallback *callback=NULL); /// construct a new engine, including aaccess to callbacks + ~YAPEngine() { delYAPCallback(); } /// kill engine + void delYAPCallback() { _callback = 0; } /// remove current callback + void setYAPCallback(YAPCallback *cb) { delYAPCallback(); _callback = cb; __android_log_print(ANDROID_LOG_INFO, __FILE__, "after loading startup %p",cb); } /// set a new callback + void call() { if (_callback) _callback->run(); } /// execute the callback. + void display( char *s) { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "bef calling disp %s %p",s, _callback); if (_callback) _callback->displayInWindow(s); } /// execute the callback. + YAPQuery *query( char *s ); /// build a query on the engine }; -/** - * @brief Parameters for YAP Constructor +/* + * @} * */ -class YAPParams { - friend class YAPEngine; - YAP_init_args init_args; -public: - YAPParams(); - // sets all the default values for each data member - YAPParams& savedState( char * f); - YAPParams& stackSize(size_t sz); - YAPParams& trailSize(size_t sz); - YAPParams& maxStackSize(size_t sz); - YAPParams& maxTrailSize(size_t sz); - YAPParams& libDir(char *p); - YAPParams& bootFile(char *f); - YAPParams& goal(char *g); - YAPParams& topLevel(char *g); - YAPParams& script(bool v); - YAPParams& fastBoot(bool v); -}; - -inline YAPParams::YAPParams() -{ Yap_InitDefaults( &init_args, NULL ); } - -inline YAPParams& YAPParams::savedState( char * f) -{ init_args.SavedState = f; return *this; } - -inline YAPParams& YAPParams::stackSize(size_t sz) -{ init_args.StackSize = sz; return *this; } - -inline YAPParams& YAPParams::trailSize(size_t sz) -{ init_args.TrailSize = sz; return *this; } - -inline YAPParams& YAPParams::maxStackSize(size_t sz) -{ init_args.MaxStackSize = sz; return *this; } - -inline YAPParams& YAPParams::maxTrailSize(size_t sz) -{ init_args.MaxTrailSize = sz; return *this; } - -inline YAPParams& YAPParams::libDir(char *p) -{ init_args.YapLibDir = p; return *this; } - -inline YAPParams& YAPParams::bootFile(char *f) -{ init_args.YapPrologBootFile = f; return *this; } - -inline YAPParams& YAPParams::goal(char *g) -{ init_args.YapPrologGoal = g; return *this; } - -inline YAPParams& YAPParams::topLevel(char *g) -{ init_args.YapPrologTopLevelGoal = g; return *this; } - -inline YAPParams& YAPParams::script(bool v) -{ init_args.HaltAfterConsult = v; return *this; } - -inline YAPParams& YAPParams::fastBoot(bool v) -{ init_args.FastBoot = v; return *this; } - From ab06b04a098ea6326e060c34cfd0c6609a0a70c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 11 Jun 2014 19:30:44 +0100 Subject: [PATCH 09/13] fix non locale code --- C/write.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/C/write.c b/C/write.c index 6f9832351..bd828eb50 100644 --- a/C/write.c +++ b/C/write.c @@ -317,7 +317,7 @@ wrputf(Float f, struct write_globs *wglb) /* writes a float */ size_t l1 = strlen((const char *)decimalpoint+1); #else const unsigned char *decimalpoint = "."; - l1 = 0; + size_t l1 = 0; #endif if (lastw == symbol || lastw == alphanum) { @@ -574,11 +574,12 @@ putAtom(Atom atom, int Quote_illegal, struct write_globs *wglb) wtype atom_or_symbol; wrf stream = wglb->stream; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "AA LCL0=(%p) %p", LCL0, &LCL0 ); } if (IsBlob(atom)) { wrputblob(RepAtom(atom),Quote_illegal,wglb); return; } - if (IsWideAtom(atom)) { + if (IsWideAtom(atom) ) { wchar_t *ws = RepAtom(atom)->WStrOfAE; if (Quote_illegal) { @@ -593,7 +594,11 @@ putAtom(Atom atom, int Quote_illegal, struct write_globs *wglb) } return; } + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "AB LCL0=(%p) %p", LCL0, &LCL0 ); } + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "AB LCL0=(%p) %p", LCL0, RepAtom(atom)->StrOfAE ); } + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "AB LCL0=(%p) %c", LCL0, RepAtom(atom)->StrOfAE[0]); } s = (unsigned char *)RepAtom(atom)->StrOfAE; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "AC %s LCL0=(%p) %p", s, LCL0, &LCL0 ); } /* #define CRYPT_FOR_STEVE 1*/ #ifdef CRYPT_FOR_STEVE if (Yap_GetValue(AtomCryptAtoms) != TermNil && Yap_GetAProp(atom, OpProperty) == NIL) { @@ -886,14 +891,19 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str if (EX) return; t = Deref(t); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } if (IsVarTerm(t)) { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "V %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } write_var((CELL *)t, wglb, &nrwt); } else if (IsIntTerm(t)) { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } + wrputn((Int) IntOfTerm(t),wglb); } else if (IsAtomTerm(t)) { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "A %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } putAtom(AtomOfTerm(t), wglb->Quote_illegal, wglb); } else if (IsPairTerm(t)) { - if (wglb->Ignore_ops) { + if (wglb->Ignore_ops) { wrputs("'.'(",wglb->stream); lastw = separator; writeTerm(from_pointer(RepPair(t), &nrwt, wglb), 999, depth + 1, FALSE, wglb, &nrwt); @@ -909,29 +919,33 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str struct DB_TERM *old_EX = NULL; Int sl = 0; - targs[0] = t; + targs[0] = t; Yap_PutValue(AtomPortray, MkAtomTerm(AtomNil)); if (EX) old_EX = EX; sl = Yap_InitSlot(t PASS_REGS); - Yap_execute_goal(Yap_MkApplTerm(FunctorPortray, 1, targs), 0, 1); + Yap_execute_goal(Yap_MkApplTerm(FunctorPortray, 1, targs), 0, 1); t = Yap_GetFromSlot(sl PASS_REGS); Yap_RecoverSlots(1, sl PASS_REGS); if (old_EX != NULL) EX = old_EX; - if (Yap_GetValue(AtomPortray) == MkAtomTerm(AtomTrue)) + if (Yap_GetValue(AtomPortray) == MkAtomTerm(AtomTrue)) return; } if (yap_flags[WRITE_QUOTED_STRING_FLAG] && IsCodesTerm(t)) { putString(t, wglb); } else { + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } wrputc('[', wglb->stream); lastw = separator; /* we assume t was already saved in the stack */ - write_list(t, 0, depth, wglb, rwt); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "II %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } + write_list(t, 0, depth, wglb, rwt); wrputc(']', wglb->stream); - lastw = separator; + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "III II%d LCL0=(%p) %p", t, LCL0, &LCL0 ); } + lastw = separator; } } else { /* compound term */ - Functor functor = FunctorOfTerm(t); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } + Functor functor = FunctorOfTerm(t); int Arity; Atom atom; int op, lp, rp; @@ -1087,7 +1101,8 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str } else if (!wglb->Ignore_ops && Arity == 2 && Yap_IsInfixOp(atom, &op, &lp, &rp) ) { - Term tleft = ArgOfTerm(1, t); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "II %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } + Term tleft = ArgOfTerm(1, t); Term tright = ArgOfTerm(2, t); int bracket_left = !IsVarTerm(tleft) && IsAtomTerm(tleft) && @@ -1104,7 +1119,9 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb, str if (bracket_left) { wropen_bracket(wglb, TRUE); } + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "III %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } writeTerm(from_pointer(RepAppl(t)+1, &nrwt, wglb), lp, depth + 1, rinfixarg, wglb, &nrwt); + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "IV %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } t = AbsAppl(restore_from_write(&nrwt, wglb)-1); if (bracket_left) { wrclose_bracket(wglb, TRUE); @@ -1239,6 +1256,7 @@ Yap_plwrite(Term t, void *mywrite, int max_depth, int flags, int priority) wglb.Ignore_ops = flags & Ignore_ops_f; wglb.Write_strings = flags & BackQuote_String_f; /* protect slots for portray */ + { CACHE_REGS __android_log_print(ANDROID_LOG_ERROR, __FUNCTION__, "I %d LCL0=(%p) %p", t, LCL0, &LCL0 ); } writeTerm(from_pointer(&t, &rwt, &wglb), priority, 1, FALSE, &wglb, &rwt); restore_from_write(&rwt, &wglb); } From 2d2eb70842cf047b96a89b9c97ecf265af7b9379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 11 Jun 2014 19:31:24 +0100 Subject: [PATCH 10/13] improve Android support --- packages/swig/Android.mk.in | 30 +++- packages/swig/Makefile.in | 24 +-- packages/swig/android/Application.mk | 2 + packages/swig/android/SwigSimple.java | 229 +++++++++++++++++++------- packages/swig/android/main.xml | 42 ++++- packages/swig/python/demo.py | 3 +- packages/swig/yap.i | 21 ++- 7 files changed, 261 insertions(+), 90 deletions(-) diff --git a/packages/swig/Android.mk.in b/packages/swig/Android.mk.in index 1f8ce8a70..89b866863 100644 --- a/packages/swig/Android.mk.in +++ b/packages/swig/Android.mk.in @@ -1,13 +1,31 @@ # File: Android.mk +#use current directory LOCAL_PATH := $(call my-dir) -NDK_TOOLCHAIN_VERSION := 4.8 + include $(CLEAR_VARS) -LOCAL_LDLIBS := -llog -landroid -LOCAL_LDLIBS += @abs_top_builddir@/libYap.a @abs_top_builddir@/yapi.o + +LOCAL_LDLIBS := -landroid -llog +LOCAL_MODULE := yap0 +LOCAL_SRC_FILES += @abs_top_builddir@/../../gmp/lib/libgmp.so +include $(PREBUILT_SHARED_LIBRARY) + +include $(CLEAR_VARS) + +LOCAL_MODULE := yap1 +LOCAL_SRC_FILES += @abs_top_builddir@/libYap.a +include $(PREBUILT_STATIC_LIBRARY) + +include $(CLEAR_VARS) + + +NDK_TOOLCHAIN_VERSION := @GCC_VERSION@ +LOCAL_LDLIBS := -landroid -llog LOCAL_MODULE := example -LOCAL_SRC_FILES := yap_wrap.cpp -LOCAL_C_INCLUDES := @abs_top_builddir@ @srcdir@/../../H @srcdir@/../../include @srcdir@/../../os @srcdir@/../../OPTYap @srcdir@/../../BEAM @srcdir@/../../CXX -LOCAL_CFLAGS := @DEFS@ -D_YAP_NOT_INSTALLED_=1 +LOCAL_SHARED_LIBRARIES := yap0 yap1 +LOCAL_STATIC_LIBRARIES := @abs_top_builddir@/libYap.ar +LOCAL_SRC_FILES += @abs_top_builddir@/packages/swig/android/jni/yap_wrap.cpp +LOCAL_C_INCLUDES := @abs_top_builddir@ @abs_top_builddir@/../../gmp/include @srcdir@/../../H @srcdir@/../../include @srcdir@/../../os @srcdir@/../../OPTYap @srcdir@/../../BEAM @srcdir@/../../CXX +LOCAL_CFLAGS := @YAP_EXTRAS@ @DEFS@ -D_YAP_NOT_INSTALLED_=1 -DDESTDIR=\"\" LOCAL_CPP_FEATURES := rtti # LOCAL_ALLOW_UNDEFINED_SYMBOLS := true include $(BUILD_SHARED_LIBRARY) diff --git a/packages/swig/Makefile.in b/packages/swig/Makefile.in index bae291b14..f67a087b3 100644 --- a/packages/swig/Makefile.in +++ b/packages/swig/Makefile.in @@ -8,8 +8,8 @@ include ../Makefile.defs DEFS=@DEFS@ -D_YAP_NOT_INSTALLED_=1 -DDESTDIR=\"$(DESTDIR)\" YAP_EXTRAS=@YAP_EXTRAS@ srcdir=@srcdir@ -CPPFLAGS=@CPPFLAGS@ -I../.. -I$(srcdir)/../../H -I$(srcdir)/../../include -I$(srcdir)/../../os -I$(srcdir)/../../OPTYap -I$(srcdir)/../../BEAM -I$(srcdir)/../../CXX -CXXFLAGS= @SHLIB_CXXFLAGS@ $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS) +CPPFLAGS= -I../.. -I$(srcdir)/../../H -I$(srcdir)/../../include -I$(srcdir)/../../os -I$(srcdir)/../../OPTYap -I$(srcdir)/../../BEAM -I$(srcdir)/../../CXX +CXXFLAGS= $(YAP_EXTRAS) $(DEFS) $(CPPFLAGS) PROGRAMS= $(srcdir)/python/demo.py \ @@ -26,7 +26,7 @@ python/_yap.so: python/yap_wrap.o python/yap_wrap.c: $(srcdir)/yap.i mkdir -p python - $(SWIG) -c++ -python -outdir python -o $@ $(DEFS) $(CPPFLAGS) -Wall $< + $(SWIG) -c++ -python -outdir python -o $@ $(CXXFLAGS) -Wall $< python/yap_wrap.o: python/yap_wrap.c $(CXX) -c $(CXXFLAGS) @PYTHON_INCLUDES@ $< -o $@ @@ -35,10 +35,10 @@ java: jni/libyap.@SO@ java/yap.java cd java ; $(JAVAC) *.java; $(JAR) cvf yap.jar *.class jni/libyap.@SO@: jni/yap_wrap.o - $(CXX) -shared $(LDSOFLAGS) -L ../.. -lYap -o $@ ../../yapi.o $< $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread + $(CXX) -shared $(LDSOFLAGS) -o $@ ../../yapi.o $< $(LIBS) @JPLLDFLAGS@ -L ../.. -lYap -lpthread jni/yap_wrap.cpp: $(srcdir)/yap.i - $(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir java -o $@ $(DEFS) $(CPPFLAGS) -Wall $< + $(SWIG) -c++ -java -package pt.up.fc.dcc.yap -outdir java -o $@ $(CXXFLAGS) -Wall $< jni/yap_wrap.o: jni/yap_wrap.cpp $(CXX) -c $(CXXFLAGS) @JPLCFLAGS@ $< -o $@ @@ -51,16 +51,18 @@ jni/yap_wrap.o: jni/yap_wrap.cpp # adb install bin/SwigSimple-debug.apk # # -android: android/jni/yap_wrap.cpp +android: android/jni/yap_wrap.cpp android/jni/yap_wrap.cpp: $(srcdir)/yap.i - android create project --target 1 --name SwigSimple --path ./android --activity SwigSimple --package org.swig.simple - ( cd android ; mkdir -p jni; mkdir -p assets/share/Yap; mkdir -p assets/lib/Yap;\ - $(SWIG) -c++ -java -I$(srcdir)/../../CXX -package org.swig.simple -outdir src/org/swig/simple -o jni/yap_wrap.cpp $< ;\ + android create project --target 1 --name SwigSimple --path ./android --activity SwigSimple --package org.swig.simple;\ + ( cd android ; mkdir -p jni jni/lib; mkdir -p assets/share/Yap; mkdir -p assets/lib/Yap;\ + $(SWIG) -c++ -java -I$(srcdir)/../../CXX -package org.swig.simple -outdir src/org/swig/simple -o jni/yap_wrap.cpp $(CXXFLAGS) $< ;\ cp $(srcdir)/android/SwigSimple.java src/org/swig/simple/ ;\ cp $(srcdir)/android/main.xml res/layout ;\ + cp $(srcdir)/android/Application.mk jni ;\ cp -r $(DESTDIR)$(PLLIBDIR)/* assets/share/Yap;\ - cp -r $(DESTDIR)$(SOLIBDIR)/* assets/lib/Yap;\ + cp -r ../../../startup.yss assets/lib/Yap;\ + cp -r $(DESTDIR)$(SOLIBDIR)/*.so jni;\ cp ../Android.mk jni ;\ ndk-build; \ ant debug \ @@ -75,7 +77,7 @@ install: clean: - rm -f */* + rm -fr android/* jni/* java/* python/* distclean: clean rm -f *def Makefile diff --git a/packages/swig/android/Application.mk b/packages/swig/android/Application.mk index 242e06845..3589b8969 100644 --- a/packages/swig/android/Application.mk +++ b/packages/swig/android/Application.mk @@ -1,2 +1,4 @@ # File: Application.mk NDK_TOOLCHAIN_VERSION = 4.8 +APP_STL := gnustl_static +APP_CPPFLAGS += -fexceptions diff --git a/packages/swig/android/SwigSimple.java b/packages/swig/android/SwigSimple.java index 51179cfa7..bed6efcaf 100644 --- a/packages/swig/android/SwigSimple.java +++ b/packages/swig/android/SwigSimple.java @@ -11,79 +11,184 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.util.Log; import android.content.res.AssetManager; +import android.widget.EditText; public class SwigSimple extends Activity { - TextView outputText = null; - ScrollView scroller = null; + TextView outputText = null; + ScrollView scroller = null; YAPEngine eng = null; + EditText text; + String str; + String buf; - /** Called when the activity is first created. */ - @Override - public void onCreate(Bundle savedInstanceState) - { - - super.onCreate(savedInstanceState); - String s = "ugh"; - setContentView(R.layout.main); + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) + { + String s = null; + super.onCreate(savedInstanceState); + setContentView(R.layout.main); - try { - PackageManager m = getPackageManager(); - s = getPackageName(); - PackageInfo p = m.getPackageInfo(s, 0); - s = p.applicationInfo.dataDir; - mgr = getResources().getAssets(); - load(mgr); - } catch(NameNotFoundException e) { - Log.e(TAG, "Couldn't find package information in PackageManager", e); - } - - outputText = (TextView)findViewById(R.id.OutputText); - outputText.setText("Application " + s + "\nPress 'Run' to start...\n"); - outputText.setMovementMethod(new ScrollingMovementMethod()); - YAPParams p = new YAPParams(); - eng = new YAPEngine( p ); - - scroller = (ScrollView)findViewById(R.id.Scroller); - } + try { + PackageManager m = getPackageManager(); + s = getPackageName(); + PackageInfo p = m.getPackageInfo(s, 0); + //s = p.applicationInfo.dataDir; + AssetManager mgr = getResources().getAssets(); + load(mgr); + } catch(NameNotFoundException e) { + Log.e(TAG, "Couldn't find package information in PackageManager", e); + } + Log.i(TAG, "mgr=" +mgr); - public void onRunButtonClick(View view) - { - outputText.append("Started...\n"); - if (BuildConfig.DEBUG) { - Log.i(TAG, "onRunButtonClick called"); - } - outputText.append("Finished!\n"); + text = (EditText)findViewById(R.id.EditText01); + outputText = (TextView)findViewById(R.id.OutputText); + outputText.setText("Application " + s + "\nPress 'Run' to start...\n"); + outputText.setMovementMethod(new ScrollingMovementMethod()); + scroller = (ScrollView)findViewById(R.id.Scroller); + eng = new YAPEngine( ); + Log.i(TAG, "engine done"); + JavaCallback callback = new JavaCallback( outputText ); + // set the Java Callback + eng.setYAPCallback(callback); + if (BuildConfig.DEBUG) { + Log.i(TAG, "callback done"); + } + } - // Ensure scroll to end of text - scroller.post(new Runnable() { - public void run() { - scroller.fullScroll(ScrollView.FOCUS_DOWN); - String s = "['/assets/share/Yap/lists'].\n"; - outputText.append(s); - YAPQuery q = eng.query(s); - q.next(); - String s = "member(X, [1,2,3]).\n"; - outputText.append(s); - YAPQuery q = eng.query(s); - q.next(); - String sn = - } - }); - } + public void onResetButtonClick(View view) + { + if (BuildConfig.DEBUG) { + Log.i(TAG, "onReseButtonClick called"); + } + // Ensure scroll to end of text + scroller.post(new Runnable() { + public void run() { + scroller.fullScroll(ScrollView.FOCUS_DOWN); + text.setText(""); + } + }); + } + + public void onRunButtonClick(View view) + { + if (BuildConfig.DEBUG) { + Log.i(TAG, "onRunButtonClick called"); + } + // Ensure scroll to end of text + scroller.post(new Runnable() { + public void run() { + scroller.fullScroll(ScrollView.FOCUS_DOWN); + str = text.getText().toString(); + outputText.append("?- " + str); + YAPQuery q = eng.query( str ); + YAPListTerm vs = q.namedVars(); + // text.setText(""); + if (vs.nil()) { + if (q.next()) { + outputText.append( "yes\n" ); + } else { + outputText.append( "no\n" ); + } + } else { + while (q.next()) { + int i=1; + // outputText.append(Integer.toString(i++) + ": " + vs.text() +"\n"); + while(!vs.nil()){ + YAPTerm eq = vs.car(); + //outputText.append(Integer.toString(i) + ": " + eq.text() ); + outputText.append(Integer.toString(i++) + ":\t" + eq.getArg(1).text() + " = " + eq.getArg(2).text() +"\n" ); + vs = vs.cdr(); + } + } + } + q.close(); + } + }); + } + + public void onRunSelectionButtonClick(View view) + { + if (BuildConfig.DEBUG) { + Log.i(TAG, "onRunButtonClick called"); + } + // Ensure scroll to end of text + scroller.post(new Runnable() { + public void run() { + scroller.fullScroll(ScrollView.FOCUS_DOWN); + int startSelection = text.getSelectionStart(); + int endSelection = text.getSelectionEnd(); + str = text.getText().toString().substring( startSelection, endSelection ); + outputText.append("?- " + str); + YAPQuery q = eng.query( str ); + YAPListTerm vs = q.namedVars(); + // text.setText(""); + if (vs.nil()) { + if (q.next()) { + outputText.append( "yes\n" ); + } else { + outputText.append( "no\n" ); + } + } else { + while (q.next()) { + int i=1; + // outputText.append(Integer.toString(i++) + ": " + vs.text() +"\n"); + while(!vs.nil()){ + YAPTerm eq = vs.car(); + //outputText.append(Integer.toString(i) + ": " + eq.text() ); + outputText.append(Integer.toString(i++) + ":\t" + eq.getArg(1).text() + " = " + eq.getArg(2).text() +"\n" ); + vs = vs.cdr(); + } + } + } + q.close(); + } + }); + } - /** static constructor */ - static { - System.loadLibrary("android"); - System.loadLibrary("log"); - System.loadLibrary("example"); - } - - private static native void load(AssetManager mgr); + /** static constructor */ + static { + System.loadLibrary("android"); + System.loadLibrary("log"); + System.loadLibrary("gmp"); + System.loadLibrary("example"); + } - private AssetManager mgr; + private static native void load(AssetManager mgr); - private static final String TAG = "SwigSimple"; + private AssetManager mgr; + + private static final String TAG = "SwigSimple"; + +} + +class JavaCallback extends YAPCallback +{ + TextView output; + + public JavaCallback( TextView outputText ) + { + super(); + output = outputText; + Log.i(TAG, "java callback init"); + } + + + public void run() + { + System.out.println("JavaCallback.run() "); + Log.i(TAG, "java callback "); + } + + public void displayInWindow(String s) + { + System.out.println("JavaCallback.run() "); + Log.i(TAG, "java callback "); + output.append(s); + } + + private static final String TAG = "JavaCallback"; } diff --git a/packages/swig/android/main.xml b/packages/swig/android/main.xml index 786da0304..52656971b 100644 --- a/packages/swig/android/main.xml +++ b/packages/swig/android/main.xml @@ -1,9 +1,19 @@ - + + +