support for the common global trie (version GT-T: global trie for terms)
This commit is contained in:
@@ -46,6 +46,7 @@ ma_h_inner_struct *Yap_ma_h_top;
|
||||
** Local macros **
|
||||
** ---------------------- */
|
||||
|
||||
#ifdef SHM_MEMORY_ALLOC_SCHEME
|
||||
#define STRUCTS_PER_PAGE(STR_TYPE) ((Yap_page_size - STRUCT_SIZE(struct page_header)) / STRUCT_SIZE(STR_TYPE))
|
||||
|
||||
#define INIT_PAGES(PG, STR_TYPE) \
|
||||
@@ -54,6 +55,9 @@ ma_h_inner_struct *Yap_ma_h_top;
|
||||
Pg_str_in_use(PG) = 0; \
|
||||
Pg_str_per_pg(PG) = STRUCTS_PER_PAGE(STR_TYPE); \
|
||||
Pg_free_pg(PG) = NULL
|
||||
#else
|
||||
#define INIT_PAGES(PG, STR_TYPE) Pg_str_in_use(PG) = 0
|
||||
#endif /* SHM_MEMORY_ALLOC_SCHEME */
|
||||
|
||||
|
||||
|
||||
@@ -82,12 +86,16 @@ void Yap_init_global(int max_table_size, int n_workers, int sch_loop, int delay_
|
||||
INIT_PAGES(GLOBAL_PAGES_tg_ans_fr, struct table_subgoal_answer_frame);
|
||||
#endif /* TABLING_INNER_CUTS */
|
||||
#ifdef TABLING
|
||||
#ifdef GLOBAL_TRIE
|
||||
INIT_PAGES(GLOBAL_PAGES_gt_node, struct global_trie_node);
|
||||
INIT_PAGES(GLOBAL_PAGES_gt_hash, struct global_trie_hash);
|
||||
#endif /* GLOBAL_TRIE */
|
||||
INIT_PAGES(GLOBAL_PAGES_tab_ent, struct table_entry);
|
||||
INIT_PAGES(GLOBAL_PAGES_sg_fr, struct subgoal_frame);
|
||||
INIT_PAGES(GLOBAL_PAGES_sg_node, struct subgoal_trie_node);
|
||||
INIT_PAGES(GLOBAL_PAGES_ans_node, struct answer_trie_node);
|
||||
INIT_PAGES(GLOBAL_PAGES_sg_hash, struct subgoal_hash);
|
||||
INIT_PAGES(GLOBAL_PAGES_ans_hash, struct answer_hash);
|
||||
INIT_PAGES(GLOBAL_PAGES_sg_hash, struct subgoal_trie_hash);
|
||||
INIT_PAGES(GLOBAL_PAGES_ans_hash, struct answer_trie_hash);
|
||||
INIT_PAGES(GLOBAL_PAGES_dep_fr, struct dependency_frame);
|
||||
#endif /* TABLING */
|
||||
#if defined(YAPOR) && defined(TABLING)
|
||||
@@ -141,6 +149,9 @@ void Yap_init_global(int max_table_size, int n_workers, int sch_loop, int delay_
|
||||
#ifdef TABLING
|
||||
/* global data related to tabling */
|
||||
GLOBAL_root_tab_ent = NULL;
|
||||
#ifdef GLOBAL_TRIE
|
||||
new_global_trie_node(GLOBAL_root_gt, 0, NULL, NULL, NULL);
|
||||
#endif /* GLOBAL_TRIE */
|
||||
#ifdef LIMIT_TABLING
|
||||
GLOBAL_first_sg_fr = NULL;
|
||||
GLOBAL_last_sg_fr = NULL;
|
||||
|
Reference in New Issue
Block a user