2010-04-03 05:58:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/************************************************************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                                                                      * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                    The  YapTab / YapOr / OPTYap  systems                    * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                                                                      * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *  YapTab  extends  the  Yap  Prolog  engine  to  support  sequential  tabling   * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *  YapOr  extends  the  Yap  Prolog  engine  to  support  or - parallelism        * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *  OPTYap  extends  the  Yap  Prolog  engine  to  support  or - parallel  tabling  * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                                                                      * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                                                                      * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       Yap  Prolog  was  developed  at  University  of  Porto ,  Portugal       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *                                                                      * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/************************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       Includes  &  Prototypes       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "Yap.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(YAPOR) || defined(TABLING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "Yatom.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-10-23 14:22:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "YapHeap.h" 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "SWI-Prolog.h" 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-06-01 18:51:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_STRING_H 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* HAVE_STRING_H */ 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# if HAVE_SYS_TIME_H 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <sys/time.h> 
  
						 
					
						
							
								
									
										
										
										
											2005-06-03 18:28:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* HAVE_SYS_TIME_H */ 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "or.macros.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "tab.macros.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_freeze_choice_point (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_wake_choice_point (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_abolish_frozen_choice_points_until (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_abolish_frozen_choice_points_all (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_table (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_tabling_mode (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_abolish_table (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_abolish_all_tables (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_tabled_predicates (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_table (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_all_tables (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_global_trie (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_statistics_table (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_statistics_tabling (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_show_statistics_global_trie (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_parallel_mode (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_yapor_start (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_yapor_workers (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_worker (  USES_REGS1  ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  Int  p_parallel_new_answer (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2012-01-05 16:04:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_parallel_get_answers (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_or (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_opt (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_get_optyap_statistics (  USES_REGS1  ) ;  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  realtime  current_time ( void ) ;  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_entries ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) || defined(THREADS_CONSUMER_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_entries ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING || THREADS_CONSUMER_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_dependency_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_trie_nodes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_trie_hashes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_trie_nodes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_trie_hashes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_ref_nodes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_global_trie_nodes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_global_trie_hashes ( IOSTREAM  * out ) ;  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_or_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_query_goal_solution_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_query_goal_answer_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_suspension_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING_INNER_CUTS 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_subgoal_solution_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_subgoal_answer_frames ( IOSTREAM  * out ) ;  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING_INNER_CUTS */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-03 05:58:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/************************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       Macros  &  Declarations       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  page_statistics  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  long  pages_in_use ;     /* same as struct pages (opt.structs.h) */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  long  structs_in_use ;   /* same as struct pages (opt.structs.h) */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  long  bytes_in_use ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define PgEnt_bytes_in_use(STATS)  STATS.bytes_in_use 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef DEBUG_TABLING 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CHECK_PAGE_FREE_STRUCTS(STR_TYPE, PAGE)                                            \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        {  pg_hd_ptr  pg_hd ;                                                                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          STR_TYPE  * aux_ptr ;                                                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          long  cont  =  0 ;                                                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          pg_hd  =  PgEnt_first ( PAGE ) ;                                                        \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          while  ( pg_hd )  {                                                                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            aux_ptr  =  PgHd_first_str ( pg_hd ) ;                                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( aux_ptr )  {                                                               \
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              cont + + ;                                                                       \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              aux_ptr  =  aux_ptr - > next ;                                                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }                                                                               \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pg_hd  =  PgHd_next ( pg_hd ) ;                                                       \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }                                                                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          TABLING_ERROR_CHECKING ( CHECK_PAGE_FREE_STRUCTS ,  PgEnt_strs_free ( PAGE )  ! =  cont ) ;   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CHECK_PAGE_FREE_STRUCTS(STR_TYPE, PAGE) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* DEBUG_TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define INIT_PAGE_STATS(STATS)                                  \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_pages_in_use ( STATS )  =  0 ;                           \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_strs_in_use ( STATS )  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define INCREMENT_PAGE_STATS(STATS, PAGE)                       \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_pages_in_use ( STATS )  + =  PgEnt_pages_in_use ( PAGE ) ;   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_strs_in_use ( STATS )  + =  PgEnt_strs_in_use ( PAGE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define INCREMENT_AUX_STATS(STATS, BYTES, PAGES)                \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        BYTES  + =  PgEnt_bytes_in_use ( STATS ) ;                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PAGES  + =  PgEnt_pages_in_use ( STATS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define SHOW_PAGE_STATS_MSG(STR_NAME)          "  " STR_NAME "   %10ld bytes (%ld pages and %ld structs in use)\n" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define SHOW_PAGE_STATS_ARGS(STATS, STR_TYPE)  PgEnt_strs_in_use(STATS) * sizeof(STR_TYPE), PgEnt_pages_in_use(STATS), PgEnt_strs_in_use(STATS) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else  /* !USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CHECK_PAGE_FREE_STRUCTS(STR_TYPE, PAGE) 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define INIT_PAGE_STATS(STATS)                                  \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_strs_in_use ( STATS )  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define INCREMENT_PAGE_STATS(STATS, PAGE)                       \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_strs_in_use ( STATS )  + =  PgEnt_strs_in_use ( PAGE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define INCREMENT_AUX_STATS(STATS, BYTES, PAGES)                \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        BYTES  + =  PgEnt_bytes_in_use ( STATS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define SHOW_PAGE_STATS_MSG(STR_NAME)          "  " STR_NAME "   %10ld bytes (%ld structs in use)\n" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define SHOW_PAGE_STATS_ARGS(STATS, STR_TYPE)  PgEnt_strs_in_use(STATS) * sizeof(STR_TYPE), PgEnt_strs_in_use(STATS) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 16:51:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(THREADS) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define GET_ALL_PAGE_STATS(STATS, STR_TYPE, _PAGES)                    \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LOCK ( GLOBAL_ThreadHandlesLock ) ;                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CHECK_PAGE_FREE_STRUCTS ( STR_TYPE ,  GLOBAL # # _PAGES ) ;              \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        INCREMENT_PAGE_STATS ( STATS ,  GLOBAL # # _PAGES ) ;                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        {  int  wid ;                                                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          for  ( wid  =  0 ;  wid  <  MAX_THREADS ;  wid + + )  {                     \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( !  Yap_local [ wid ] )                                       \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              break ;                                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( REMOTE_ThreadHandle ( wid ) . in_use )  {                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              CHECK_PAGE_FREE_STRUCTS ( STR_TYPE ,  REMOTE # # _PAGES ( wid ) ) ;   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              INCREMENT_PAGE_STATS ( STATS ,  REMOTE # # _PAGES ( wid ) ) ;         \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }                                                           \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }                                                             \
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }                                                               \
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        UNLOCK ( GLOBAL_ThreadHandlesLock ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define GET_ALL_PAGE_STATS(STATS, STR_TYPE, _PAGES)                    \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CHECK_PAGE_FREE_STRUCTS ( STR_TYPE ,  GLOBAL # # _PAGES ) ;              \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        INCREMENT_PAGE_STATS ( STATS ,  GLOBAL # # _PAGES ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define GET_PAGE_STATS(STATS, STR_TYPE, _PAGES)                                 \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        INIT_PAGE_STATS ( STATS ) ;                                                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        GET_ALL_PAGE_STATS ( STATS ,  STR_TYPE ,  _PAGES ) ;                             \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PgEnt_bytes_in_use ( STATS )  =  PgEnt_strs_in_use ( STATS )  *  sizeof ( STR_TYPE ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define SHOW_PAGE_STATS(OUT_STREAM, STR_TYPE, _PAGES, STR_NAME)                                               \ 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        {  struct  page_statistics  stats ;                                                                 \
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          GET_PAGE_STATS ( stats ,  STR_TYPE ,  _PAGES ) ;                                                        \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Sfprintf ( OUT_STREAM ,  SHOW_PAGE_STATS_MSG ( STR_NAME ) ,  SHOW_PAGE_STATS_ARGS ( stats ,  STR_TYPE ) ) ;   \
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return  stats ;                                                                                 \
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-03 05:58:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*******************************
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								* *       Global  functions       * *  
						 
					
						
							
								
									
										
										
										
											2010-04-03 05:58:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-11-26 22:19:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  Yap_init_optyap_preds ( void )  {  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2010-03-09 14:48:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " freeze_choice_point " ,  1 ,  p_freeze_choice_point ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " wake_choice_point " ,  1 ,  p_wake_choice_point ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-18 17:34:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " abolish_frozen_choice_points " ,  1 ,  p_abolish_frozen_choice_points_until ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " abolish_frozen_choice_points " ,  0 ,  p_abolish_frozen_choice_points_all ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-19 18:11:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_table " ,  3 ,  p_table ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_tabling_mode " ,  3 ,  p_tabling_mode ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_abolish_table " ,  2 ,  p_abolish_table ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " abolish_all_tables " ,  0 ,  p_abolish_all_tables ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-11 14:06:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/** @pred abolish_all_tables/0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Removes  all  the  entries  from  the  table  space  for  all  tabled  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								predicates .  The  predicates  remain  as  tabled  predicates .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " show_tabled_predicates " ,  1 ,  p_show_tabled_predicates ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-19 18:11:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_show_table " ,  3 ,  p_show_table ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " show_all_tables " ,  1 ,  p_show_all_tables ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " show_global_trie " ,  1 ,  p_show_global_trie ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-19 18:11:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_table_statistics " ,  3 ,  p_show_statistics_table ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " tabling_statistics " ,  1 ,  p_show_statistics_tabling ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " global_trie_statistics " ,  1 ,  p_show_statistics_global_trie ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " parallel_mode " ,  1 ,  p_parallel_mode ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-19 18:11:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_yapor_start " ,  0 ,  p_yapor_start ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_yapor_workers " ,  1 ,  p_yapor_workers ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_worker " ,  0 ,  p_worker ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_parallel_new_answer " ,  1 ,  p_parallel_new_answer ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_parallel_get_answers " ,  1 ,  p_parallel_get_answers ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " or_statistics " ,  1 ,  p_show_statistics_or ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " opt_statistics " ,  1 ,  p_show_statistics_opt ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2012-10-19 18:11:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Yap_InitCPred ( " $c_get_optyap_statistics " ,  3 ,  p_get_optyap_statistics ,  SafePredFlag | SyncPredFlag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  finish_yapor ( void )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-10 11:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  GLOBAL_execution_time  =  current_time ( )  -  GLOBAL_execution_time ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  GLOBAL_parallel_mode  =  PARALLEL_MODE_ON ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***********************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       Tabling  C  Predicates       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
									
										
										
										
											2010-01-14 15:58:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_freeze_choice_point (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-05-18 17:34:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( Deref ( ARG1 ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Int  offset  =  freeze_current_cp ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Yap_unify ( ARG1 ,  MkIntegerTerm ( offset ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_wake_choice_point (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-05-18 17:34:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  term_offset  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsIntegerTerm ( term_offset ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wake_frozen_cp ( IntegerOfTerm ( term_offset ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_abolish_frozen_choice_points_until (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-05-18 17:34:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  term_offset  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsIntegerTerm ( term_offset ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abolish_frozen_cps_until ( IntegerOfTerm ( term_offset ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_abolish_frozen_choice_points_all (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-05-18 17:34:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  abolish_frozen_cps_all ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_table (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  mod ,  t ,  list ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-05 16:12:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PredEntry  * pe ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Atom  at ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  arity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef MODE_DIRECTED_TABLING 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int *  mode_directed  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* MODE_DIRECTED_TABLING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  mod  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  list  =  Deref ( ARG3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    at  =  AtomOfTerm ( t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-11-15 00:01:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pe  =  RepPredProp ( PredPropByAtom ( at ,  mod ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    arity  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  }  else  if  ( IsApplTerm ( t ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    at  =  NameOfFunctor ( FunctorOfTerm ( t ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pe  =  RepPredProp ( PredPropByFunc ( FunctorOfTerm ( t ) ,  mod ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    arity  =  ArityOfFunctor ( FunctorOfTerm ( t ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( list  ! =  TermNil )  {   /* non-empty list */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef MODE_DIRECTED_TABLING 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Yap_Error ( INTERNAL_COMPILER_ERROR ,  TermNil ,  " invalid tabling declaration for %s/%d (mode directed tabling not enabled) " ,  AtomName ( at ) ,  arity ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-22 16:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else  
  
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /*************************************************************************************
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      The  mode  operator  declaration  is  reordered  as  follows : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         1.  arguments  with  mode  ' index '          ( any  number ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         2.  arguments  with  mode  ' min '  and  ' max '  ( any  number ,  following  the  original  order ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         3.  arguments  with  mode  ' all '            ( any  number ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         4.  arguments  with  mode  ' sum '  or  ' last '  ( only  one  of  the  two  is  allowed ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         5.  arguments  with  mode  ' first '          ( any  number ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  pos_index  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  pos_min_max  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  pos_all  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  pos_sum_last  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  pos_first  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  * aux_mode_directed ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    aux_mode_directed  =  malloc ( arity  *  sizeof ( int ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( i  =  0 ;  i  <  arity ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      int  mode  =  IntOfTerm ( HeadOfTerm ( list ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( mode  = =  MODE_DIRECTED_INDEX ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pos_index + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( mode  = =  MODE_DIRECTED_MIN  | |  mode  = =  MODE_DIRECTED_MAX ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pos_min_max + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( mode  = =  MODE_DIRECTED_ALL ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pos_all + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( mode  = =  MODE_DIRECTED_SUM  | |  mode  = =  MODE_DIRECTED_LAST )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( pos_sum_last )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          free ( aux_mode_directed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Yap_Error ( INTERNAL_COMPILER_ERROR ,  TermNil ,  " invalid tabling declaration for %s/%d (more than one argument with modes 'sum' and/or 'last') " ,  AtomName ( at ) ,  arity ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ( FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          pos_sum_last  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      aux_mode_directed [ i ]  =  mode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      list  =  TailOfTerm ( list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos_first  =  pos_index  +  pos_min_max  +  pos_all  +  pos_sum_last ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos_sum_last  =  pos_index  +  pos_min_max  +  pos_all ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos_all  =  pos_index  +  pos_min_max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pos_min_max  =  pos_index ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pos_index  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ALLOC_BLOCK ( mode_directed ,  arity  *  sizeof ( int ) ,  int ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( i  =  0 ;  i  <  arity ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-15 16:57:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      int  aux_pos  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( aux_mode_directed [ i ]  = =  MODE_DIRECTED_INDEX ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        aux_pos  =  pos_index + + ;         
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( aux_mode_directed [ i ]  = =  MODE_DIRECTED_MIN  | |  aux_mode_directed [ i ]  = =  MODE_DIRECTED_MAX ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        aux_pos  =  pos_min_max + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( aux_mode_directed [ i ]  = =  MODE_DIRECTED_ALL ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        aux_pos  =  pos_all + + ;                 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if  ( aux_mode_directed [ i ]  = =  MODE_DIRECTED_SUM  | |  aux_mode_directed [ i ]  = =  MODE_DIRECTED_LAST ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        aux_pos  =  pos_sum_last + + ;         
							 
						 
					
						
							
								
									
										
										
										
											2012-06-04 19:27:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else  if ( aux_mode_directed [ i ]  = =  MODE_DIRECTED_FIRST ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        aux_pos  =  pos_first + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      mode_directed [ aux_pos ]  =  MODE_DIRECTED_SET ( i ,  aux_mode_directed [ i ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-22 16:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    free ( aux_mode_directed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 15:13:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* MODE_DIRECTED_TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2011-10-22 16:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pe - > PredFlags  &  TabledPredFlag ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( TRUE ) ;   /* predicate already tabled */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pe - > cs . p_code . FirstClause ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ;   /* predicate already compiled */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pe - > PredFlags  | =  TabledPredFlag ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-09 11:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  new_table_entry ( tab_ent ,  pe ,  at ,  arity ,  mode_directed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-22 16:49:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  pe - > TableOfPred  =  tab_ent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_tabling_mode (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  mod ,  t ,  tvalue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-05 16:12:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  mod  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByAtom ( AtomOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( IsApplTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByFunc ( FunctorOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tvalue  =  Deref ( ARG3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( tvalue ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    t  =  TermNil ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_LocalTrie ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLocalTrie ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_GlobalTrie ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomGlobalTrie ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_ExecAnswers ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomExecAnswers ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_LoadAnswers ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLoadAnswers ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_Batched ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomBatched ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_Local ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLocal ) ,  t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( IsMode_CoInductive ( TabEnt_flags ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomCoInductive ) ,  t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    t  =  MkPairTerm ( MkAtomTerm ( AtomDefault ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    t  =  MkPairTerm ( t ,  TermNil ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_LocalTrie ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLocalTrie ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_GlobalTrie ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomGlobalTrie ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_ExecAnswers ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomExecAnswers ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_LoadAnswers ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLoadAnswers ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( IsMode_Batched ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomBatched ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( IsMode_Local ( TabEnt_mode ( tab_ent ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( MkAtomTerm ( AtomLocal ) ,  t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 11:32:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    YapBind ( ( CELL  * )  tvalue ,  t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  else  if  ( IsIntTerm ( tvalue ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Int  value  =  IntOfTerm ( tvalue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  = =  1 )  {   /* batched */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_Batched ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_Local ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_Batched ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( value  = =  2 )  {   /* local */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_Local ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_Batched ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_Local ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( value  = =  3 )  {   /* exec_answers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_ExecAnswers ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_LoadAnswers ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_ExecAnswers ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( value  = =  4 )  {   /* load_answers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_LoadAnswers ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_ExecAnswers ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_LoadAnswers ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( value  = =  5 )  {   /* local_trie */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_LocalTrie ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_GlobalTrie ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_LocalTrie ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if  ( value  = =  6 )  {   /* global_trie */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_GlobalTrie ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( !  IsMode_LocalTrie ( yap_flags [ TABLING_MODE_FLAG ] ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SetMode_GlobalTrie ( TabEnt_mode ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-20 14:56:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }   else  if  ( value  = =  7 )  {   /* coinductive */  //only affect the predicate flag. Also it cant be unset
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SetMode_CoInductive ( TabEnt_flags ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_abolish_table (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  mod ,  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  mod  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByAtom ( AtomOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( IsApplTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByFunc ( FunctorOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  abolish_table ( tab_ent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_abolish_all_tables (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 11:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent  =  GLOBAL_root_tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-05 16:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  while  ( tab_ent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    abolish_table ( tab_ent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    tab_ent  =  TabEnt_next ( tab_ent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_tabled_predicates (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 11:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent  =  GLOBAL_root_tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Tabled predicates \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( tab_ent  = =  NULL ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Sfprintf ( out ,  "   NONE \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  else  while ( tab_ent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Sfprintf ( out ,  "   %s/%d \n " ,  AtomName ( TabEnt_atom ( tab_ent ) ) ,  TabEnt_arity ( tab_ent ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  TabEnt_next ( tab_ent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_table (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  mod ,  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t1  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t1 )  | |  ! IsAtomTerm ( t1 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t1 ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  mod  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByAtom ( AtomOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( IsApplTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByFunc ( FunctorOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  show_table ( tab_ent ,  SHOW_MODE_STRUCTURE ,  out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_all_tables (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 11:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  tab_ent  =  GLOBAL_root_tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  while ( tab_ent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show_table ( tab_ent ,  SHOW_MODE_STRUCTURE ,  out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    tab_ent  =  TabEnt_next ( tab_ent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_global_trie (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  show_global_trie ( SHOW_MODE_STRUCTURE ,  out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_table (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  mod ,  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab_ent_ptr  tab_ent ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t1  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t1 )  | |  ! IsAtomTerm ( t1 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t1 ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  mod  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByAtom ( AtomOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else  if  ( IsApplTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tab_ent  =  RepPredProp ( PredPropByFunc ( FunctorOfTerm ( t ) ,  mod ) ) - > TableOfPred ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  show_table ( tab_ent ,  SHOW_MODE_STATISTICS ,  out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_tabling (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  struct  page_statistics  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  bytes ,  total_bytes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  total_pages  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Execution data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_table_entries ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) || defined(THREADS_CONSUMER_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_entries ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING || THREADS_CONSUMER_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_dependency_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (I):               %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Local trie data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_ref_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (II):              %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Global trie data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_global_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_global_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (III):             %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II+III):    %10ld bytes (%ld pages in use) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          total_bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory allocated:            %10ld bytes (%ld pages in total) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          PgEnt_pages_in_use ( GLOBAL_pages_alloc )  *  Yap_page_size ,  PgEnt_pages_in_use ( GLOBAL_pages_alloc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else  
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II+III):    %10ld bytes \n " ,  total_bytes ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_global_trie (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  show_global_trie ( SHOW_MODE_STATISTICS ,  out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-23 04:22:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-07-28 00:30:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2010-04-23 04:22:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*********************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       YapOr  C  Predicates       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_parallel_mode (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Term  ta ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( GLOBAL_parallel_mode  = =  PARALLEL_MODE_OFF )  
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      ta  =  MkAtomTerm ( Yap_LookupAtom ( " off " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else  if  ( GLOBAL_parallel_mode  = =  PARALLEL_MODE_ON )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ta  =  MkAtomTerm ( Yap_LookupAtom ( " on " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  /* PARALLEL_MODE_RUNNING */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ta  =  MkAtomTerm ( Yap_LookupAtom ( " running " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 11:32:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    YapBind ( ( CELL  * ) t ,  ta ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsAtomTerm ( t )  & &  GLOBAL_parallel_mode  ! =  PARALLEL_MODE_RUNNING )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  * s ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    s  =  RepAtom ( AtomOfTerm ( t ) ) - > StrOfAE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strcmp ( s , " on " )  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      GLOBAL_parallel_mode  =  PARALLEL_MODE_ON ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strcmp ( s , " off " )  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      GLOBAL_parallel_mode  =  PARALLEL_MODE_OFF ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return ( FALSE ) ;  /* PARALLEL_MODE_RUNNING */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return ( FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_yapor_start (  USES_REGS1  )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TIMESTAMP_CHECK 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  GLOBAL_timestamp  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* TIMESTAMP_CHECK */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BITMAP_delete ( GLOBAL_bm_idle_workers ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BITMAP_clear ( GLOBAL_bm_invisible_workers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BITMAP_clear ( GLOBAL_bm_requestable_workers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING_INNER_CUTS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BITMAP_clear ( GLOBAL_bm_pruning_workers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* TABLING_INNER_CUTS */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  make_root_choice_point ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  GLOBAL_parallel_mode  =  PARALLEL_MODE_RUNNING ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  GLOBAL_execution_time  =  current_time ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BITMAP_clear ( GLOBAL_bm_finished_workers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_yapor_workers (  USES_REGS1  )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR_THREADS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  Yap_unify ( MkIntegerTerm ( GLOBAL_number_workers ) , ARG1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR_THREADS */ 
  
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-21 15:19:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_worker (  USES_REGS1  )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  CurrentModule  =  USER_MODULE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  P  =  GETWORK_FIRST_TIME ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  TRUE ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_parallel_new_answer (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2012-01-05 16:04:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  qg_ans_fr_ptr  actual_answer ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  or_fr_ptr  leftmost_or_fr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ALLOC_QG_ANSWER_FRAME ( actual_answer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-01-05 16:04:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  AnsFr_answer ( actual_answer )  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  AnsFr_next ( actual_answer )  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  leftmost_or_fr  =  CUT_leftmost_or_frame ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LOCK_OR_FRAME ( leftmost_or_fr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 11:01:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( Get_LOCAL_prune_request ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    UNLOCK_OR_FRAME ( leftmost_or_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FREE_QG_ANSWER_FRAME ( actual_answer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CUT_store_answer ( leftmost_or_fr ,  actual_answer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    UNLOCK_OR_FRAME ( leftmost_or_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-01-05 16:04:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_parallel_get_answers (  USES_REGS1  ) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Term  t  =  TermNil ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( OrFr_qg_solutions ( LOCAL_top_or_fr ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    qg_ans_fr_ptr  aux_answer1 ,  aux_answer2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    aux_answer1  =  SolFr_first ( OrFr_qg_solutions ( LOCAL_top_or_fr ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( aux_answer1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      t  =  MkPairTerm ( AnsFr_answer ( aux_answer1 ) ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      aux_answer2  =  aux_answer1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      aux_answer1  =  AnsFr_next ( aux_answer1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      FREE_QG_ANSWER_FRAME ( aux_answer2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FREE_QG_SOLUTION_FRAME ( OrFr_qg_solutions ( LOCAL_top_or_fr ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    OrFr_qg_solutions ( LOCAL_top_or_fr )  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_unify ( ARG1 ,  t ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_or (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  struct  page_statistics  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  bytes ,  total_bytes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  total_pages  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Execution data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_or_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (I):               %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Cut support data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_query_goal_solution_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_query_goal_answer_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (II):              %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
									
										
										
										
											2011-06-02 17:01:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II):        %10ld bytes (%ld pages in use) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          total_bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory allocated:            %10ld bytes (%ld pages in total) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          PgEnt_pages_in_use ( GLOBAL_pages_alloc )  *  Yap_page_size ,  PgEnt_pages_in_use ( GLOBAL_pages_alloc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else  
  
						 
					
						
							
								
									
										
										
										
											2011-06-02 17:01:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II):        %10ld bytes \n " ,  total_bytes ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**********************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       OPTYap  C  Predicates       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_show_statistics_opt (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  struct  page_statistics  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  bytes ,  total_bytes  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  long  total_pages  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2012-04-23 15:39:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IOSTREAM  * out ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  t  =  Deref ( ARG1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-18 11:01:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( t )  | |  ! IsAtomTerm ( t ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! ( out  =  Yap_GetStreamHandle ( AtomOfTerm ( t ) ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  FALSE ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Execution data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_table_entries ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) || defined(THREADS_CONSUMER_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_entries ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING || THREADS_CONSUMER_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_dependency_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_or_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_suspension_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (I):               %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Local trie data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_subgoal_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_answer_ref_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (II):              %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Global trie data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_global_trie_nodes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_global_trie_hashes ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (III):             %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bytes  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Cut support data structures \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_query_goal_solution_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_query_goal_answer_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING_INNER_CUTS 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  stats  =  show_statistics_table_subgoal_solution_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  stats  =  show_statistics_table_subgoal_answer_frames ( out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  INCREMENT_AUX_STATS ( stats ,  bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING_INNER_CUTS */ 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  "   Memory in use (IV):              %10ld bytes \n \n " ,  bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  total_bytes  + =  bytes ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II+III+IV): %10ld bytes (%ld pages in use) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          total_bytes ,  total_pages ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory allocated:            %10ld bytes (%ld pages in total) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          PgEnt_pages_in_use ( GLOBAL_pages_alloc )  *  Yap_page_size ,  PgEnt_pages_in_use ( GLOBAL_pages_alloc ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else  
  
						 
					
						
							
								
									
										
										
										
											2011-05-25 18:38:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sfprintf ( out ,  " Total memory in use (I+II+III+IV): %10ld bytes \n " ,  total_bytes ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 09:48:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
									
										
										
										
											2011-07-26 15:26:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  PL_release_stream ( out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 16:02:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  Int  p_get_optyap_statistics (  USES_REGS1  )  {  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  struct  page_statistics  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Int  value ,  bytes  =  0 ,  structs  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Term  tbytes ,  tstructs ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-18 17:35:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  value  =  IntOfTerm ( Deref ( ARG1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  1 )  {   /* table_entries */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  table_entry ,  _pages_tab_ent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-18 17:35:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) || defined(THREADS_CONSUMER_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  16 )  {   /* subgoal_entries */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  subgoal_entry ,  _pages_sg_ent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  2 )  {   /* subgoal_frames */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  subgoal_frame ,  _pages_sg_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-18 17:35:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  3 )  {   /* dependency_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  dependency_frame ,  _pages_dep_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-07 17:56:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  6 )  {   /* subgoal_trie_nodes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  subgoal_trie_node ,  _pages_sg_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  8 )  {   /* subgoal_trie_hashes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  subgoal_trie_hash ,  _pages_sg_hash ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  7 )  {   /* answer_trie_nodes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  answer_trie_node ,  _pages_ans_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  9 )  {   /* answer_trie_hashes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  answer_trie_hash ,  _pages_ans_hash ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  17 )  {   /* answer_ref_nodes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  answer_ref_node ,  _pages_ans_ref_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  10 )  {   /* global_trie_nodes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  global_trie_node ,  _pages_gt_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  11 )  {   /* global_trie_hashes */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  global_trie_hash ,  _pages_gt_hash ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  4 )  {   /* or_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  or_frame ,  _pages_or_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-05 16:12:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  12 )  {   /* query_goal_solution_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  query_goal_solution_frame ,  _pages_qg_sol_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  13 )  {   /* query_goal_answer_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  query_goal_answer_frame ,  _pages_qg_ans_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  5 )  {   /* suspension_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  suspension_frame ,  _pages_susp_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef TABLING_INNER_CUTS 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  14 )  {   /* table_subgoal_solution_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  table_subgoal_solution_frame ,  _pages_tg_sol_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( value  = =  0  | |  value  = =  15 )  {   /* table_subgoal_answer_frames */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    GET_PAGE_STATS ( stats ,  struct  table_subgoal_answer_frame ,  _pages_tg_ans_fr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bytes  + =  PgEnt_bytes_in_use ( stats ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ! =  0 )  structs  =  PgEnt_strs_in_use ( stats ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-17 17:14:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING_INNER_CUTS */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( value  = =  0 )  {   /* total_memory */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef USE_PAGES_MALLOC 
  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    structs  =  PgEnt_pages_in_use ( GLOBAL_pages_alloc )  *  Yap_page_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-07 13:53:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    structs  =  bytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* USE_PAGES_MALLOC */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( structs  = =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tbytes  =  Deref ( ARG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tstructs  =  Deref ( ARG3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( tbytes ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 11:32:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    YapBind ( ( CELL  * )  tbytes ,  MkIntTerm ( bytes ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  else  if  ( IsIntTerm ( tbytes )  & &   IntOfTerm ( tbytes )  ! =  bytes ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( IsVarTerm ( tstructs ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 11:32:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    YapBind ( ( CELL  * )  tstructs ,  MkIntTerm ( structs ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  else  if  ( IsIntTerm ( tstructs )  & &   IntOfTerm ( tstructs )  ! =  structs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( FALSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  ( TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-16 03:07:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/******************************
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* *       Local  functions       * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  realtime  current_time ( void )  {  
						 
					
						
							
								
									
										
										
										
											2012-01-05 16:04:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define TIME_RESOLUTION 1000000 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  struct  timeval  tempo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  gettimeofday ( & tempo ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( ( realtime ) tempo . tv_sec  +  ( realtime ) tempo . tv_usec  /  TIME_RESOLUTION ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /* to get time as Yap */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  double  now ,  interval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Yap_cputime_interval ( & now ,  & interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( ( realtime ) now ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_entries ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  table_entry ,  _pages_tab_ent ,  " Table entries:                 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) || defined(THREADS_CONSUMER_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_entries ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  subgoal_entry ,  _pages_sg_ent ,  " Subgoal entries:               " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING || THREADS_CONSUMER_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  subgoal_frame ,  _pages_sg_fr ,  " Subgoal frames:                " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_dependency_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  dependency_frame ,  _pages_dep_fr ,  " Dependency frames:             " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_trie_nodes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  subgoal_trie_node ,  _pages_sg_node ,  " Subgoal trie nodes:            " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_subgoal_trie_hashes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  subgoal_trie_hash ,  _pages_sg_hash ,  " Subgoal trie hashes:           " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_trie_nodes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  answer_trie_node ,  _pages_ans_node ,  " Answer trie nodes:             " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_trie_hashes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  answer_trie_hash ,  _pages_ans_hash ,  " Answer trie hashes:            " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(THREADS_FULL_SHARING) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_answer_ref_nodes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  answer_ref_node ,  _pages_ans_ref_node ,  " Answer ref nodes:              " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* THREADS_FULL_SHARING */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_global_trie_nodes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  global_trie_node ,  _pages_gt_node ,  " Global trie nodes:             " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_global_trie_hashes ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  global_trie_hash ,  _pages_gt_hash ,  " Global trie hashes:            " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef YAPOR 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_or_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  or_frame ,  _pages_or_fr ,  " Or-frames:                     " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_query_goal_solution_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  query_goal_solution_frame ,  _pages_qg_sol_fr ,  " Query goal solution frames:    " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_query_goal_answer_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  query_goal_answer_frame ,  _pages_qg_ans_fr ,  " Query goal answer frames:      " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR */ 
  
						 
					
						
							
								
									
										
										
										
											2009-09-27 02:31:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(YAPOR) && defined(TABLING) 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_suspension_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  suspension_frame ,  _pages_susp_fr ,  " Suspension frames:             " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 02:31:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef TABLING_INNER_CUTS 
  
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_subgoal_solution_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  table_subgoal_solution_frame ,  _pages_tg_sol_fr ,  " Table subgoal solution frames: " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 02:31:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-22 16:50:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-12-09 16:06:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  struct  page_statistics  show_statistics_table_subgoal_answer_frames ( IOSTREAM  * out )  {  
						 
					
						
							
								
									
										
										
										
											2012-05-14 19:11:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  SHOW_PAGE_STATS ( out ,  struct  table_subgoal_answer_frame ,  _pages_tg_ans_fr ,  " Table subgoal answer frames:   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2010-04-20 03:59:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* TABLING_INNER_CUTS */ 
  
						 
					
						
							
								
									
										
										
										
											2005-07-11 19:17:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif  /* YAPOR && TABLING */ 
  
						 
					
						
							
								
									
										
										
										
											2001-04-09 19:54:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif  /* YAPOR || TABLING */