amd64 fixes
library fixes git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1247 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
f40265838d
commit
0139bfc33a
@ -1661,7 +1661,7 @@ msb(Int inp) /* calculate the most significant bit for an integer */
|
||||
}
|
||||
|
||||
while (off) {
|
||||
int limit = 1 << (off);
|
||||
Int limit = 1L << (off);
|
||||
if (inp >= limit) {
|
||||
out += off;
|
||||
inp >>= off;
|
||||
|
13
C/compiler.c
13
C/compiler.c
@ -11,8 +11,12 @@
|
||||
* File: compiler.c *
|
||||
* comments: Clause compiler *
|
||||
* *
|
||||
* Last rev: $Date: 2005-01-28 23:14:35 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2005-02-21 16:49:39 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.61 2005/01/28 23:14:35 vsc
|
||||
* move to Yap-4.5.7
|
||||
* Fix clause size
|
||||
*
|
||||
* Revision 1.60 2005/01/14 20:55:16 vsc
|
||||
* improve register liveness calculations.
|
||||
*
|
||||
@ -1943,13 +1947,13 @@ clear_bvarray(int var, CELL *bvarray
|
||||
var -= max;
|
||||
}
|
||||
/* now put a 0 on it, from now on the variable is initialised */
|
||||
nbit = (1 << var);
|
||||
nbit = (1L << var);
|
||||
#ifdef DEBUG
|
||||
if (*bvarray & nbit) {
|
||||
/* someone had already marked this variable: complain */
|
||||
Yap_Error_TYPE = SYSTEM_ERROR;
|
||||
Yap_Error_Term = TermNil;
|
||||
Yap_ErrorMessage = "repeated bit for variable";
|
||||
Yap_ErrorMessage = "compiler internal error: variable initialised twice";
|
||||
save_machine_regs();
|
||||
longjmp(cglobs->cint.CompilerBotch, 2);
|
||||
}
|
||||
@ -2007,6 +2011,9 @@ reset_bvmap(CELL *bvarray, int nperm, compiler_struct *cglobs)
|
||||
{
|
||||
int size, size1, env_size, i;
|
||||
CELL *source;
|
||||
|
||||
if (bvarray == NULL)
|
||||
|
||||
if (bvindex == 0) {
|
||||
Yap_Error_TYPE = SYSTEM_ERROR;
|
||||
Yap_Error_Term = TermNil;
|
||||
|
@ -313,14 +313,14 @@ static void create_hash_table(DBProp p, Int hint) {
|
||||
if (hint < p->NOfEntries)
|
||||
hint = p->NOfEntries;
|
||||
while (off) {
|
||||
int limit = 1 << (off);
|
||||
Int limit = 1L << (off);
|
||||
if (inp >= limit) {
|
||||
out += off;
|
||||
inp >>= off;
|
||||
}
|
||||
off >>= 1;
|
||||
}
|
||||
if ((size = 1 << out) < hint)
|
||||
if ((size = 1L << out) < hint)
|
||||
hint <<= 1;
|
||||
/* clean up the table */
|
||||
pt = tbl = (hash_db_entry *)AllocDBSpace(hint*sizeof(hash_db_entry));
|
||||
|
@ -273,16 +273,16 @@ dump_stack(void)
|
||||
fprintf(stderr,"%% YAP ERROR: Code Space Collided against Global (%p--%p)\n", HeapTop, Yap_GlobalBase);
|
||||
} else {
|
||||
#if !USE_SYSTEM_MALLOC
|
||||
fprintf (stderr,"%dKB of Code Space (%p--%p)\n",((CELL)HeapTop-(CELL)Yap_HeapBase)/1024,Yap_HeapBase,HeapTop);
|
||||
fprintf (stderr,"%ldKB of Code Space (%p--%p)\n",(long int)((CELL)HeapTop-(CELL)Yap_HeapBase)/1024,Yap_HeapBase,HeapTop);
|
||||
#if USE_DL_MALLOC
|
||||
if (Yap_hole_start) {
|
||||
fprintf (stderr," Last hole: %p--%p\n", Yap_hole_start, Yap_hole_end);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
fprintf (stderr,"%dKB of Global Stack (%p--%p)\n",(sizeof(CELL)*(H-H0))/1024,H0,H);
|
||||
fprintf (stderr,"%dKB of Local Stack (%p--%p)\n",(sizeof(CELL)*(LCL0-ASP))/1024,ASP,LCL0);
|
||||
fprintf (stderr,"%dKB of Trail (%p--%p)\n",((ADDR)TR-Yap_TrailBase)/1024,Yap_TrailBase,TR);
|
||||
fprintf (stderr,"%ldKB of Global Stack (%p--%p)\n",(long int)(sizeof(CELL)*(H-H0))/1024,H0,H);
|
||||
fprintf (stderr,"%ldKB of Local Stack (%p--%p)\n",(long int)(sizeof(CELL)*(LCL0-ASP))/1024,ASP,LCL0);
|
||||
fprintf (stderr,"%ldKB of Trail (%p--%p)\n",(long int)((ADDR)TR-Yap_TrailBase)/1024,Yap_TrailBase,TR);
|
||||
fprintf (stderr,"Performed %d garbage collections\n", GcCalls);
|
||||
#if LOW_LEVEL_TRACER
|
||||
{
|
||||
|
11
C/index.c
11
C/index.c
@ -11,8 +11,12 @@
|
||||
* File: index.c *
|
||||
* comments: Indexing a Prolog predicate *
|
||||
* *
|
||||
* Last rev: $Date: 2005-01-28 23:14:36 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2005-02-21 16:50:00 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.114 2005/01/28 23:14:36 vsc
|
||||
* move to Yap-4.5.7
|
||||
* Fix clause size
|
||||
*
|
||||
* Revision 1.113 2005/01/15 05:21:36 vsc
|
||||
* fix bug in clause emulator
|
||||
*
|
||||
@ -3485,6 +3489,9 @@ do_pair(GroupDef *grp, Term t, struct intermediates *cint, UInt argno, int first
|
||||
while (IsPairTerm(max->Tag) && max != grp->LastClause) {
|
||||
max++;
|
||||
}
|
||||
if (!IsPairTerm(max->Tag)) {
|
||||
max--;
|
||||
}
|
||||
if (min > grp->LastClause) {
|
||||
/* no clauses, just skip */
|
||||
return nxtlbl;
|
||||
@ -3840,7 +3847,7 @@ copy_clauses(ClauseDef *max0, ClauseDef *min0, CELL *top, struct intermediates *
|
||||
static UInt
|
||||
do_compound_index(ClauseDef *min0, ClauseDef* max0, Term* sreg, struct intermediates *cint, UInt i, UInt arity, UInt argno, UInt fail_l, int first, int last_arg, int clleft, CELL *top, int done_work)
|
||||
{
|
||||
int ret_lab = 0, *newlabp;
|
||||
UInt ret_lab = 0, *newlabp;
|
||||
CELL *top0 = top;
|
||||
ClauseDef *min, *max;
|
||||
PredEntry *ap = cint->CurrentPred;
|
||||
|
28
C/stdpreds.c
28
C/stdpreds.c
@ -11,8 +11,12 @@
|
||||
* File: stdpreds.c *
|
||||
* comments: General-purpose C implemented system predicates *
|
||||
* *
|
||||
* Last rev: $Date: 2005-02-08 04:05:35 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2005-02-21 16:50:04 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.81 2005/02/08 04:05:35 vsc
|
||||
* fix mess with add clause
|
||||
* improves on sigsegv handling
|
||||
*
|
||||
* Revision 1.80 2005/01/05 05:32:37 vsc
|
||||
* Ricardo's latest version of profiler.
|
||||
*
|
||||
@ -231,7 +235,7 @@ static Int order=0;
|
||||
Int temp;
|
||||
order++;
|
||||
if (index_code) temp=-order; else temp=order;
|
||||
fprintf(FPreds,"+%p %p %p %d",code_start,code_end, pe, temp);
|
||||
fprintf(FPreds,"+%p %p %p %ld",code_start,code_end, pe, (long int)temp);
|
||||
#if MORE_INFO_FILE
|
||||
if (pe->FunctorOfPred->KindOfPE==47872) {
|
||||
if (pe->ArityOfPE) {
|
||||
@ -334,7 +338,7 @@ showprofres(UInt type) {
|
||||
|
||||
ProfPreds=0;
|
||||
pr=(clauseentry *) TR;
|
||||
while (fscanf(FPreds,"+%p %p %p %d",&(pr->beg),&(pr->end),&(pr->pp),&(pr->ts)) > 0){
|
||||
while (fscanf(FPreds,"+%p %p %p %ld",&(pr->beg),&(pr->end),&(pr->pp),&(pr->ts)) > 0){
|
||||
int c;
|
||||
pr->pcs = 0L;
|
||||
pr++;
|
||||
@ -447,7 +451,7 @@ showprofres(UInt type) {
|
||||
printf(" %s",RepAtom(AtomOfTerm(myp->ModuleOfPred))->StrOfAE);
|
||||
printf(":%s",RepAtom(NameOfFunctor(myp->FunctorOfPred))->StrOfAE);
|
||||
if (myp->ArityOfPE) printf("/%d",myp->ArityOfPE);
|
||||
printf(" -> %u (%3.1f%c)\n",calls,(float) calls*100/ProfCalls,'%');
|
||||
printf(" -> %lu (%3.1f%c)\n",(unsigned long int)calls,(float) calls*100/ProfCalls,'%');
|
||||
}
|
||||
while (t<pr && t->pp == myp) t++;
|
||||
}
|
||||
@ -472,19 +476,19 @@ showprofres(UInt type) {
|
||||
printf(" %s",RepAtom(AtomOfTerm(t->pp->ModuleOfPred))->StrOfAE);
|
||||
printf(":%s",RepAtom(NameOfFunctor(t->pp->FunctorOfPred))->StrOfAE);
|
||||
if (t->pp->ArityOfPE) printf("/%d",t->pp->ArityOfPE);
|
||||
printf(" -> %u (%3.1f%c)\n",calls,(float) calls*100/ProfCalls,'%');
|
||||
printf(" -> %lu (%3.1f%c)\n",(unsigned long int)calls,(float) calls*100/ProfCalls,'%');
|
||||
}
|
||||
t++;
|
||||
}
|
||||
}
|
||||
count=ProfCalls-(count+InGrowHeap+InGrowStack+InGC+InError+InUnify+InCCall); // Falta +InCCall
|
||||
if (InGrowHeap>0) printf("%p sys: GrowHeap -> %u (%3.1f%c)\n",(void *) GrowHeapMode,InGrowHeap,(float) InGrowHeap*100/ProfCalls,'%');
|
||||
if (InGrowStack>0) printf("%p sys: GrowStack -> %u (%3.1f%c)\n",(void *) GrowStackMode,InGrowStack,(float) InGrowStack*100/ProfCalls,'%');
|
||||
if (InGC>0) printf("%p sys: GC -> %u (%3.1f%c)\n",(void *) GCMode,InGC,(float) InGC*100/ProfCalls,'%');
|
||||
if (InError>0) printf("%p sys: ErrorHandling -> %u (%3.1f%c)\n",(void *) ErrorHandlingMode,InError,(float) InError*100/ProfCalls,'%');
|
||||
if (InUnify>0) printf("%p sys: Unify -> %u (%3.1f%c)\n",(void *) UnifyMode,InUnify,(float) InUnify*100/ProfCalls,'%');
|
||||
if (InCCall>0) printf("%p sys: C Code -> %u (%3.1f%c)\n",(void *) CCallMode,InCCall,(float) InCCall*100/ProfCalls,'%');
|
||||
if (count>0) printf("Unknown:Unknown -> %u (%3.1f%c)\n",count,(float) count*100/ProfCalls,'%');
|
||||
if (InGrowHeap>0) printf("%p sys: GrowHeap -> %lu (%3.1f%c)\n",(void *) GrowHeapMode,(unsigned long int)InGrowHeap,(float) InGrowHeap*100/ProfCalls,'%');
|
||||
if (InGrowStack>0) printf("%p sys: GrowStack -> %lu (%3.1f%c)\n",(void *) GrowStackMode,(unsigned long int)InGrowStack,(float) InGrowStack*100/ProfCalls,'%');
|
||||
if (InGC>0) printf("%p sys: GC -> %lu (%3.1f%c)\n",(void *) GCMode,(unsigned long int)InGC,(float) InGC*100/ProfCalls,'%');
|
||||
if (InError>0) printf("%p sys: ErrorHandling -> %lu (%3.1f%c)\n",(void *) ErrorHandlingMode,(unsigned long int)InError,(float) InError*100/ProfCalls,'%');
|
||||
if (InUnify>0) printf("%p sys: Unify -> %lu (%3.1f%c)\n",(void *) UnifyMode,(unsigned long int)InUnify,(float) InUnify*100/ProfCalls,'%');
|
||||
if (InCCall>0) printf("%p sys: C Code -> %lu (%3.1f%c)\n",(void *) CCallMode,(unsigned long int)InCCall,(float) InCCall*100/ProfCalls,'%');
|
||||
if (count>0) printf("Unknown:Unknown -> %lu (%3.1f%c)\n",(unsigned long int)count,(float) count*100/ProfCalls,'%');
|
||||
printf("Total of Calls=%u \n",ProfCalls);
|
||||
|
||||
return TRUE;
|
||||
|
@ -120,11 +120,8 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args)
|
||||
/* extern int gc_calls; */
|
||||
|
||||
vsc_count++;
|
||||
/* if (vsc_count < 16458458000LL)
|
||||
if (vsc_count < 3590LL)
|
||||
return;
|
||||
if (vsc_count == 16458458322LL)
|
||||
jmp_deb(1);
|
||||
*/
|
||||
#ifdef COMMENTED
|
||||
// if (vsc_count == 218280)
|
||||
// vsc_xstop = 1;
|
||||
|
@ -1587,7 +1587,7 @@ static int subsumes_complex(register CELL *pt0, register CELL *pt0_end, register
|
||||
loop:
|
||||
while (pt0 < pt0_end) {
|
||||
register CELL d0, d1;
|
||||
int our_write_mode = write_mode;
|
||||
Int our_write_mode = write_mode;
|
||||
|
||||
++ pt0;
|
||||
++ pt1;
|
||||
|
@ -176,7 +176,7 @@ ord_intersection(>, Head1, Tail1, _, Tail2, Intersection) :-
|
||||
% is true when Intersection is the ordered representation of Set1
|
||||
% and Set2, provided that Set1 and Set2 are ordered sets.
|
||||
|
||||
ord_intersection(L, [], [], L) :- !.
|
||||
ord_intersection(L, [], [], []) :- !.
|
||||
ord_intersection([], L, [], L) :- !.
|
||||
ord_intersection([Head1|Tail1], [Head2|Tail2], Intersection, Difference) :-
|
||||
compare(Order, Head1, Head2),
|
||||
|
@ -11,7 +11,7 @@
|
||||
* Last rev: December 90 *
|
||||
* mods: *
|
||||
* comments: Original Tag Scheme for machines with 32 bits adresses *
|
||||
* version: $Id: Tags_64bits.h.m4,v 1.3 2003-06-06 13:16:40 vsc Exp $ *
|
||||
* version: $Id: Tags_64bits.h.m4,v 1.4 2005-02-21 16:50:18 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#define TAG_64BITS 1
|
||||
@ -33,7 +33,7 @@ property list
|
||||
|
||||
*/
|
||||
|
||||
#define SHIFT_HIGH_TAG 61
|
||||
#define SHIFT_HIGH_TAG 63
|
||||
|
||||
#define MKTAG(HI,LO) ((((UInt) (HI))<<SHIFT_HIGH_TAG)|(LO))
|
||||
|
||||
|
@ -11,8 +11,12 @@
|
||||
* File: errors.yap *
|
||||
* comments: error messages for YAP *
|
||||
* *
|
||||
* Last rev: $Date: 2005-01-28 23:14:41 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2005-02-21 16:50:21 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.60 2005/01/28 23:14:41 vsc
|
||||
* move to Yap-4.5.7
|
||||
* Fix clause size
|
||||
*
|
||||
* Revision 1.59 2005/01/13 05:47:27 vsc
|
||||
* lgamma broke arithmetic optimisation
|
||||
* integer_y has type y
|
||||
@ -483,6 +487,9 @@ print_message(Level, Mss) :-
|
||||
'$output_error_message'(existence_error(mutex,F), W) :-
|
||||
format(user_error,'% EXISTENCE ERROR- ~w could not open mutex ~w~n',
|
||||
[W,F]).
|
||||
'$output_error_message'(existence_error(library,F), W) :-
|
||||
format(user_error,'% EXISTENCE ERROR- ~w could not open library ~w~n',
|
||||
[W,F]).
|
||||
'$output_error_message'(existence_error(queue,F), W) :-
|
||||
format(user_error,'% EXISTENCE ERROR- ~w could not open message queue ~w~n',
|
||||
[W,F]).
|
||||
|
Reference in New Issue
Block a user