fix I/O mess
fix spy/reconsult mess git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1724 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
d9029c6c56
commit
0a21ac1b71
21
C/absmi.c
21
C/absmi.c
@ -10,8 +10,11 @@
|
|||||||
* *
|
* *
|
||||||
* File: absmi.c *
|
* File: absmi.c *
|
||||||
* comments: Portable abstract machine interpreter *
|
* comments: Portable abstract machine interpreter *
|
||||||
* Last rev: $Date: 2006-11-15 00:13:36 $,$Author: vsc $ *
|
* Last rev: $Date: 2006-11-21 16:21:30 $,$Author: vsc $ *
|
||||||
* $Log: not supported by cvs2svn $
|
* $Log: not supported by cvs2svn $
|
||||||
|
* Revision 1.211 2006/11/15 00:13:36 vsc
|
||||||
|
* fixes for indexing code.
|
||||||
|
*
|
||||||
* Revision 1.210 2006/10/25 02:31:07 vsc
|
* Revision 1.210 2006/10/25 02:31:07 vsc
|
||||||
* fix emulation of trust_logical
|
* fix emulation of trust_logical
|
||||||
*
|
*
|
||||||
@ -7711,8 +7714,22 @@ Yap_absmi(int inp)
|
|||||||
{
|
{
|
||||||
PredEntry *pe = PredFromDefCode(PREG);
|
PredEntry *pe = PredFromDefCode(PREG);
|
||||||
BEGD(d0);
|
BEGD(d0);
|
||||||
|
WRITE_LOCK(pe->PRWLock);
|
||||||
|
if (!(pe->PredFlags & IndexedPredFlag) &&
|
||||||
|
pe->cs.p_code.NOfClauses > 1) {
|
||||||
|
/* update ASP before calling IPred */
|
||||||
|
ASP = YREG+E_CB;
|
||||||
|
if (ASP > (CELL *) PROTECT_FROZEN_B(B)) {
|
||||||
|
ASP = (CELL *) PROTECT_FROZEN_B(B);
|
||||||
|
}
|
||||||
|
saveregs();
|
||||||
|
Yap_IPred(pe, 0);
|
||||||
|
/* IPred can generate errors, it thus must get rid of the lock itself */
|
||||||
|
setregs();
|
||||||
|
}
|
||||||
|
WRITE_UNLOCK(pe->PRWLock);
|
||||||
d0 = pe->ArityOfPE;
|
d0 = pe->ArityOfPE;
|
||||||
/* save S for ModuleName */
|
/* save S for ModuleName */
|
||||||
if (d0 == 0) {
|
if (d0 == 0) {
|
||||||
H[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
|
H[1] = MkAtomTerm((Atom)(pe->FunctorOfPred));
|
||||||
} else {
|
} else {
|
||||||
|
12
C/index.c
12
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: 2006-11-15 00:13:36 $,$Author: vsc $ *
|
* Last rev: $Date: 2006-11-21 16:21:31 $,$Author: vsc $ *
|
||||||
* $Log: not supported by cvs2svn $
|
* $Log: not supported by cvs2svn $
|
||||||
|
* Revision 1.177 2006/11/15 00:13:36 vsc
|
||||||
|
* fixes for indexing code.
|
||||||
|
*
|
||||||
* Revision 1.176 2006/11/08 01:53:08 vsc
|
* Revision 1.176 2006/11/08 01:53:08 vsc
|
||||||
* avoid generating suspensions on static code.
|
* avoid generating suspensions on static code.
|
||||||
*
|
*
|
||||||
@ -8179,8 +8182,11 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case _spy_pred:
|
case _spy_pred:
|
||||||
ipc = ap->cs.p_code.TrueCodeOfPred;
|
if ((ap->PredFlags & IndexedPredFlag) ||
|
||||||
break;
|
ap->cs.p_code.NOfClauses <= 1) {
|
||||||
|
ipc = ap->cs.p_code.TrueCodeOfPred;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case _index_pred:
|
case _index_pred:
|
||||||
XREGS[ap->ArityOfPE+1] = (CELL)s_reg;
|
XREGS[ap->ArityOfPE+1] = (CELL)s_reg;
|
||||||
XREGS[ap->ArityOfPE+2] = (CELL)t;
|
XREGS[ap->ArityOfPE+2] = (CELL)t;
|
||||||
|
11
C/iopreds.c
11
C/iopreds.c
@ -1791,7 +1791,7 @@ p_open (void)
|
|||||||
ta[1] = MkAtomTerm(AtomTrue);
|
ta[1] = MkAtomTerm(AtomTrue);
|
||||||
t = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("reposition"),1),1,ta);
|
t = Yap_MkApplTerm(Yap_MkFunctor(Yap_LookupAtom("reposition"),1),1,ta);
|
||||||
Yap_Error(PERMISSION_ERROR_OPEN_SOURCE_SINK,t,"open/4");
|
Yap_Error(PERMISSION_ERROR_OPEN_SOURCE_SINK,t,"open/4");
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
/* useless crap */
|
/* useless crap */
|
||||||
st->status |= Seekable_Stream_f;
|
st->status |= Seekable_Stream_f;
|
||||||
@ -1802,14 +1802,14 @@ p_open (void)
|
|||||||
st->status &= ~Seekable_Stream_f;
|
st->status &= ~Seekable_Stream_f;
|
||||||
}
|
}
|
||||||
if (opts & 16) {
|
if (opts & 16) {
|
||||||
st->status &= ~(Reset_Eof_Stream_f);
|
st->status &= ~Reset_Eof_Stream_f;
|
||||||
st->status |= Eof_Error_Stream_f;
|
|
||||||
}
|
}
|
||||||
if (opts & 32) {
|
if (opts & 32) {
|
||||||
st->status &= ~(Eof_Error_Stream_f|Reset_Eof_Stream_f);
|
st->status &= ~Reset_Eof_Stream_f;
|
||||||
|
st->status &= ~Eof_Error_Stream_f;
|
||||||
}
|
}
|
||||||
if (opts & 64) {
|
if (opts & 64) {
|
||||||
st->status &= ~(Eof_Error_Stream_f);
|
st->status &= ~Eof_Error_Stream_f;
|
||||||
st->status |= Reset_Eof_Stream_f;
|
st->status |= Reset_Eof_Stream_f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1818,6 +1818,7 @@ p_open (void)
|
|||||||
else
|
else
|
||||||
st->stream_getc_for_read = st->stream_getc;
|
st->stream_getc_for_read = st->stream_getc;
|
||||||
t = MkStream (sno);
|
t = MkStream (sno);
|
||||||
|
st->status &= ~(Free_Stream_f);
|
||||||
return (Yap_unify (ARG3, t));
|
return (Yap_unify (ARG3, t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
<h2>Yap-5.1.2:</h2>
|
<h2>Yap-5.1.2:</h2>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li> FIXED: reconsult with spy was broken (obs from Miguel Filgueiras).</li>
|
||||||
|
<li> FIXED: mess with EOF and open (obs from Nicos Angelopoulos).</li>
|
||||||
|
<li> FIXED: make use_module/3 handle case where module is given.</li>
|
||||||
<li> FIXED: library_directory/1 was not being used.</li>
|
<li> FIXED: library_directory/1 was not being used.</li>
|
||||||
<li> FIXED: style_checker was failing on DCGs (obs from Miguel Filgueiras).</li>
|
<li> FIXED: style_checker was failing on DCGs (obs from Miguel Filgueiras).</li>
|
||||||
<li> FIXED: +inf is a number (obs from Trevor Walker).</li>
|
<li> FIXED: +inf is a number (obs from Trevor Walker).</li>
|
||||||
|
@ -857,17 +857,17 @@ stream_property(Stream, Props) :-
|
|||||||
'$show_stream_eof'(_, not).
|
'$show_stream_eof'(_, not).
|
||||||
|
|
||||||
'$show_stream_eof_action'(Fl, error) :-
|
'$show_stream_eof_action'(Fl, error) :-
|
||||||
Fl /\ 16'0200 =:= 16'0200, !.
|
Fl /\ 0x0200 =:= 0x0200, !.
|
||||||
'$show_stream_eof_action'(Fl, reset) :-
|
'$show_stream_eof_action'(Fl, reset) :-
|
||||||
Fl /\ 16'0400 =:= 16'0400, !.
|
Fl /\ 0x0400 =:= 0x0400, !.
|
||||||
'$show_stream_eof_action'(_, eof_code).
|
'$show_stream_eof_action'(_, eof_code).
|
||||||
|
|
||||||
'$show_stream_reposition'(Fl, true) :-
|
'$show_stream_reposition'(Fl, true) :-
|
||||||
Fl /\ 16'2000 =:= 16'2000, !.
|
Fl /\ 0x2000 =:= 0x2000, !.
|
||||||
'$show_stream_reposition'(_, false).
|
'$show_stream_reposition'(_, false).
|
||||||
|
|
||||||
'$show_stream_type'(Fl, binary) :-
|
'$show_stream_type'(Fl, binary) :-
|
||||||
Fl /\ 16'0100 =:= 16'0100, !.
|
Fl /\ 0x0100 =:= 0x0100, !.
|
||||||
'$show_stream_type'(_, text).
|
'$show_stream_type'(_, text).
|
||||||
|
|
||||||
at_end_of_stream :-
|
at_end_of_stream :-
|
||||||
|
Reference in New Issue
Block a user