make sure that condor version always grows trail!
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1137 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
7e9c32fd52
commit
70f9c1176d
5
C/grow.c
5
C/grow.c
@ -845,7 +845,9 @@ growatomtable(void)
|
|||||||
UNLOCK(SignalLock);
|
UNLOCK(SignalLock);
|
||||||
while ((ntb = (AtomHashEntry *)Yap_AllocCodeSpace(nsize*sizeof(AtomHashEntry))) == NULL) {
|
while ((ntb = (AtomHashEntry *)Yap_AllocCodeSpace(nsize*sizeof(AtomHashEntry))) == NULL) {
|
||||||
/* leave for next time */
|
/* leave for next time */
|
||||||
|
#if !USE_SYSTEM_MALLOC
|
||||||
if (!do_growheap(FALSE, nsize*sizeof(AtomHashEntry), NULL))
|
if (!do_growheap(FALSE, nsize*sizeof(AtomHashEntry), NULL))
|
||||||
|
#endif
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
atom_table_overflows++;
|
atom_table_overflows++;
|
||||||
@ -1184,6 +1186,9 @@ static int do_growtrail(long size)
|
|||||||
UInt start_growth_time = Yap_cputime(), growth_time;
|
UInt start_growth_time = Yap_cputime(), growth_time;
|
||||||
int gc_verbose = Yap_is_gc_verbose();
|
int gc_verbose = Yap_is_gc_verbose();
|
||||||
|
|
||||||
|
/* at least 64K for trail */
|
||||||
|
if (size < 64*1024)
|
||||||
|
size = 64*1024;
|
||||||
/* adjust to a multiple of 256) */
|
/* adjust to a multiple of 256) */
|
||||||
size = AdjustPageSize(size);
|
size = AdjustPageSize(size);
|
||||||
trail_overflows++;
|
trail_overflows++;
|
||||||
|
109
C/index.c
109
C/index.c
@ -11,8 +11,11 @@
|
|||||||
* File: index.c *
|
* File: index.c *
|
||||||
* comments: Indexing a Prolog predicate *
|
* comments: Indexing a Prolog predicate *
|
||||||
* *
|
* *
|
||||||
* Last rev: $Date: 2004-09-03 03:11:09 $,$Author: vsc $ *
|
* Last rev: $Date: 2004-09-14 03:30:06 $,$Author: vsc $ *
|
||||||
* $Log: not supported by cvs2svn $
|
* $Log: not supported by cvs2svn $
|
||||||
|
* Revision 1.97 2004/09/03 03:11:09 vsc
|
||||||
|
* memory management fixes
|
||||||
|
*
|
||||||
* Revision 1.96 2004/08/27 20:18:52 vsc
|
* Revision 1.96 2004/08/27 20:18:52 vsc
|
||||||
* more small fixes
|
* more small fixes
|
||||||
*
|
*
|
||||||
@ -3730,8 +3733,13 @@ reset_stack(istack_entry *sp0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static istack_entry *
|
static istack_entry *
|
||||||
push_stack(istack_entry *sp, Int arg, Term Tag, Term extra)
|
push_stack(istack_entry *sp, Int arg, Term Tag, Term extra, struct intermediates *cint)
|
||||||
{
|
{
|
||||||
|
#if !OS_HANDLES_TR_OVERFLOW || USE_SYSTEM_MALLOC
|
||||||
|
if (sp+1 > (istack_entry *)Yap_TrailTop) {
|
||||||
|
longjmp(cint->CompilerBotch,4);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
sp->pos = arg;
|
sp->pos = arg;
|
||||||
sp->val = Tag;
|
sp->val = Tag;
|
||||||
sp->extra = extra;
|
sp->extra = extra;
|
||||||
@ -4216,16 +4224,16 @@ expand_index(struct intermediates *cint) {
|
|||||||
labp = &(ipc->u.llll.l4);
|
labp = &(ipc->u.llll.l4);
|
||||||
ipc = ipc->u.llll.l4;
|
ipc = ipc->u.llll.l4;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint);
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
olabp = NULL;
|
olabp = NULL;
|
||||||
labp = &(ipc->u.llll.l1);
|
labp = &(ipc->u.llll.l1);
|
||||||
ipc = ipc->u.llll.l1;
|
ipc = ipc->u.llll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.llll.l3;
|
ipc = ipc->u.llll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, argno, t, TermNil);
|
sp = push_stack(sp, argno, t, TermNil, cint);
|
||||||
ipc = ipc->u.llll.l2;
|
ipc = ipc->u.llll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -4241,13 +4249,13 @@ expand_index(struct intermediates *cint) {
|
|||||||
olabp = NULL;
|
olabp = NULL;
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
labp = &(ipc->u.ollll.l1);
|
labp = &(ipc->u.ollll.l1);
|
||||||
sp = push_stack(sp, 1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint);
|
||||||
ipc = ipc->u.ollll.l1;
|
ipc = ipc->u.ollll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.ollll.l3;
|
ipc = ipc->u.ollll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, argno, t, TermNil);
|
sp = push_stack(sp, argno, t, TermNil, cint);
|
||||||
ipc = ipc->u.ollll.l2;
|
ipc = ipc->u.ollll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -4262,14 +4270,14 @@ expand_index(struct intermediates *cint) {
|
|||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
olabp = NULL;
|
olabp = NULL;
|
||||||
sp = push_stack(sp, argno, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, argno, AbsPair(NULL), TermNil, cint);
|
||||||
labp = &(ipc->u.xllll.l1);
|
labp = &(ipc->u.xllll.l1);
|
||||||
ipc = ipc->u.xllll.l1;
|
ipc = ipc->u.xllll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, argno, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, argno, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.xllll.l3;
|
ipc = ipc->u.xllll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, argno, t, TermNil);
|
sp = push_stack(sp, argno, t, TermNil, cint);
|
||||||
ipc = ipc->u.xllll.l2;
|
ipc = ipc->u.xllll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -4285,20 +4293,20 @@ expand_index(struct intermediates *cint) {
|
|||||||
i++;
|
i++;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
sp = push_stack(sp, -i-1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, -i-1, AbsPair(NULL), TermNil, cint);
|
||||||
olabp = NULL;
|
olabp = NULL;
|
||||||
labp = &(ipc->u.sllll.l1);
|
labp = &(ipc->u.sllll.l1);
|
||||||
ipc = ipc->u.sllll.l1;
|
ipc = ipc->u.sllll.l1;
|
||||||
i = 0;
|
i = 0;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, -i-1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, -i-1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.sllll.l3;
|
ipc = ipc->u.sllll.l3;
|
||||||
i = 0;
|
i = 0;
|
||||||
} else {
|
} else {
|
||||||
/* We don't push stack here, instead we go over to next argument
|
/* We don't push stack here, instead we go over to next argument
|
||||||
sp = push_stack(sp, -i-1, t);
|
sp = push_stack(sp, -i-1, t, cint);
|
||||||
*/
|
*/
|
||||||
sp = push_stack(sp, -i-1, t, TermNil);
|
sp = push_stack(sp, -i-1, t, TermNil, cint);
|
||||||
ipc = ipc->u.sllll.l2;
|
ipc = ipc->u.sllll.l2;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -4689,8 +4697,13 @@ Yap_ExpandIndex(PredEntry *ap) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static path_stack_entry *
|
static path_stack_entry *
|
||||||
push_path(path_stack_entry *sp, yamop **pipc, ClauseDef *clp)
|
push_path(path_stack_entry *sp, yamop **pipc, ClauseDef *clp, struct intermediates *cint)
|
||||||
{
|
{
|
||||||
|
#if !OS_HANDLES_TR_OVERFLOW || USE_SYSTEM_MALLOC
|
||||||
|
if (sp+1 > (path_stack_entry *)Yap_TrailTop) {
|
||||||
|
longjmp(cint->CompilerBotch,4);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
sp->flag = pc_entry;
|
sp->flag = pc_entry;
|
||||||
sp->u.pce.pi_pc = pipc;
|
sp->u.pce.pi_pc = pipc;
|
||||||
sp->u.pce.code = clp->Code;
|
sp->u.pce.code = clp->Code;
|
||||||
@ -5843,11 +5856,11 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause
|
|||||||
ipc = ipc->u.l.l;
|
ipc = ipc->u.l.l;
|
||||||
break;
|
break;
|
||||||
case _jump_if_var:
|
case _jump_if_var:
|
||||||
sp = push_path(sp, &(ipc->u.l.l), cls);
|
sp = push_path(sp, &(ipc->u.l.l), cls, cint);
|
||||||
ipc = NEXTOP(ipc,l);
|
ipc = NEXTOP(ipc,l);
|
||||||
break;
|
break;
|
||||||
case _jump_if_nonvar:
|
case _jump_if_nonvar:
|
||||||
sp = push_path(sp, &(ipc->u.xl.l), cls);
|
sp = push_path(sp, &(ipc->u.xl.l), cls, cint);
|
||||||
ipc = NEXTOP(ipc,xl);
|
ipc = NEXTOP(ipc,xl);
|
||||||
break;
|
break;
|
||||||
/* instructions type EC */
|
/* instructions type EC */
|
||||||
@ -5862,7 +5875,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause
|
|||||||
break;
|
break;
|
||||||
/* instructions type e */
|
/* instructions type e */
|
||||||
case _switch_on_type:
|
case _switch_on_type:
|
||||||
sp = push_path(sp, &(ipc->u.llll.l4), cls);
|
sp = push_path(sp, &(ipc->u.llll.l4), cls, cint);
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, 1);
|
add_head_info(cls, 1);
|
||||||
} else {
|
} else {
|
||||||
@ -5912,7 +5925,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_list_nl:
|
case _switch_list_nl:
|
||||||
sp = push_path(sp, &(ipc->u.ollll.l4), cls);
|
sp = push_path(sp, &(ipc->u.ollll.l4), cls, cint);
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, 1);
|
add_head_info(cls, 1);
|
||||||
} else {
|
} else {
|
||||||
@ -5962,7 +5975,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_on_arg_type:
|
case _switch_on_arg_type:
|
||||||
sp = push_path(sp, &(ipc->u.xllll.l4), cls);
|
sp = push_path(sp, &(ipc->u.xllll.l4), cls, cint);
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x));
|
add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x));
|
||||||
} else {
|
} else {
|
||||||
@ -6013,7 +6026,7 @@ add_to_index(struct intermediates *cint, int first, path_stack_entry *sp, Clause
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_on_sub_arg_type:
|
case _switch_on_sub_arg_type:
|
||||||
sp = push_path(sp, &(ipc->u.sllll.l4), cls);
|
sp = push_path(sp, &(ipc->u.sllll.l4), cls, cint);
|
||||||
add_arg_info(cls, ap, ipc->u.sllll.s+1);
|
add_arg_info(cls, ap, ipc->u.sllll.s+1);
|
||||||
if (IsPairTerm(cls->Tag)) {
|
if (IsPairTerm(cls->Tag)) {
|
||||||
yamop *nipc = ipc->u.sllll.l1;
|
yamop *nipc = ipc->u.sllll.l1;
|
||||||
@ -6275,7 +6288,7 @@ Yap_AddClauseToIndex(PredEntry *ap, yamop *beg, int first) {
|
|||||||
#endif
|
#endif
|
||||||
stack = (path_stack_entry *)TR;
|
stack = (path_stack_entry *)TR;
|
||||||
cl.Code = cl.CurrentCode = beg;
|
cl.Code = cl.CurrentCode = beg;
|
||||||
sp = push_path(stack, NULL, &cl);
|
sp = push_path(stack, NULL, &cl, &cint);
|
||||||
add_to_index(&cint, first, sp, &cl);
|
add_to_index(&cint, first, sp, &cl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6309,7 +6322,7 @@ contract_ctable(yamop *ipc, ClauseUnion *blk, PredEntry *ap, Term at) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg, yamop *lt) {
|
remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg, yamop *lt, struct intermediates *cint) {
|
||||||
/* last clause to experiment with */
|
/* last clause to experiment with */
|
||||||
yamop *ipc = ap->cs.p_code.TrueCodeOfPred;
|
yamop *ipc = ap->cs.p_code.TrueCodeOfPred;
|
||||||
UInt current_arity = 0;
|
UInt current_arity = 0;
|
||||||
@ -6389,7 +6402,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
case _retry_me2:
|
case _retry_me2:
|
||||||
case _retry_me3:
|
case _retry_me3:
|
||||||
case _retry_me4:
|
case _retry_me4:
|
||||||
sp = push_path(sp, &(ipc->u.ld.d), cls);
|
sp = push_path(sp, &(ipc->u.ld.d), cls, cint);
|
||||||
ipc = NEXTOP(ipc,ld);
|
ipc = NEXTOP(ipc,ld);
|
||||||
break;
|
break;
|
||||||
case _profiled_trust_me:
|
case _profiled_trust_me:
|
||||||
@ -6407,16 +6420,16 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
ipc = ipc->u.l.l;
|
ipc = ipc->u.l.l;
|
||||||
break;
|
break;
|
||||||
case _jump_if_var:
|
case _jump_if_var:
|
||||||
sp = push_path(sp, &(ipc->u.l.l), cls);
|
sp = push_path(sp, &(ipc->u.l.l), cls, cint);
|
||||||
ipc = NEXTOP(ipc,l);
|
ipc = NEXTOP(ipc,l);
|
||||||
break;
|
break;
|
||||||
case _jump_if_nonvar:
|
case _jump_if_nonvar:
|
||||||
sp = push_path(sp, &(ipc->u.xl.l), cls);
|
sp = push_path(sp, &(ipc->u.xl.l), cls, cint);
|
||||||
ipc = NEXTOP(ipc,xl);
|
ipc = NEXTOP(ipc,xl);
|
||||||
break;
|
break;
|
||||||
/* instructions type e */
|
/* instructions type e */
|
||||||
case _switch_on_type:
|
case _switch_on_type:
|
||||||
sp = push_path(sp, &(ipc->u.llll.l4), cls);
|
sp = push_path(sp, &(ipc->u.llll.l4), cls, cint);
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, 1);
|
add_head_info(cls, 1);
|
||||||
} else {
|
} else {
|
||||||
@ -6463,7 +6476,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_list_nl:
|
case _switch_list_nl:
|
||||||
sp = push_path(sp, &(ipc->u.ollll.l4), cls);
|
sp = push_path(sp, &(ipc->u.ollll.l4), cls, cint);
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, 1);
|
add_head_info(cls, 1);
|
||||||
} else {
|
} else {
|
||||||
@ -6510,7 +6523,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_on_arg_type:
|
case _switch_on_arg_type:
|
||||||
sp = push_path(sp, &(ipc->u.xllll.l4), cls);
|
sp = push_path(sp, &(ipc->u.xllll.l4), cls, cint);
|
||||||
current_arity = 2;
|
current_arity = 2;
|
||||||
if (ap->PredFlags & LogUpdatePredFlag) {
|
if (ap->PredFlags & LogUpdatePredFlag) {
|
||||||
add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x));
|
add_head_info(cls, Yap_regtoregno(ipc->u.xllll.x));
|
||||||
@ -6557,7 +6570,7 @@ remove_from_index(PredEntry *ap, path_stack_entry *sp, ClauseDef *cls, yamop *bg
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _switch_on_sub_arg_type:
|
case _switch_on_sub_arg_type:
|
||||||
sp = push_path(sp, &(ipc->u.sllll.l4), cls);
|
sp = push_path(sp, &(ipc->u.sllll.l4), cls, cint);
|
||||||
current_arity = 2;
|
current_arity = 2;
|
||||||
add_arg_info(cls, ap, ipc->u.sllll.s+1);
|
add_arg_info(cls, ap, ipc->u.sllll.s+1);
|
||||||
if (IsPairTerm(cls->Tag)) {
|
if (IsPairTerm(cls->Tag)) {
|
||||||
@ -6797,13 +6810,13 @@ Yap_RemoveClauseFromIndex(PredEntry *ap, yamop *beg) {
|
|||||||
cl.Code = cl.CurrentCode = beg;
|
cl.Code = cl.CurrentCode = beg;
|
||||||
last = (yamop *)((CODEADDR)c+c->ClSize);
|
last = (yamop *)((CODEADDR)c+c->ClSize);
|
||||||
}
|
}
|
||||||
sp = push_path(stack, NULL, &cl);
|
sp = push_path(stack, NULL, &cl, &cint);
|
||||||
if (ap->cs.p_code.NOfClauses == 0) {
|
if (ap->cs.p_code.NOfClauses == 0) {
|
||||||
/* there was no indexing code */
|
/* there was no indexing code */
|
||||||
ap->CodeOfPred = ap->cs.p_code.TrueCodeOfPred = FAILCODE;
|
ap->CodeOfPred = ap->cs.p_code.TrueCodeOfPred = FAILCODE;
|
||||||
ap->OpcodeOfPred = Yap_opcode(_op_fail);
|
ap->OpcodeOfPred = Yap_opcode(_op_fail);
|
||||||
} else {
|
} else {
|
||||||
remove_from_index(ap, sp, &cl, beg, last);
|
remove_from_index(ap, sp, &cl, beg, last, &cint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7467,7 +7480,7 @@ Yap_NthClause(PredEntry *ap, Int ncls)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static yamop **
|
static yamop **
|
||||||
find_caller(PredEntry *ap, yamop *code) {
|
find_caller(PredEntry *ap, yamop *code, struct intermediates *cint) {
|
||||||
/* first clause */
|
/* first clause */
|
||||||
yamop *alt = NULL;
|
yamop *alt = NULL;
|
||||||
istack_entry *stack, *sp;
|
istack_entry *stack, *sp;
|
||||||
@ -7552,16 +7565,16 @@ find_caller(PredEntry *ap, yamop *code) {
|
|||||||
if (ipc->u.llll.l4 == code) return &(ipc->u.llll.l4);
|
if (ipc->u.llll.l4 == code) return &(ipc->u.llll.l4);
|
||||||
ipc = ipc->u.llll.l4;
|
ipc = ipc->u.llll.l4;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint);
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
labp = &(ipc->u.llll.l1);
|
labp = &(ipc->u.llll.l1);
|
||||||
if (ipc->u.llll.l1 == code) return &(ipc->u.llll.l1);
|
if (ipc->u.llll.l1 == code) return &(ipc->u.llll.l1);
|
||||||
ipc = ipc->u.llll.l1;
|
ipc = ipc->u.llll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.llll.l3;
|
ipc = ipc->u.llll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, 1, t, TermNil);
|
sp = push_stack(sp, 1, t, TermNil, cint);
|
||||||
ipc = ipc->u.llll.l2;
|
ipc = ipc->u.llll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -7574,15 +7587,15 @@ find_caller(PredEntry *ap, yamop *code) {
|
|||||||
ipc = ipc->u.ollll.l4;
|
ipc = ipc->u.ollll.l4;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
sp = push_stack(sp, 1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, 1, AbsPair(NULL), TermNil, cint);
|
||||||
if (ipc->u.ollll.l1 == code)
|
if (ipc->u.ollll.l1 == code)
|
||||||
return &(ipc->u.ollll.l1);
|
return &(ipc->u.ollll.l1);
|
||||||
ipc = ipc->u.ollll.l1;
|
ipc = ipc->u.ollll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, 1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.ollll.l3;
|
ipc = ipc->u.ollll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, 1, t, TermNil);
|
sp = push_stack(sp, 1, t, TermNil, cint);
|
||||||
ipc = ipc->u.ollll.l2;
|
ipc = ipc->u.ollll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -7594,14 +7607,14 @@ find_caller(PredEntry *ap, yamop *code) {
|
|||||||
ipc = ipc->u.xllll.l4;
|
ipc = ipc->u.xllll.l4;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
sp = push_stack(sp, argno, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, argno, AbsPair(NULL), TermNil, cint);
|
||||||
if (ipc->u.xllll.l1 == code) return &(ipc->u.xllll.l1);
|
if (ipc->u.xllll.l1 == code) return &(ipc->u.xllll.l1);
|
||||||
ipc = ipc->u.xllll.l1;
|
ipc = ipc->u.xllll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, argno, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, argno, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.xllll.l3;
|
ipc = ipc->u.xllll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, argno, t, TermNil);
|
sp = push_stack(sp, argno, t, TermNil, cint);
|
||||||
ipc = ipc->u.xllll.l2;
|
ipc = ipc->u.xllll.l2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -7617,14 +7630,14 @@ find_caller(PredEntry *ap, yamop *code) {
|
|||||||
ipc = ipc->u.sllll.l4;
|
ipc = ipc->u.sllll.l4;
|
||||||
} else if (IsPairTerm(t)) {
|
} else if (IsPairTerm(t)) {
|
||||||
s_reg = RepPair(t);
|
s_reg = RepPair(t);
|
||||||
sp = push_stack(sp, -argno-1, AbsPair(NULL), TermNil);
|
sp = push_stack(sp, -argno-1, AbsPair(NULL), TermNil, cint);
|
||||||
if (ipc->u.sllll.l1 == code) return &(ipc->u.sllll.l1);
|
if (ipc->u.sllll.l1 == code) return &(ipc->u.sllll.l1);
|
||||||
ipc = ipc->u.sllll.l1;
|
ipc = ipc->u.sllll.l1;
|
||||||
} else if (IsApplTerm(t)) {
|
} else if (IsApplTerm(t)) {
|
||||||
sp = push_stack(sp, -argno-1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil);
|
sp = push_stack(sp, -argno-1, AbsAppl((CELL *)FunctorOfTerm(t)), TermNil, cint);
|
||||||
ipc = ipc->u.sllll.l3;
|
ipc = ipc->u.sllll.l3;
|
||||||
} else {
|
} else {
|
||||||
sp = push_stack(sp, -argno-1, t, TermNil);
|
sp = push_stack(sp, -argno-1, t, TermNil, cint);
|
||||||
ipc = ipc->u.sllll.l2;
|
ipc = ipc->u.sllll.l2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7738,7 +7751,9 @@ Yap_CleanUpIndex(LogUpdIndex *blk)
|
|||||||
) {
|
) {
|
||||||
/* I have to kill this block */
|
/* I have to kill this block */
|
||||||
yamop **caller, *new;
|
yamop **caller, *new;
|
||||||
caller = find_caller(ap, blk->ClCode);
|
struct intermediates cintb;
|
||||||
|
|
||||||
|
caller = find_caller(ap, blk->ClCode, &cintb);
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
new = replace_lu_block(blk, REFRESH, ap, NULL, FALSE);
|
new = replace_lu_block(blk, REFRESH, ap, NULL, FALSE);
|
||||||
/* will be null, if we are in the middle of the current block */
|
/* will be null, if we are in the middle of the current block */
|
||||||
|
Reference in New Issue
Block a user