This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/H/generated/h0struct.h
2016-03-16 23:56:24 +00:00

295 lines
9.2 KiB
C

/* This file, d0hstruct.h, was generated automatically by "yap -L misc/buildlocalglobal"
please do not update, update misc/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 */
EXTERNAL UInt Yap_HoleSize;
EXTERNAL struct malloc_state *Yap_av;
#if USE_DL_MALLOC
EXTERNAL struct Yap_MemoryHoles[MAX_DLMALLOC_HOLES] void;
EXTERNAL UInt Yap_NOfMemoryHoles;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar DLMallocLock;
#endif
#endif
#if USE_DL_MALLOC || (USE_SYSTEM_MALLOC && HAVE_MALLINFO)
#ifndef HeapUsed
#define HeapUsed Yap_givemallinfo()
#endif
EXTERNAL Int NotHeapUsed;
#else
EXTERNAL Int HeapUsed;
#endif
EXTERNAL Int HeapMax;
EXTERNAL ADDR HeapTop;
EXTERNAL ADDR HeapLim;
EXTERNAL struct FREEB *FreeBlocks;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar FreeBlocksLock;
EXTERNAL lockvar HeapUsedLock;
EXTERNAL lockvar HeapTopLock;
EXTERNAL int HeapTopOwner;
#endif
EXTERNAL UInt MaxStack;
EXTERNAL UInt MaxTrail;
/* execution info */
/* OPCODE REVERSE TABLE, needed to recover op tables */
#if USE_THREADED_CODE
EXTERNAL op_entry *OP_RTABLE;
#endif
/* popular opcodes */
EXTERNAL OPCODE EXECUTE_CPRED_OP_CODE;
EXTERNAL OPCODE EXPAND_OP_CODE;
EXTERNAL OPCODE FAIL_OPCODE;
EXTERNAL OPCODE INDEX_OPCODE;
EXTERNAL OPCODE LOCKPRED_OPCODE;
EXTERNAL OPCODE ORLAST_OPCODE;
EXTERNAL OPCODE UNDEF_OPCODE;
EXTERNAL OPCODE RETRY_USERC_OPCODE;
EXTERNAL OPCODE EXECUTE_CPRED_OPCODE;
/* atom tables */
EXTERNAL UInt NOfAtoms;
EXTERNAL UInt AtomHashTableSize;
EXTERNAL UInt WideAtomHashTableSize;
EXTERNAL UInt NOfWideAtoms;
EXTERNAL AtomHashEntry INVISIBLECHAIN;
EXTERNAL AtomHashEntry *WideHashChain;
EXTERNAL AtomHashEntry *HashChain;
/* use atom defs here */
#include "tatoms.h"
#ifdef EUROTRA
EXTERNAL Term TermDollarU;
#endif
//modules
EXTERNAL Term USER_MODULE;
EXTERNAL Term IDB_MODULE;
EXTERNAL Term ATTRIBUTES_MODULE;
EXTERNAL Term CHARSIO_MODULE;
EXTERNAL Term CHTYPE_MODULE;
EXTERNAL Term TERMS_MODULE;
EXTERNAL Term SYSTEM_MODULE;
EXTERNAL Term READUTIL_MODULE;
EXTERNAL Term HACKS_MODULE;
EXTERNAL Term ARG_MODULE;
EXTERNAL Term GLOBALS_MODULE;
EXTERNAL Term SWI_MODULE;
EXTERNAL Term DBLOAD_MODULE;
EXTERNAL Term RANGE_MODULE;
EXTERNAL Term ERROR_MODULE;
//
// Module list
//
EXTERNAL struct mod_entry *CurrentModules;
// make sure we have the modules set at this point.
// don't actually want to define a field
// hidden predicates
EXTERNAL Prop HIDDEN_PREDICATES;
// make sure we have the streams set at this point.
// don't actually want to define a field
EXTERNAL union flagTerm* GLOBAL_Flags;
EXTERNAL UInt GLOBAL_flagCount;
/* Anderson's JIT */
EXTERNAL yap_exec_mode Yap_ExecutionMode;
/* The Predicate Hash Table: fast access to predicates. */
EXTERNAL UInt PredsInHashTable;
EXTERNAL uint64_t PredHashTableSize;
EXTERNAL struct pred_entry **PredHash;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL rwlock_t PredHashRWLock;
#endif
/* Well-Known Predicates */
EXTERNAL struct pred_entry *CreepCode;
EXTERNAL struct pred_entry *UndefCode;
EXTERNAL struct pred_entry *SpyCode;
EXTERNAL struct pred_entry *PredFail;
EXTERNAL struct pred_entry *PredTrue;
#ifdef COROUTINING
EXTERNAL struct pred_entry *WakeUpCode;
#endif
EXTERNAL struct pred_entry *PredDollarCatch;
#ifdef YAPOR
EXTERNAL struct pred_entry *PredGetwork;
#endif /* YAPOR */
EXTERNAL struct pred_entry *PredGoalExpansion;
EXTERNAL struct pred_entry *PredHandleThrow;
EXTERNAL struct pred_entry *PredIs;
EXTERNAL struct pred_entry *PredLogUpdClause;
EXTERNAL struct pred_entry *PredLogUpdClauseErase;
EXTERNAL struct pred_entry *PredLogUpdClause0;
EXTERNAL struct pred_entry *PredMetaCall;
EXTERNAL struct pred_entry *PredProtectStack;
EXTERNAL struct pred_entry *PredRecordedWithKey;
EXTERNAL struct pred_entry *PredRestoreRegs;
EXTERNAL struct pred_entry *PredSafeCallCleanup;
EXTERNAL struct pred_entry *PredStaticClause;
EXTERNAL struct pred_entry *PredThrow;
EXTERNAL struct pred_entry *PredTraceMetaCall;
EXTERNAL struct pred_entry *PredCommentHook;
EXTERNAL struct pred_entry *PredProcedure;
/* low-level tracer */
#ifdef LOW_LEVEL_TRACER
EXTERNAL int Yap_do_low_level_trace;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar Yap_low_level_trace_lock;
#endif
#endif
/* code management info */
EXTERNAL UInt Yap_ClauseSpace;
EXTERNAL UInt Yap_IndexSpace_Tree;
EXTERNAL UInt Yap_IndexSpace_EXT;
EXTERNAL UInt Yap_IndexSpace_SW;
EXTERNAL UInt Yap_LUClauseSpace;
EXTERNAL UInt Yap_LUIndexSpace_Tree;
EXTERNAL UInt Yap_LUIndexSpace_CP;
EXTERNAL UInt Yap_LUIndexSpace_EXT;
EXTERNAL UInt Yap_LUIndexSpace_SW;
/* static code: may be shared by many predicate or may be used for meta-execution */
EXTERNAL yamop COMMA_CODE[5];
EXTERNAL yamop DUMMYCODE[1];
EXTERNAL yamop FAILCODE[1];
EXTERNAL yamop NOCODE[1];
EXTERNAL yamop ENV_FOR_TRUSTFAIL[2];
EXTERNAL yamop *TRUSTFAILCODE;
EXTERNAL yamop ENV_FOR_YESCODE[2];
EXTERNAL yamop *YESCODE;
EXTERNAL yamop RTRYCODE[1];
#ifdef BEAM
EXTERNAL yamop BEAM_RETRY_CODE[1];
#endif /* BEAM */
#ifdef YAPOR
EXTERNAL yamop GETWORK[1];
EXTERNAL yamop GETWORK_SEQ[1];
EXTERNAL yamop GETWORK_FIRST_TIME[1];
#endif /* YAPOR */
#ifdef TABLING
EXTERNAL yamop LOAD_ANSWER[1];
EXTERNAL yamop TRY_ANSWER[1];
EXTERNAL yamop ANSWER_RESOLUTION[1];
EXTERNAL yamop COMPLETION[1];
#ifdef THREADS_CONSUMER_SHARING
EXTERNAL 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. */
/* */
EXTERNAL yamop *P_before_spy;
/* support recorded_k */
EXTERNAL yamop *RETRY_C_RECORDEDP_CODE;
EXTERNAL yamop *RETRY_C_RECORDED_K_CODE;
/* compiler flags */
EXTERNAL int PROFILING;
EXTERNAL int CALL_COUNTING;
EXTERNAL int optimizer_on;
EXTERNAL int compile_mode;
EXTERNAL int profiling;
EXTERNAL int call_counting;
/********* whether we should try to compile array references ******************/
EXTERNAL int compile_arrays;
/* DBTerms: pre-compiled ground terms */
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar DBTermsListLock;
#endif
EXTERNAL struct dbterm_list *DBTermsList;
/* JITI support */
EXTERNAL yamop *ExpandClausesFirst;
EXTERNAL yamop *ExpandClausesLast;
EXTERNAL UInt Yap_ExpandClauses;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar ExpandClausesListLock;
EXTERNAL lockvar OpListLock;
#endif
/* instrumentation */
#ifdef DEBUG
EXTERNAL UInt Yap_NewCps;
EXTERNAL UInt Yap_LiveCps;
EXTERNAL UInt Yap_DirtyCps;
EXTERNAL UInt Yap_FreedCps;
#endif
EXTERNAL UInt Yap_expand_clauses_sz;
/* UDI support */
EXTERNAL struct udi_info *UdiControlBlocks;
/* data-base statistics */
/* system boots in compile mode */
EXTERNAL Int STATIC_PREDICATES_MARKED;
/* Internal Database */
EXTERNAL Prop *INT_KEYS;
EXTERNAL Prop *INT_LU_KEYS;
EXTERNAL Prop *INT_BB_KEYS;
/* Internal Database Statistics */
EXTERNAL UInt INT_KEYS_SIZE;
EXTERNAL UInt INT_KEYS_TIMESTAMP;
EXTERNAL UInt INT_BB_KEYS_SIZE;
/* Internal Data-Base Control */
EXTERNAL int UPDATE_MODE;
/* nasty IDB stuff */
EXTERNAL struct DB_STRUCT *DBErasedMarker;
EXTERNAL struct logic_upd_clause *LogDBErasedMarker;
/* Dead clauses and IDB entries */
EXTERNAL struct static_clause *DeadStaticClauses;
EXTERNAL struct static_mega_clause *DeadMegaClauses;
EXTERNAL struct static_index *DeadStaticIndices;
EXTERNAL struct logic_upd_clause *DBErasedList;
EXTERNAL struct logic_upd_index *DBErasedIList;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar DeadStaticClausesLock;
EXTERNAL lockvar DeadMegaClausesLock;
EXTERNAL lockvar DeadStaticIndicesLock;
#endif
#ifdef COROUTINING
/* number of attribute modules */
EXTERNAL int NUM_OF_ATTS;
/* initialised by memory allocator */
EXTERNAL UInt Yap_AttsSize;
#endif
/* Operators */
EXTERNAL struct operator_entry *OpList;
/* foreign code loaded */
EXTERNAL struct ForeignLoadItem *ForeignCodeLoaded;
EXTERNAL ADDR ForeignCodeBase;
EXTERNAL ADDR ForeignCodeTop;
EXTERNAL ADDR ForeignCodeMax;
/* recorded terms */
EXTERNAL struct record_list *Yap_Records;
EXTERNAL Atom EmptyWakeups[MAX_EMPTY_WAKEUPS];
EXTERNAL int MaxEmptyWakeups;
/* SWI blobs */
EXTERNAL struct YAP_blob_t *BlobTypes;
EXTERNAL struct AtomEntryStruct *Blobs;
EXTERNAL UInt NOfBlobs;
EXTERNAL UInt NOfBlobsMax;
#if defined(YAPOR) || defined(THREADS)
EXTERNAL lockvar Blobs_Lock;
#endif