fix bug in wakeup when in the middle of unifying a list (found by Bart Demoen).

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@486 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2002-05-24 00:13:15 +00:00
parent c98c8fa804
commit c9be907884
3 changed files with 19 additions and 4 deletions

View File

@ -2514,7 +2514,10 @@ absmi(int inp)
BIND(pt0, d0, bind_glist); BIND(pt0, d0, bind_glist);
#ifdef COROUTINING #ifdef COROUTINING
DO_TRAIL(pt0, d0); DO_TRAIL(pt0, d0);
if (pt0 < H0) WakeUp(pt0); if (pt0 < H0) {
WakeUp(pt0);
S_SREG = H;
}
bind_glist: bind_glist:
#endif #endif
/* don't put an ENDD just after a label */ /* don't put an ENDD just after a label */

View File

@ -449,6 +449,15 @@ Copyright @copyright{} 1998-2001 Paulo Moura
Madrid by the CLIP group. This package is distributed under the FSF's Madrid by the CLIP group. This package is distributed under the FSF's
LGPL. Documentation on this package is distributed separately from LGPL. Documentation on this package is distributed separately from
yap.tex. yap.tex.
@item The yap2swi library implements some of the functionality of
SWI's PL interface. Please do refer to the SWI-Prolog home page:
@code{http://www.swi-prolog.org}
for more information on SWI-Prolog and for a detailed description of its
foreign interface.
@end itemize @end itemize
@node Install, Run, Intro, Top @node Install, Run, Intro, Top
@ -8410,7 +8419,7 @@ Succeed if the two arguments do not unify. A call to @code{dif/2} will
suspend if unification may still succeed or fail, and will fail if they suspend if unification may still succeed or fail, and will fail if they
always unify. always unify.
@item freeze(@var{X},@var{G}) @item freeze(?@var{X},:@var{G})
@findex freeze/2 @findex freeze/2
@syindex freeze/2 @syindex freeze/2
@cnindex freeze/2 @cnindex freeze/2
@ -8423,7 +8432,7 @@ Delay execution of goal @var{G} until the variable @var{X} is bound.
Unify @var{G} with a conjunction of goals suspended on variable @var{X}, Unify @var{G} with a conjunction of goals suspended on variable @var{X},
or @code{true} if no goal has suspended. or @code{true} if no goal has suspended.
@item when(@var{C},@var{G}) @item when(+@var{C},:@var{G})
@findex when/2 @findex when/2
@syindex when/2 @syindex when/2
@cnindex when/2 @cnindex when/2
@ -8445,7 +8454,7 @@ Delay until variable @var{V} is ground.
Note that @code{when/2} will fail if the conditions fail. Note that @code{when/2} will fail if the conditions fail.
@item call_residue(@var{G},@var{L}) @item call_residue(:@var{G},@var{L})
@findex call_residue/2 @findex call_residue/2
@syindex call_residue/2 @syindex call_residue/2
@cnindex call_residue/2 @cnindex call_residue/2

View File

@ -553,6 +553,7 @@ source_module(Mod) :-
call_with_args(:,?,?,?,?,?,?,?), call_with_args(:,?,?,?,?,?,?,?),
call_with_args(:,?,?,?,?,?,?,?,?), call_with_args(:,?,?,?,?,?,?,?,?),
call_with_args(:,?,?,?,?,?,?,?,?,?), call_with_args(:,?,?,?,?,?,?,?,?,?),
call_residue(:,?),
catch(:,+,:), catch(:,+,:),
clause(:,?), clause(:,?),
clause(:,?,?), clause(:,?,?),
@ -563,6 +564,7 @@ source_module(Mod) :-
ensure_loaded(:), ensure_loaded(:),
findall(?,:,?), findall(?,:,?),
findall(?,:,?,?), findall(?,:,?,?),
freeze(?,:),
if(:,:,:), if(:,:,:),
incore(:), incore(:),
listing(:), listing(:),
@ -584,6 +586,7 @@ source_module(Mod) :-
use_module(:), use_module(:),
use_module(:,?), use_module(:,?),
use_module(?,:,?), use_module(?,:,?),
when(?,:),
^(+,:), ^(+,:),
\+(:). \+(:).