some fixes in info

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@507 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2002-06-01 04:29:01 +00:00
parent c80ac669de
commit c5e66af5d1
12 changed files with 2287 additions and 2452 deletions

View File

@ -46,8 +46,7 @@ typedef struct PropEntryStruct *Prop;
/* I can only define the structure after I define the actual atoms */ /* I can only define the structure after I define the actual atoms */
/* atom structure */ /* atom structure */
typedef struct AtomEntryStruct typedef struct AtomEntryStruct {
{
Atom NextOfAE; /* used to build hash chains */ Atom NextOfAE; /* used to build hash chains */
Prop PropsOfAE; /* property list for this atom */ Prop PropsOfAE; /* property list for this atom */
#if defined(YAPOR) || defined(THREADS) #if defined(YAPOR) || defined(THREADS)
@ -79,12 +78,10 @@ AtomEntry;
typedef SFLAGS PropFlags; typedef SFLAGS PropFlags;
/* basic property entry structure */ /* basic property entry structure */
typedef struct PropEntryStruct typedef struct PropEntryStruct {
{
Prop NextOfPE; /* used to chain properties */ Prop NextOfPE; /* used to chain properties */
PropFlags KindOfPE; /* kind of property */ PropFlags KindOfPE; /* kind of property */
} } PropEntry;
PropEntry;
/* ************************* Functors **********************************/ /* ************************* Functors **********************************/
@ -100,8 +97,7 @@ PropEntry;
#define FunctorProperty ((PropFlags)(0xbb00)) #define FunctorProperty ((PropFlags)(0xbb00))
/* functor property */ /* functor property */
typedef struct FunctorEntryStruct typedef struct FunctorEntryStruct {
{
Prop NextOfPE; /* used to chain properties */ Prop NextOfPE; /* used to chain properties */
PropFlags KindOfPE; /* kind of property */ PropFlags KindOfPE; /* kind of property */
unsigned int ArityOfFE; /* arity of functor */ unsigned int ArityOfFE; /* arity of functor */
@ -110,7 +106,7 @@ typedef struct FunctorEntryStruct
#if defined(YAPOR) || defined(THREADS) #if defined(YAPOR) || defined(THREADS)
rwlock_t FRWLock; rwlock_t FRWLock;
#endif #endif
} } FunctorEntry;
FunctorEntry;
typedef FunctorEntry *Functor; typedef FunctorEntry *Functor;

View File

@ -18,7 +18,7 @@
* Last rev: December 90 * * Last rev: December 90 *
* mods: * * mods: *
* comments: Tag Scheme for machines with 24 bits adresses (m68000) * * comments: Tag Scheme for machines with 24 bits adresses (m68000) *
* version: $Id: Tags_24bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Tags_24bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
/* Version for 24 bit addresses (68000) /* Version for 24 bit addresses (68000)

View File

@ -18,7 +18,7 @@
* Last rev: December 90 * * Last rev: December 90 *
* mods: * * mods: *
* comments: Original Tag Scheme for machines with 32 bits adresses * * comments: Original Tag Scheme for machines with 32 bits adresses *
* version: $Id: Tags_32LowTag.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Tags_32LowTag.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
#define TAG_LOW_BITS_32 1 #define TAG_LOW_BITS_32 1
@ -72,10 +72,10 @@ property list
#define NumberBits /* 0x0000000aL */ MKTAG(0x2,2) #define NumberBits /* 0x0000000aL */ MKTAG(0x2,2)
#define NumberMask /* 0x0000000bL */ MKTAG(0x2,3) #define NumberMask /* 0x0000000bL */ MKTAG(0x2,3)
#define NonTagPart(V) (Unsigned(V)>>(SHIFT_LOW_TAG+SHIFT_HIGH_TAG)) #define NonTagPart(V) ((Unsigned(V)>>1) & ~LowTagBits)
#define TAGGED(TAG,V) (((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1)|(TAG)) #define TAGGED(TAG,V) (((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1)|(TAG))
#define NONTAGGED(TAG,V) ((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1) #define NONTAGGED(TAG,V) ((Unsigned(V)<<(SHIFT_HIGH_TAG+SHIFT_LOW_TAG+1))>>1)
#define TAGGEDA(TAG,V) ((Unsigned(V) << (SHIFT_HIGH_TAG+SHIFT_LOW_TAG))|(TAG)) #define TAGGEDA(TAG,V) ((Unsigned(V) << 1)|(TAG))
#define CHKTAG(t,Tag) ((Unsigned(t)&TagBits)==Tag) #define CHKTAG(t,Tag) ((Unsigned(t)&TagBits)==Tag)
/* bits that should not be used by anyone but us */ /* bits that should not be used by anyone but us */

View File

@ -18,7 +18,7 @@
* Last rev: December 90 * * Last rev: December 90 *
* mods: * * mods: *
* comments: Original Tag Scheme for machines with 32 bits adresses * * comments: Original Tag Scheme for machines with 32 bits adresses *
* version: $Id: Tags_32Ops.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Tags_32Ops.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
/* /*

View File

@ -18,7 +18,7 @@
* Last rev: December 90 * * Last rev: December 90 *
* mods: * * mods: *
* comments: Original Tag Scheme for machines with 32 bits adresses * * comments: Original Tag Scheme for machines with 32 bits adresses *
* version: $Id: Tags_32bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Tags_32bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
/* Original version for 32 bit addresses machines, /* Original version for 32 bit addresses machines,

View File

@ -18,7 +18,7 @@
* Last rev: December 90 * * Last rev: December 90 *
* mods: * * mods: *
* comments: Original Tag Scheme for machines with 32 bits adresses * * comments: Original Tag Scheme for machines with 32 bits adresses *
* version: $Id: Tags_64bits.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Tags_64bits.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
#define TAG_64BITS 1 #define TAG_64BITS 1

View File

@ -17,7 +17,7 @@
* File: TermExt.h * * File: TermExt.h *
* mods: * * mods: *
* comments: Extensions to standard terms for YAP * * comments: Extensions to standard terms for YAP *
* version: $Id: TermExt.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: TermExt.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
#if USE_OFFSETS #if USE_OFFSETS

View File

@ -17,7 +17,7 @@
* File: Yap.h.m4 * * File: Yap.h.m4 *
* mods: * * mods: *
* comments: main header file for YAP * * comments: main header file for YAP *
* version: $Id: Yap.h,v 1.8 2002-02-04 16:12:54 vsc Exp $ * * version: $Id: Yap.h,v 1.9 2002-06-01 04:29:01 vsc Exp $ *
*************************************************************************/ *************************************************************************/
#include "config.h" #include "config.h"
@ -239,7 +239,6 @@ extern char Option[20];
#endif #endif
#if !IN_SECOND_QUADRANT #if !IN_SECOND_QUADRANT
#define USE_OFFSETS 1
#if __linux__ || __FreeBSD__ || __NetBSD__ || mips || __APPLE__ #if __linux__ || __FreeBSD__ || __NetBSD__ || mips || __APPLE__
#if defined(YAPOR) && defined(__alpha) #if defined(YAPOR) && defined(__alpha)
#define MMAP_ADDR 0x40000000 #define MMAP_ADDR 0x40000000
@ -250,18 +249,18 @@ extern char Option[20];
#else #else
#define MMAP_ADDR 0x09000000 #define MMAP_ADDR 0x09000000
#endif #endif
#elif __svr4__ #elif __svr4__ || defined(__SVR4)
#define MMAP_ADDR 0x02000000 #define MMAP_ADDR 0x02000000
#elif _WIN32 #elif defined(_WIN32) || defined(__CYGWIN__)
#define MMAP_ADDR 0x30000000L #define MMAP_ADDR 0x30000000L
#endif #endif
#endif /* !IN_SECOND_QUADRANT */ #endif /* !IN_SECOND_QUADRANT */
#if defined(MMAP_ADDR) && (HAVE_MMAP || HAVE_SHMAT || _WIN32) && !__simplescalar__ #if defined(MMAP_ADDR) && (USE_MMAP || USE_SHMAT || _WIN32) && !__simplescalar__
#define HEAP_INIT_BASE (MMAP_ADDR) #define HEAP_INIT_BASE (MMAP_ADDR)
#define AtomBase ((char *)MMAP_ADDR) #define AtomBase ((char *)MMAP_ADDR)
#else #else
#define HEAP_INIT_BASE (HeapBase) #define HEAP_INIT_BASE ((CELL)HeapBase)
#define AtomBase (HeapBase) #define AtomBase (HeapBase)
#endif #endif
@ -393,9 +392,8 @@ extern sigjmp_buf RestartEnv; /* used to restart after an abort */
/************ variables concerned with Error Handling *************/ /************ variables concerned with Error Handling *************/
/* Types of Errors */ /* Types of Errors */
typedef enum typedef enum {
{ YAP_NO_ERROR,
NO_ERROR,
FATAL_ERROR, FATAL_ERROR,
INTERNAL_ERROR, INTERNAL_ERROR,
PURE_ABORT, PURE_ABORT,
@ -469,15 +467,13 @@ typedef enum
TYPE_ERROR_UBYTE, TYPE_ERROR_UBYTE,
TYPE_ERROR_VARIABLE, TYPE_ERROR_VARIABLE,
UNKNOWN_ERROR UNKNOWN_ERROR
} } yap_error_number;
yap_error_number;
extern char *ErrorMessage; /* used to pass error messages */ extern char *ErrorMessage; /* used to pass error messages */
extern Term Error_Term; /* used to pass error terms */ extern Term Error_Term; /* used to pass error terms */
extern yap_error_number Error_TYPE; /* used to pass the error */ extern yap_error_number Error_TYPE; /* used to pass the error */
typedef enum typedef enum {
{
YAP_INT_BOUNDED_FLAG = 0, YAP_INT_BOUNDED_FLAG = 0,
MAX_ARITY_FLAG = 1, MAX_ARITY_FLAG = 1,
INTEGER_ROUNDING_FLAG = 2, INTEGER_ROUNDING_FLAG = 2,
@ -495,8 +491,7 @@ typedef enum
ALLOW_ASSERTING_STATIC_FLAG = 14, ALLOW_ASSERTING_STATIC_FLAG = 14,
HALT_AFTER_CONSULT_FLAG = 15, HALT_AFTER_CONSULT_FLAG = 15,
FAST_BOOT_FLAG = 16 FAST_BOOT_FLAG = 16
} } yap_flags;
yap_flags;
#define STRING_AS_CHARS 0 #define STRING_AS_CHARS 0
#define STRING_AS_ATOM 2 #define STRING_AS_ATOM 2
@ -524,46 +519,46 @@ yap_flags;
/***********************************************************************/ /***********************************************************************/
/* /*
absrectype Term = Int + Float + Atom + Pair + Appl + Ref + Var absrectype Term = Int + Float + Atom + Pair + Appl + Ref + Var
with AbsAppl(t) : *CELL -> Term with AbsAppl(t) : *CELL -> Term
and RepAppl(t) : Term -> *CELL and RepAppl(t) : Term -> *CELL
and AbsPair(t) : *CELL -> Term and AbsPair(t) : *CELL -> Term
and RepPair(t) : Term -> *CELL and RepPair(t) : Term -> *CELL
and IsIntTerm(t) = ... and IsIntTerm(t) = ...
and IsAtomTerm(t) = ... and IsAtomTerm(t) = ...
and IsVarTerm(t) = ... and IsVarTerm(t) = ...
and IsPairTerm(t) = ... and IsPairTerm(t) = ...
and IsApplTerm(t) = ... and IsApplTerm(t) = ...
and IsFloatTerm(t) = ... and IsFloatTerm(t) = ...
and IsRefTerm(t) = ... and IsRefTerm(t) = ...
and IsNonVarTerm(t) = ! IsVar(t) and IsNonVarTerm(t) = ! IsVar(t)
and IsNumterm(t) = IsIntTerm(t) || IsFloatTerm(t) and IsNumterm(t) = IsIntTerm(t) || IsFloatTerm(t)
and IsAtomicTerm(t) = IsNumTerm(t) || IsAtomTerm(t) and IsAtomicTerm(t) = IsNumTerm(t) || IsAtomTerm(t)
and IsPrimitiveTerm(t) = IsAtomicTerm(t) || IsRefTerm(t) and IsPrimitiveTerm(t) = IsAtomicTerm(t) || IsRefTerm(t)
and MkIntTerm(n) = ... and MkIntTerm(n) = ...
and MkFloatTerm(f) = ... and MkFloatTerm(f) = ...
and MkAtomTerm(a) = ... and MkAtomTerm(a) = ...
and MkVarTerm(r) = ... and MkVarTerm(r) = ...
and MkApplTerm(f,n,args) = ... and MkApplTerm(f,n,args) = ...
and MkPairTerm(hd,tl) = ... and MkPairTerm(hd,tl) = ...
and MkRefTerm(R) = ... and MkRefTerm(R) = ...
and PtrOfTerm(t) : Term -> CELL * = ... and PtrOfTerm(t) : Term -> CELL * = ...
and IntOfTerm(t) : Term -> int = ... and IntOfTerm(t) : Term -> int = ...
and FloatOfTerm(t) : Term -> flt = ... and FloatOfTerm(t) : Term -> flt = ...
and AtomOfTerm(t) : Term -> Atom = ... and AtomOfTerm(t) : Term -> Atom = ...
and VarOfTerm(t) : Term -> *Term = .... and VarOfTerm(t) : Term -> *Term = ....
and HeadOfTerm(t) : Term -> Term = ... and HeadOfTerm(t) : Term -> Term = ...
and TailOfTerm(t) : Term -> Term = ... and TailOfTerm(t) : Term -> Term = ...
and FunctorOfTerm(t) : Term -> Functor = ... and FunctorOfTerm(t) : Term -> Functor = ...
and ArgOfTerm(i,t) : Term -> Term= ... and ArgOfTerm(i,t) : Term -> Term= ...
and RefOfTerm(t) : Term -> DBRef = ... and RefOfTerm(t) : Term -> DBRef = ...
*/ */
/* /*
YAP can use several different tag schemes, according to the kind of YAP can use several different tag schemes, according to the kind of
@ -628,12 +623,20 @@ yap_flags;
#define TermSize sizeof(Term) #define TermSize sizeof(Term)
/************* variables related to memory allocation *******************/
/* must be before TermExt.h */
extern ADDR HeapBase,
LocalBase,
GlobalBase,
TrailBase, TrailTop,
ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
/* applies to unbound variables */ /* applies to unbound variables */
inline EXTERN Term *VarOfTerm (Term t); inline EXTERN Term * VarOfTerm(Term t);
inline EXTERN Term * inline EXTERN Term * VarOfTerm(Term t)
VarOfTerm (Term t)
{ {
return (Term *) (t); return (Term *) (t);
} }
@ -641,20 +644,18 @@ VarOfTerm (Term t)
#if SBA #if SBA
inline EXTERN Term MkVarTerm (void); inline EXTERN Term MkVarTerm(void);
inline EXTERN Term inline EXTERN Term MkVarTerm()
MkVarTerm ()
{ {
return (Term) ((*H = 0, H++)); return (Term) ((*H = 0, H++));
} }
inline EXTERN int IsUnboundVar (Term); inline EXTERN int IsUnboundVar(Term);
inline EXTERN int inline EXTERN int IsUnboundVar(Term t)
IsUnboundVar (Term t)
{ {
return (int) (t == 0); return (int) (t == 0);
} }
@ -662,108 +663,77 @@ IsUnboundVar (Term t)
#else #else
inline EXTERN Term MkVarTerm (void); inline EXTERN Term MkVarTerm(void);
inline EXTERN Term inline EXTERN Term MkVarTerm()
MkVarTerm ()
{ {
return (Term) ((*H = (CELL) H, H++)); return (Term) ((*H = (CELL) H, H++));
} }
inline EXTERN int IsUnboundVar (Term); inline EXTERN int IsUnboundVar(Term);
inline EXTERN int inline EXTERN int IsUnboundVar(Term t)
IsUnboundVar (Term t)
{ {
return (int) (*VarOfTerm (t) == (t)); return (int) (*VarOfTerm(t) == (t));
} }
#endif #endif
inline EXTERN CELL *PtrOfTerm (Term); inline EXTERN CELL * PtrOfTerm(Term);
inline EXTERN CELL * inline EXTERN CELL * PtrOfTerm(Term t)
PtrOfTerm (Term t)
{ {
return (CELL *) (*(CELL *) (t)); return (CELL *) (*(CELL *)(t));
} }
inline EXTERN Functor FunctorOfTerm (Term); inline EXTERN Functor FunctorOfTerm(Term);
inline EXTERN Functor inline EXTERN Functor FunctorOfTerm(Term t)
FunctorOfTerm (Term t)
{ {
return (Functor) (*RepAppl (t)); return (Functor) (*RepAppl(t));
}
#if IN_SECOND_QUADRANT
inline EXTERN Term MkAtomTerm (Atom);
inline EXTERN Term
MkAtomTerm (Atom a)
{
return (Term) (TAGGEDA (AtomTag, (CELL *) (a) - (CELL *) HEAP_INIT_BASE));
} }
inline EXTERN Atom AtomOfTerm (Term t); inline EXTERN Term MkAtomTerm(Atom);
inline EXTERN Atom inline EXTERN Term MkAtomTerm(Atom a)
AtomOfTerm (Term t)
{ {
return (Atom) ((CELL *) HEAP_INIT_BASE + NonTagPart (t)); return (Term) (TAGGEDA(AtomTag, (CELL)(a)-HEAP_INIT_BASE));
}
#else
inline EXTERN Term MkAtomTerm (Atom);
inline EXTERN Term
MkAtomTerm (Atom a)
{
return (Term) (TAGGEDA (AtomTag, (a)));
} }
inline EXTERN Atom AtomOfTerm (Term t); inline EXTERN Atom AtomOfTerm(Term t);
inline EXTERN Atom inline EXTERN Atom AtomOfTerm(Term t)
AtomOfTerm (Term t)
{ {
return (Atom) (NonTagPart (t)); return (Atom) (HEAP_INIT_BASE+NonTagPart(t));
} }
#endif
inline EXTERN int IsAtomTerm (Term); inline EXTERN int IsAtomTerm(Term);
inline EXTERN int inline EXTERN int IsAtomTerm(Term t)
IsAtomTerm (Term t)
{ {
return (int) (CHKTAG ((t), AtomTag)); return (int) (CHKTAG((t), AtomTag));
} }
inline EXTERN Term MkIntTerm (Int); inline EXTERN Term MkIntTerm(Int);
inline EXTERN Term inline EXTERN Term MkIntTerm(Int n)
MkIntTerm (Int n)
{ {
return (Term) (TAGGED (NumberTag, (n))); return (Term) (TAGGED(NumberTag, (n)));
} }
@ -772,22 +742,20 @@ MkIntTerm (Int n)
overflow problems are possible overflow problems are possible
*/ */
inline EXTERN Term MkIntConstant (Int); inline EXTERN Term MkIntConstant(Int);
inline EXTERN Term inline EXTERN Term MkIntConstant(Int n)
MkIntConstant (Int n)
{ {
return (Term) (NONTAGGED (NumberTag, (n))); return (Term) (NONTAGGED(NumberTag, (n)));
} }
inline EXTERN int IsIntTerm (Term); inline EXTERN int IsIntTerm(Term);
inline EXTERN int inline EXTERN int IsIntTerm(Term t)
IsIntTerm (Term t)
{ {
return (int) (CHKTAG ((t), NumberTag)); return (int) (CHKTAG((t), NumberTag));
} }
@ -812,14 +780,6 @@ IsIntTerm (Term t)
#endif #endif
/************* variables related to memory allocation *******************/
/* must be before TermExt.h */
extern ADDR HeapBase,
LocalBase,
GlobalBase,
TrailBase, TrailTop, ForeignCodeBase, ForeignCodeTop, ForeignCodeMax;
/* /*
There are two types of functors: There are two types of functors:
@ -835,32 +795,29 @@ extern ADDR HeapBase,
#define IsAccessFunc(func) ((func) == FunctorAccess) #define IsAccessFunc(func) ((func) == FunctorAccess)
inline EXTERN Term MkIntegerTerm (Int); inline EXTERN Term MkIntegerTerm(Int);
inline EXTERN Term inline EXTERN Term MkIntegerTerm(Int n)
MkIntegerTerm (Int n)
{ {
return (Term) (IntInBnd (n) ? MkIntTerm (n) : MkLongIntTerm (n)); return (Term) (IntInBnd(n) ? MkIntTerm(n) : MkLongIntTerm(n));
} }
inline EXTERN int IsIntegerTerm (Term); inline EXTERN int IsIntegerTerm(Term);
inline EXTERN int inline EXTERN int IsIntegerTerm(Term t)
IsIntegerTerm (Term t)
{ {
return (int) (IsIntTerm (t) || IsLongIntTerm (t)); return (int) (IsIntTerm(t) || IsLongIntTerm(t));
} }
inline EXTERN Int IntegerOfTerm (Term); inline EXTERN Int IntegerOfTerm(Term);
inline EXTERN Int inline EXTERN Int IntegerOfTerm(Term t)
IntegerOfTerm (Term t)
{ {
return (Int) (IsIntTerm (t) ? IntOfTerm (t) : LongIntOfTerm (t)); return (Int) (IsIntTerm(t) ? IntOfTerm(t) : LongIntOfTerm(t));
} }
@ -877,63 +834,57 @@ IntegerOfTerm (Term t)
/*************** High level macros to access arguments ******************/ /*************** High level macros to access arguments ******************/
inline EXTERN Term ArgOfTerm (int i, Term t); inline EXTERN Term ArgOfTerm(int i, Term t);
inline EXTERN Term inline EXTERN Term ArgOfTerm(int i, Term t)
ArgOfTerm (int i, Term t)
{ {
return (Term) (Derefa (RepAppl (t) + (i))); return (Term) (Derefa(RepAppl(t) + (i)));
} }
inline EXTERN Term HeadOfTerm (Term); inline EXTERN Term HeadOfTerm(Term);
inline EXTERN Term inline EXTERN Term HeadOfTerm(Term t)
HeadOfTerm (Term t)
{ {
return (Term) (Derefa (RepPair (t))); return (Term) (Derefa(RepPair(t)));
} }
inline EXTERN Term TailOfTerm (Term); inline EXTERN Term TailOfTerm(Term);
inline EXTERN Term inline EXTERN Term TailOfTerm(Term t)
TailOfTerm (Term t)
{ {
return (Term) (Derefa (RepPair (t) + 1)); return (Term) (Derefa(RepPair(t) + 1));
} }
inline EXTERN Term ArgOfTermCell (int i, Term t); inline EXTERN Term ArgOfTermCell(int i, Term t);
inline EXTERN Term inline EXTERN Term ArgOfTermCell(int i, Term t)
ArgOfTermCell (int i, Term t)
{ {
return (Term) ((CELL) (RepAppl (t) + (i))); return (Term) ((CELL)(RepAppl(t) + (i)));
} }
inline EXTERN Term HeadOfTermCell (Term); inline EXTERN Term HeadOfTermCell(Term);
inline EXTERN Term inline EXTERN Term HeadOfTermCell(Term t)
HeadOfTermCell (Term t)
{ {
return (Term) ((CELL) (RepPair (t))); return (Term) ((CELL)(RepPair(t)));
} }
inline EXTERN Term TailOfTermCell (Term); inline EXTERN Term TailOfTermCell(Term);
inline EXTERN Term inline EXTERN Term TailOfTermCell(Term t)
TailOfTermCell (Term t)
{ {
return (Term) ((CELL) (RepPair (t) + 1)); return (Term) ((CELL)(RepPair(t) + 1));
} }
@ -968,12 +919,10 @@ extern char version_number[];
#if USE_THREADED_CODE #if USE_THREADED_CODE
/************ reverse lookup of instructions *****************/ /************ reverse lookup of instructions *****************/
typedef struct opcode_tab_entry typedef struct opcode_tab_entry {
{
OPCODE opc; OPCODE opc;
op_numbers opnum; op_numbers opnum;
} } opentry;
opentry;
#endif #endif
@ -989,16 +938,15 @@ extern int CurFileNo;
/********* Prolog may be in several modes *******************************/ /********* Prolog may be in several modes *******************************/
typedef enum typedef enum {
{
BootMode = 1, /* if booting or restoring */ BootMode = 1, /* if booting or restoring */
UserMode = 2, /* Normal mode */ UserMode = 2, /* Normal mode */
CritMode = 4, /* If we are meddling with the heap */ CritMode = 4, /* If we are meddling with the heap */
AbortMode = 8, /* expecting to abort */ AbortMode = 8, /* expecting to abort */
InterruptMode = 16, /* under an interrupt */ InterruptMode = 16, /* under an interrupt */
InErrorMode = 32 /* under an interrupt */ InErrorMode = 32, /* under an interrupt */
} ConsoleGetcMode = 64 /* blocked reading from console */
prolog_exec_mode; } prolog_exec_mode;
extern prolog_exec_mode PrologMode; extern prolog_exec_mode PrologMode;
extern int CritLocks; extern int CritLocks;
@ -1008,6 +956,9 @@ extern int CritLocks;
extern char **yap_args; extern char **yap_args;
extern int yap_argc; extern int yap_argc;
/******************* controlling debugging ****************************/
extern int creep_on;
#ifdef YAPOR #ifdef YAPOR
#define YAPEnterCriticalSection() \ #define YAPEnterCriticalSection() \
{ \ { \
@ -1070,12 +1021,10 @@ extern int compile_arrays;
/* I assume that the size of this structure is a multiple of the size /* I assume that the size of this structure is a multiple of the size
of CELL!!! */ of CELL!!! */
typedef struct TIMED_MAVAR typedef struct TIMED_MAVAR{
{
CELL value; CELL value;
CELL clock; CELL clock;
} } timed_var;
timed_var;
/********* while debugging you may need some info ***********************/ /********* while debugging you may need some info ***********************/
@ -1100,3 +1049,4 @@ extern int snoozing;
#if SBA #if SBA
#include "sbaunify.h" #include "sbaunify.h"
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -228,15 +228,6 @@ inline EXTERN Atom AtomAdjust(Atom at)
inline EXTERN Term AtomTermAdjust(Term);
inline EXTERN Term AtomTermAdjust(Term at)
{
return (Term) ((at) );
}
inline EXTERN Prop PropAdjust(Prop); inline EXTERN Prop PropAdjust(Prop);
inline EXTERN Prop PropAdjust(Prop p) inline EXTERN Prop PropAdjust(Prop p)
@ -251,11 +242,20 @@ inline EXTERN Atom AtomAdjust(Atom);
inline EXTERN Atom AtomAdjust(Atom at) inline EXTERN Atom AtomAdjust(Atom at)
{ {
return (Atom) ((Atom)(CharP(at)+HDiff) ); return (Atom) ((at == NULL ? (at) : (Atom)(CharP(at)+HDiff) ));
} }
#if MMAP_ADDR >= 0x40000000
inline EXTERN Prop PropAdjust(Prop);
inline EXTERN Prop PropAdjust(Prop p)
{
return (Prop) ((p == NULL ? (p) : (Prop)(CharP(p)+HDiff)) );
}
#endif
inline EXTERN Term AtomTermAdjust(Term); inline EXTERN Term AtomTermAdjust(Term);
@ -265,27 +265,6 @@ inline EXTERN Term AtomTermAdjust(Term at)
} }
#else
inline EXTERN Term AtomTermAdjust(Term);
inline EXTERN Term AtomTermAdjust(Term at)
{
return (Term) (MkAtomTerm((Atom)(CharP(AtomOfTerm(at)+HDiff))) );
}
#endif
inline EXTERN Prop PropAdjust(Prop);
inline EXTERN Prop PropAdjust(Prop p)
{
return (Prop) ((Prop)(CharP(p)+HDiff) );
}
#endif
#if TAGS_FAST_OPS #if TAGS_FAST_OPS
inline EXTERN Term BlobTermAdjust(Term); inline EXTERN Term BlobTermAdjust(Term);
@ -393,7 +372,16 @@ inline EXTERN PredEntry * PtoPredAdjust(PredEntry *);
inline EXTERN PredEntry * PtoPredAdjust(PredEntry * ptr) inline EXTERN PredEntry * PtoPredAdjust(PredEntry * ptr)
{ {
return (PredEntry *) (((CELL *)(CharP(ptr) + HDiff)) ); return (PredEntry *) (((PredEntry *)(CharP(ptr) + HDiff)) );
}
inline EXTERN ArrayEntry * PtoArrayEAdjust(ArrayEntry *);
inline EXTERN ArrayEntry * PtoArrayEAdjust(ArrayEntry * ptr)
{
return (ArrayEntry *) (((ArrayEntry *)(CharP(ptr) + HDiff)) );
} }

View File

@ -12,7 +12,13 @@ cd ../OPTYap
splat splat
cd ../VC cd ../VC
splat splat
cd include cd ../LGPL
splat
cd pillow
splat
cd examples
splat
cd ../../../include
splat splat
/bin/cp config.h config.h.mine /bin/cp config.h config.h.mine
/bin/cp ../../../bins/cyg/*.h . /bin/cp ../../../bins/cyg/*.h .

View File

@ -847,7 +847,7 @@ CC="cc -64" $YAP_SRC_PATH/configure --...
@cindex booting @cindex booting
We next describe how to invoke Yap in Unix systems. We next describe how to invoke Yap in Unix systems.
@node Running Yap Interactively,Running Prolog Files, ,Run @node Running Yap Interactively, ,Running Prolog Files,Run
@section Running Yap Interactively @section Running Yap Interactively
Most often you will want to use Yap in interactive mode. Assuming that Most often you will want to use Yap in interactive mode. Assuming that
@ -924,7 +924,7 @@ YAP will try to find library files from the YAPSHAREDIR/library
directory. directory.
@end itemize @end itemize
@node Running Prolog Files, ,Interactive Mode, Run @node Running Prolog Files, Running Yap Interactively, , Run
@section Running Prolog Files @section Running Prolog Files
YAP can also be used to run Prolog files as scripts, at least in YAP can also be used to run Prolog files as scripts, at least in
@ -2473,9 +2473,9 @@ be @code{unknown}, and the second argument should be either
@code{error}, @code{warning}, @code{fail}, or a goal. @code{error}, @code{warning}, @code{fail}, or a goal.
@item user:unknown_predicate_handler(+G,+M,?NG) @item user:unknown_predicate_handler(+G,+M,?NG)
@findex user:unknown_predicate_handler/3 @findex unknown_predicate_handler/3
@syindex user:unknown_predicate_handler/3 @syindex unknown_predicate_handler/3
@cnindex user:unknown_predicate_handler/3 @cnindex unknown_predicate_handler/3
The user may also define clauses for The user may also define clauses for
@code{user:unknown_predicate_handler/3} hook predicate. This @code{user:unknown_predicate_handler/3} hook predicate. This
user-defined procedure is called before any system processing for the user-defined procedure is called before any system processing for the
@ -5312,9 +5312,9 @@ for DCG rules is applied, together with the arithmetic optimizer
whenever the compilation of arithmetic expressions is in progress. whenever the compilation of arithmetic expressions is in progress.
@item user:goal_expansion(+@var{G},+@var{M},-@var{NG}) @item user:goal_expansion(+@var{G},+@var{M},-@var{NG})
@findex user:goal_expansion/3 @findex goal_expansion/3
@snindex user:goal_expansion/3 @snindex goal_expansion/3
@cnindex user:goal_expansion/3 @cnindex goal_expansion/3
Yap now supports @code{goal_expansion/3}. This is an user-defined Yap now supports @code{goal_expansion/3}. This is an user-defined
procedure that is called after term expansion when compiling or procedure that is called after term expansion when compiling or
asserting goals for each sub-goal in a clause. The first argument is asserting goals for each sub-goal in a clause. The first argument is