absmi.c: no need to reload CACHED_A1() during expand, and doing so will
destroy S and break RISC alloc.c: guarantee alignment by 8 for SPARC32 iopreds.c: get rid of unnecessary decl\ git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@938 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
01703de3a0
commit
2867b43f06
@ -6389,12 +6389,11 @@ Yap_absmi(int inp)
|
|||||||
if (ASP > (CELL *) B) {
|
if (ASP > (CELL *) B) {
|
||||||
ASP = (CELL *) B;
|
ASP = (CELL *) B;
|
||||||
}
|
}
|
||||||
saveregs();
|
saveregs();
|
||||||
pt0 = Yap_ExpandIndex(pe);
|
pt0 = Yap_ExpandIndex(pe);
|
||||||
/* restart index */
|
/* restart index */
|
||||||
setregs();
|
setregs();
|
||||||
PREG = pt0;
|
PREG = pt0;
|
||||||
CACHED_A1() = ARG1;
|
|
||||||
JMPNext();
|
JMPNext();
|
||||||
}
|
}
|
||||||
ENDBOp();
|
ENDBOp();
|
||||||
|
11
C/alloc.c
11
C/alloc.c
@ -12,7 +12,7 @@
|
|||||||
* Last rev: *
|
* Last rev: *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: allocating space *
|
* comments: allocating space *
|
||||||
* version:$Id: alloc.c,v 1.41 2003-11-12 12:33:30 vsc Exp $ *
|
* version:$Id: alloc.c,v 1.42 2003-11-28 01:26:53 vsc Exp $ *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#ifdef SCCS
|
#ifdef SCCS
|
||||||
static char SccsId[] = "%W% %G%";
|
static char SccsId[] = "%W% %G%";
|
||||||
@ -255,6 +255,14 @@ AllocHeap(unsigned int size)
|
|||||||
#endif
|
#endif
|
||||||
if (size < (sizeof(YAP_SEG_SIZE)+sizeof(BlockHeader))/sizeof(CELL))
|
if (size < (sizeof(YAP_SEG_SIZE)+sizeof(BlockHeader))/sizeof(CELL))
|
||||||
size = (sizeof(YAP_SEG_SIZE)+sizeof(BlockHeader))/sizeof(CELL);
|
size = (sizeof(YAP_SEG_SIZE)+sizeof(BlockHeader))/sizeof(CELL);
|
||||||
|
#if SIZEOF_INT_P==4
|
||||||
|
/*
|
||||||
|
guarantee that the space seen by the user is always aligned at multiples
|
||||||
|
of a double word. This improves alignment, and guarantees correctness
|
||||||
|
for machines which require aligned 64 bits, such as SPARCs.
|
||||||
|
*/
|
||||||
|
if ((size & 1) == 0) size++;
|
||||||
|
#endif
|
||||||
LOCK(FreeBlocksLock);
|
LOCK(FreeBlocksLock);
|
||||||
if ((b = GetBlock(size))) {
|
if ((b = GetBlock(size))) {
|
||||||
if (b->b_size >= size + 6 + 1) {
|
if (b->b_size >= size + 6 + 1) {
|
||||||
@ -1048,6 +1056,7 @@ InitHeap(void *heap_addr)
|
|||||||
|
|
||||||
HeapMax = HeapUsed = HeapTop-Yap_HeapBase;
|
HeapMax = HeapUsed = HeapTop-Yap_HeapBase;
|
||||||
|
|
||||||
|
/* notice that this forces odd addresses */
|
||||||
*((YAP_SEG_SIZE *) HeapTop) = InUseFlag;
|
*((YAP_SEG_SIZE *) HeapTop) = InUseFlag;
|
||||||
HeapTop = HeapTop + sizeof(YAP_SEG_SIZE);
|
HeapTop = HeapTop + sizeof(YAP_SEG_SIZE);
|
||||||
*((YAP_SEG_SIZE *) HeapTop) = InUseFlag;
|
*((YAP_SEG_SIZE *) HeapTop) = InUseFlag;
|
||||||
|
@ -132,7 +132,6 @@ STATIC_PROTO (Int p_current_input, (void));
|
|||||||
STATIC_PROTO (Int p_current_output, (void));
|
STATIC_PROTO (Int p_current_output, (void));
|
||||||
STATIC_PROTO (Int p_write, (void));
|
STATIC_PROTO (Int p_write, (void));
|
||||||
STATIC_PROTO (Int p_write2, (void));
|
STATIC_PROTO (Int p_write2, (void));
|
||||||
STATIC_PROTO (Int p_inform_of_clause, (void));
|
|
||||||
STATIC_PROTO (Int p_set_read_error_handler, (void));
|
STATIC_PROTO (Int p_set_read_error_handler, (void));
|
||||||
STATIC_PROTO (Int p_get_read_error_handler, (void));
|
STATIC_PROTO (Int p_get_read_error_handler, (void));
|
||||||
STATIC_PROTO (Int p_read, (void));
|
STATIC_PROTO (Int p_read, (void));
|
||||||
|
@ -229,7 +229,6 @@ typedef struct pred_entry {
|
|||||||
Int IndxId; /* Index for a certain key */
|
Int IndxId; /* Index for a certain key */
|
||||||
struct mfile *file_srcs; /* for multifile predicates */
|
struct mfile *file_srcs; /* for multifile predicates */
|
||||||
} src;
|
} src;
|
||||||
struct pred_entry *NextPredOfModule; /* next pred for same module */
|
|
||||||
#if defined(YAPOR) || defined(THREADS)
|
#if defined(YAPOR) || defined(THREADS)
|
||||||
rwlock_t PRWLock; /* a simple lock to protect this entry */
|
rwlock_t PRWLock; /* a simple lock to protect this entry */
|
||||||
#endif
|
#endif
|
||||||
@ -237,7 +236,10 @@ typedef struct pred_entry {
|
|||||||
tab_ent_ptr TableOfPred;
|
tab_ent_ptr TableOfPred;
|
||||||
#endif /* TABLING */
|
#endif /* TABLING */
|
||||||
SMALLUNSGN ModuleOfPred; /* module for this definition */
|
SMALLUNSGN ModuleOfPred; /* module for this definition */
|
||||||
|
/* This must be at an odd number of cells, otherwise it
|
||||||
|
will not be aligned on RISC machines */
|
||||||
profile_data StatisticsForPred; /* enable profiling for predicate */
|
profile_data StatisticsForPred; /* enable profiling for predicate */
|
||||||
|
struct pred_entry *NextPredOfModule; /* next pred for same module */
|
||||||
} PredEntry;
|
} PredEntry;
|
||||||
#define PEProp ((PropFlags)(0x0000))
|
#define PEProp ((PropFlags)(0x0000))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user