296 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
  /* This file, hstruct.h, was generated automatically by "yap -L misc/buildlocalglobal"
 | 
						|
     please do not update, update H/HEAPFIELDS instead */
 | 
						|
 | 
						|
//
 | 
						|
// File defining fields in the Yap_heap_codes global structure
 | 
						|
//
 | 
						|
// these fields used to spread all over the place, because they must be used in 4 ways:
 | 
						|
//  - they must be defined somewhere
 | 
						|
//  - they have an #ifdef to get a shorter name
 | 
						|
//  - they must be initialised somewhere
 | 
						|
//  - they must be restorable and collectable (from the atom gc).
 | 
						|
//
 | 
						|
//
 | 
						|
// The defs include 4+ components:
 | 
						|
//   Type
 | 
						|
//   name in structured
 | 
						|
//   global name
 | 
						|
//   init code and restore code (optional)
 | 
						|
//
 | 
						|
//
 | 
						|
//
 | 
						|
// MkAT (MkAtomTerm) cvts from a predefined atom to a term
 | 
						|
// MkPred constructs a pred_entry
 | 
						|
// MkOp gets an opcode
 | 
						|
// void does nothing
 | 
						|
// =VALUE inits as VALUE
 | 
						|
// Init... sets up call to InitFunc
 | 
						|
// Restore... sets up call to RestoreFunc
 | 
						|
//
 | 
						|
 | 
						|
/* memory management */
 | 
						|
  UInt  Yap_HoleSize_;
 | 
						|
  struct malloc_state  *Yap_av_;
 | 
						|
#if USE_DL_MALLOC
 | 
						|
  struct Yap_MemoryHoles[MAX_DLMALLOC_HOLES]  void_;
 | 
						|
  UInt  Yap_NOfMemoryHoles_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  DLMallocLock_;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#if USE_DL_MALLOC || (USE_SYSTEM_MALLOC && HAVE_MALLINFO)
 | 
						|
#ifndef  HeapUsed
 | 
						|
#define  HeapUsed  Yap_givemallinfo()
 | 
						|
#endif
 | 
						|
  Int  NotHeapUsed_;
 | 
						|
#else
 | 
						|
  Int  HeapUsed_;
 | 
						|
#endif
 | 
						|
  Int  HeapMax_;
 | 
						|
  ADDR  HeapTop_;
 | 
						|
  ADDR  HeapLim_;
 | 
						|
  struct FREEB  *FreeBlocks_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  FreeBlocksLock_;
 | 
						|
  lockvar  HeapUsedLock_;
 | 
						|
  lockvar  HeapTopLock_;
 | 
						|
  int  HeapTopOwner_;
 | 
						|
#endif
 | 
						|
  UInt  MaxStack_;
 | 
						|
  UInt  MaxTrail_;
 | 
						|
/* execution info */
 | 
						|
/* OPCODE REVERSE TABLE, needed to recover op tables */
 | 
						|
#if USE_THREADED_CODE
 | 
						|
  op_entry  *OP_RTABLE_;
 | 
						|
#endif
 | 
						|
/* popular opcodes */
 | 
						|
  OPCODE  EXECUTE_CPRED_OP_CODE_;
 | 
						|
  OPCODE  EXPAND_OP_CODE_;
 | 
						|
  OPCODE  FAIL_OPCODE_;
 | 
						|
  OPCODE  INDEX_OPCODE_;
 | 
						|
  OPCODE  LOCKPRED_OPCODE_;
 | 
						|
  OPCODE  ORLAST_OPCODE_;
 | 
						|
  OPCODE  UNDEF_OPCODE_;
 | 
						|
  OPCODE  RETRY_USERC_OPCODE_;
 | 
						|
  OPCODE  EXECUTE_CPRED_OPCODE_;
 | 
						|
/* atom tables */
 | 
						|
  UInt  NOfAtoms_;
 | 
						|
  UInt  AtomHashTableSize_;
 | 
						|
  UInt  WideAtomHashTableSize_;
 | 
						|
  UInt  NOfWideAtoms_;
 | 
						|
  AtomHashEntry  INVISIBLECHAIN_;
 | 
						|
  AtomHashEntry  *WideHashChain_;
 | 
						|
  AtomHashEntry  *HashChain_;
 | 
						|
/* use atom defs here */
 | 
						|
#include "tatoms.h"
 | 
						|
#ifdef EUROTRA
 | 
						|
  Term  TermDollarU_;
 | 
						|
#endif
 | 
						|
  Term  TermAnswer_;
 | 
						|
//modules
 | 
						|
  Term  USER_MODULE_;
 | 
						|
  Term  IDB_MODULE_;
 | 
						|
  Term  ATTRIBUTES_MODULE_;
 | 
						|
  Term  CHARSIO_MODULE_;
 | 
						|
  Term  CHTYPE_MODULE_;
 | 
						|
  Term  TERMS_MODULE_;
 | 
						|
  Term  SYSTEM_MODULE_;
 | 
						|
  Term  READUTIL_MODULE_;
 | 
						|
  Term  HACKS_MODULE_;
 | 
						|
  Term  ARG_MODULE_;
 | 
						|
  Term  GLOBALS_MODULE_;
 | 
						|
  Term  SWI_MODULE_;
 | 
						|
  Term  DBLOAD_MODULE_;
 | 
						|
  Term  RANGE_MODULE_;
 | 
						|
  Term  ERROR_MODULE_;
 | 
						|
//
 | 
						|
// Module list
 | 
						|
//
 | 
						|
  struct mod_entry  *CurrentModules_;
 | 
						|
// make sure we have the modules set at this point.
 | 
						|
// don't actually want to define a field
 | 
						|
 | 
						|
// hidden predicates
 | 
						|
  Prop  HIDDEN_PREDICATES_;
 | 
						|
// make sure we have the streams  set at this point.
 | 
						|
// don't actually want to define a field
 | 
						|
 | 
						|
  union flagTerm*  GLOBAL_Flags_;
 | 
						|
  UInt  GLOBAL_flagCount_;
 | 
						|
/* Anderson's JIT */
 | 
						|
  yap_exec_mode  Yap_ExecutionMode_;
 | 
						|
/*  The Predicate Hash Table: fast access to predicates. */
 | 
						|
  UInt  PredsInHashTable_;
 | 
						|
  uint64_t  PredHashTableSize_;
 | 
						|
  struct pred_entry  **PredHash_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  rwlock_t  PredHashRWLock_;
 | 
						|
#endif
 | 
						|
/* Well-Known Predicates */
 | 
						|
  struct pred_entry  *CreepCode_;
 | 
						|
  struct pred_entry  *UndefCode_;
 | 
						|
  struct pred_entry  *SpyCode_;
 | 
						|
  struct pred_entry  *PredFail_;
 | 
						|
  struct pred_entry  *PredTrue_;
 | 
						|
#ifdef COROUTINING
 | 
						|
  struct pred_entry  *WakeUpCode_;
 | 
						|
#endif
 | 
						|
  struct pred_entry  *PredDollarCatch_;
 | 
						|
#ifdef YAPOR
 | 
						|
  struct pred_entry  *PredGetwork_;
 | 
						|
#endif /* YAPOR */
 | 
						|
  struct pred_entry  *PredGoalExpansion_;
 | 
						|
  struct pred_entry  *PredHandleThrow_;
 | 
						|
  struct pred_entry  *PredIs_;
 | 
						|
  struct pred_entry  *PredLogUpdClause_;
 | 
						|
  struct pred_entry  *PredLogUpdClauseErase_;
 | 
						|
  struct pred_entry  *PredLogUpdClause0_;
 | 
						|
  struct pred_entry  *PredMetaCall_;
 | 
						|
  struct pred_entry  *PredProtectStack_;
 | 
						|
  struct pred_entry  *PredRecordedWithKey_;
 | 
						|
  struct pred_entry  *PredRestoreRegs_;
 | 
						|
  struct pred_entry  *PredSafeCallCleanup_;
 | 
						|
  struct pred_entry  *PredStaticClause_;
 | 
						|
  struct pred_entry  *PredThrow_;
 | 
						|
  struct pred_entry  *PredTraceMetaCall_;
 | 
						|
  struct pred_entry  *PredCommentHook_;
 | 
						|
  struct pred_entry  *PredProcedure_;
 | 
						|
/* low-level tracer */
 | 
						|
#ifdef LOW_LEVEL_TRACER
 | 
						|
  int  Yap_do_low_level_trace_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  Yap_low_level_trace_lock_;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
/* code management info */
 | 
						|
  UInt  Yap_ClauseSpace_;
 | 
						|
  UInt  Yap_IndexSpace_Tree_;
 | 
						|
  UInt  Yap_IndexSpace_EXT_;
 | 
						|
  UInt  Yap_IndexSpace_SW_;
 | 
						|
  UInt  Yap_LUClauseSpace_;
 | 
						|
  UInt  Yap_LUIndexSpace_Tree_;
 | 
						|
  UInt  Yap_LUIndexSpace_CP_;
 | 
						|
  UInt  Yap_LUIndexSpace_EXT_;
 | 
						|
  UInt  Yap_LUIndexSpace_SW_;
 | 
						|
/* static code: may be shared by many predicate or may be used for meta-execution */
 | 
						|
  yamop  COMMA_CODE_[5];
 | 
						|
  yamop  DUMMYCODE_[1];
 | 
						|
  yamop  FAILCODE_[1];
 | 
						|
  yamop  NOCODE_[1];
 | 
						|
  yamop  ENV_FOR_TRUSTFAIL_[2];
 | 
						|
  yamop  *TRUSTFAILCODE_;
 | 
						|
  yamop  ENV_FOR_YESCODE_[2];
 | 
						|
  yamop  *YESCODE_;
 | 
						|
  yamop  RTRYCODE_[1];
 | 
						|
#ifdef BEAM
 | 
						|
  yamop  BEAM_RETRY_CODE_[1];
 | 
						|
#endif /* BEAM */
 | 
						|
#ifdef YAPOR
 | 
						|
  yamop  GETWORK_[1];
 | 
						|
  yamop  GETWORK_SEQ_[1];
 | 
						|
  yamop  GETWORK_FIRST_TIME_[1];
 | 
						|
#endif /* YAPOR */
 | 
						|
#ifdef TABLING
 | 
						|
  yamop  LOAD_ANSWER_[1];
 | 
						|
  yamop  TRY_ANSWER_[1];
 | 
						|
  yamop  ANSWER_RESOLUTION_[1];
 | 
						|
  yamop  COMPLETION_[1];
 | 
						|
#ifdef THREADS_CONSUMER_SHARING
 | 
						|
  yamop  ANSWER_RESOLUTION_COMPLETION_[1];
 | 
						|
#endif /* THREADS_CONSUMER_SHARING */
 | 
						|
#endif /* TABLING */
 | 
						|
/*  */
 | 
						|
/*    PREG just before we enter $spy. We use that to find out the clause which  */
 | 
						|
/*    was calling the debugged goal.  */
 | 
						|
/*  */
 | 
						|
  yamop  *P_before_spy_;
 | 
						|
/* support recorded_k  */
 | 
						|
  yamop  *RETRY_C_RECORDEDP_CODE_;
 | 
						|
  yamop  *RETRY_C_RECORDED_K_CODE_;
 | 
						|
/* compiler flags */
 | 
						|
  int  PROFILING_;
 | 
						|
  int  CALL_COUNTING_;
 | 
						|
  int  optimizer_on_;
 | 
						|
  int  compile_mode_;
 | 
						|
  int  profiling_;
 | 
						|
  int  call_counting_;
 | 
						|
/********* whether we should try to compile array references ******************/
 | 
						|
  int  compile_arrays_;
 | 
						|
/* DBTerms: pre-compiled ground terms */
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  DBTermsListLock_;
 | 
						|
#endif
 | 
						|
  struct dbterm_list  *DBTermsList_;
 | 
						|
/* JITI support */
 | 
						|
  yamop  *ExpandClausesFirst_;
 | 
						|
  yamop  *ExpandClausesLast_;
 | 
						|
  UInt  Yap_ExpandClauses_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  ExpandClausesListLock_;
 | 
						|
  lockvar  OpListLock_;
 | 
						|
#endif
 | 
						|
/* instrumentation */
 | 
						|
#ifdef DEBUG
 | 
						|
  UInt  Yap_NewCps_;
 | 
						|
  UInt  Yap_LiveCps_;
 | 
						|
  UInt  Yap_DirtyCps_;
 | 
						|
  UInt  Yap_FreedCps_;
 | 
						|
#endif
 | 
						|
  UInt  Yap_expand_clauses_sz_;
 | 
						|
/* UDI support */
 | 
						|
  struct udi_info  *UdiControlBlocks_;
 | 
						|
/* data-base statistics */
 | 
						|
/* system boots in compile mode */
 | 
						|
  Int  STATIC_PREDICATES_MARKED_;
 | 
						|
/* Internal Database */
 | 
						|
  Prop  *INT_KEYS_;
 | 
						|
  Prop  *INT_LU_KEYS_;
 | 
						|
  Prop  *INT_BB_KEYS_;
 | 
						|
/* Internal Database Statistics */
 | 
						|
  UInt  INT_KEYS_SIZE_;
 | 
						|
  UInt  INT_KEYS_TIMESTAMP_;
 | 
						|
  UInt  INT_BB_KEYS_SIZE_;
 | 
						|
/* Internal Data-Base Control */
 | 
						|
  int  UPDATE_MODE_;
 | 
						|
/* nasty IDB stuff */
 | 
						|
  struct DB_STRUCT  *DBErasedMarker_;
 | 
						|
  struct logic_upd_clause  *LogDBErasedMarker_;
 | 
						|
/* Dead clauses and IDB entries */
 | 
						|
  struct static_clause  *DeadStaticClauses_;
 | 
						|
  struct static_mega_clause  *DeadMegaClauses_;
 | 
						|
  struct static_index  *DeadStaticIndices_;
 | 
						|
  struct logic_upd_clause  *DBErasedList_;
 | 
						|
  struct logic_upd_index  *DBErasedIList_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  DeadStaticClausesLock_;
 | 
						|
  lockvar  DeadMegaClausesLock_;
 | 
						|
  lockvar  DeadStaticIndicesLock_;
 | 
						|
#endif
 | 
						|
#ifdef COROUTINING
 | 
						|
/* number of attribute modules */
 | 
						|
  int  NUM_OF_ATTS_;
 | 
						|
/* initialised by memory allocator */
 | 
						|
  UInt  Yap_AttsSize_;
 | 
						|
#endif
 | 
						|
/* Operators */
 | 
						|
  struct operator_entry  *OpList_;
 | 
						|
/* foreign code loaded */
 | 
						|
  struct ForeignLoadItem  *ForeignCodeLoaded_;
 | 
						|
  ADDR  ForeignCodeBase_;
 | 
						|
  ADDR  ForeignCodeTop_;
 | 
						|
  ADDR  ForeignCodeMax_;
 | 
						|
/* recorded terms */
 | 
						|
  struct record_list  *Yap_Records_;
 | 
						|
  Atom  EmptyWakeups_[MAX_EMPTY_WAKEUPS];
 | 
						|
  int  MaxEmptyWakeups_;
 | 
						|
/* SWI blobs */
 | 
						|
  struct YAP_blob_t  *BlobTypes_;
 | 
						|
  struct AtomEntryStruct  *Blobs_;
 | 
						|
  UInt  NOfBlobs_;
 | 
						|
  UInt  NOfBlobsMax_;
 | 
						|
#if defined(YAPOR) || defined(THREADS)
 | 
						|
  lockvar  Blobs_Lock_;
 | 
						|
#endif
 | 
						|
 |