fix bug with (var(X) -> being interpreted as var(X) by indexing code
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1281 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
668a3dce2b
commit
08efcbeb64
85
C/index.c
85
C/index.c
@ -11,8 +11,11 @@
|
||||
* File: index.c *
|
||||
* comments: Indexing a Prolog predicate *
|
||||
* *
|
||||
* Last rev: $Date: 2005-04-10 04:01:12 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2005-04-21 13:53:05 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.122 2005/04/10 04:01:12 vsc
|
||||
* bug fixes, I hope!
|
||||
*
|
||||
* Revision 1.121 2005/04/07 17:48:54 ricroc
|
||||
* Adding tabling support for mixed strategy evaluation (batched and local scheduling)
|
||||
* UPDATE: compilation flags -DTABLING_BATCHED_SCHEDULING and -DTABLING_LOCAL_SCHEDULING removed. To support tabling use -DTABLING in the Makefile or --enable-tabling in configure.
|
||||
@ -1166,6 +1169,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,x);
|
||||
break;
|
||||
case _p_nonvar_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1174,6 +1181,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_number_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_number+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1182,6 +1193,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_atomic_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_atomic+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1190,6 +1205,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_integer_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_integer+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1198,6 +1217,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_primitive_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_primitive+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1206,6 +1229,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_compound_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_compound+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1214,6 +1241,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_var_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_var+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1222,6 +1253,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_db_ref_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = AbsAppl((CELL *)FunctorDBRef);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1230,6 +1265,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_float_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = AbsAppl((CELL *)FunctorDouble);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1238,6 +1277,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,xF);
|
||||
break;
|
||||
case _p_atom_x:
|
||||
if (cl->u.xF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (regcopy_in(myregs, nofregs, cl->u.xF.x)) {
|
||||
clause->Tag = (_atom+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1269,6 +1312,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,y);
|
||||
break;
|
||||
case _p_nonvar_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (cl->u.yF.y == ycopy) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1277,6 +1324,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_atomic_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = (_atomic+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1285,6 +1336,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_integer_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = (_integer+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1293,6 +1348,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_number_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = (_number+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1301,6 +1360,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_primitive_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = (_primitive+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1309,6 +1372,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_compound_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = (_compound+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1317,6 +1384,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_db_ref_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = AbsAppl((CELL *)FunctorDBRef);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1325,6 +1396,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_float_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (ycopy == cl->u.yF.y) {
|
||||
clause->Tag = AbsAppl((CELL *)FunctorDouble);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1333,6 +1408,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_atom_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (cl->u.yF.y == ycopy) {
|
||||
clause->Tag = (_atom+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
@ -1341,6 +1420,10 @@ add_info(ClauseDef *clause, UInt regno)
|
||||
cl = NEXTOP(cl,yF);
|
||||
break;
|
||||
case _p_var_y:
|
||||
if (cl->u.yF.F != FAILCODE) {
|
||||
clause->Tag = (CELL)NULL;
|
||||
return;
|
||||
}
|
||||
if (cl->u.yF.y == ycopy) {
|
||||
clause->Tag = (_var+1)*sizeof(CELL);
|
||||
clause->u.t_ptr = (CELL)NULL;
|
||||
|
Reference in New Issue
Block a user