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);
#ifdef COROUTINING
DO_TRAIL(pt0, d0);
if (pt0 < H0) WakeUp(pt0);
if (pt0 < H0) {
WakeUp(pt0);
S_SREG = H;
}
bind_glist:
#endif
/* 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
LGPL. Documentation on this package is distributed separately from
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
@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
always unify.
@item freeze(@var{X},@var{G})
@item freeze(?@var{X},:@var{G})
@findex freeze/2
@syindex 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},
or @code{true} if no goal has suspended.
@item when(@var{C},@var{G})
@item when(+@var{C},:@var{G})
@findex when/2
@syindex 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.
@item call_residue(@var{G},@var{L})
@item call_residue(:@var{G},@var{L})
@findex call_residue/2
@syindex 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_residue(:,?),
catch(:,+,:),
clause(:,?),
clause(:,?,?),
@ -563,6 +564,7 @@ source_module(Mod) :-
ensure_loaded(:),
findall(?,:,?),
findall(?,:,?,?),
freeze(?,:),
if(:,:,:),
incore(:),
listing(:),
@ -584,6 +586,7 @@ source_module(Mod) :-
use_module(:),
use_module(:,?),
use_module(?,:,?),
when(?,:),
^(+,:),
\+(:).