From: Terrance S. <ts...@us...> - 2007-03-30 10:27:09
|
Update of /cvsroot/xsb/XSB/docs/userman In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5881 Modified Files: manual1.tex rbltin.tex state.tex Log Message: added doc for string_garbage_collection xsb_flag, and added Dipti's name to the manual. Index: manual1.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/manual1.tex,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- manual1.tex 9 Feb 2007 18:06:25 -0000 1.26 +++ manual1.tex 30 Mar 2007 10:27:07 -0000 1.27 @@ -137,6 +137,7 @@ {\em Ernie Johnson} \\ {\em Luis de Castro} \\ {\em Rui F. Marques} \\ + {\em Diptikalyan Saha} \\ {\em Steve Dawson} \\ {\em Michael Kifer} \\ \ \\ Index: rbltin.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/rbltin.tex,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- rbltin.tex 16 Jan 2007 22:19:48 -0000 1.48 +++ rbltin.tex 30 Mar 2007 10:27:07 -0000 1.49 @@ -37,20 +37,20 @@ predicate which is currently being executed. \comment{ -This means that significant care must be taken when -modifying the definition of a predicate which is currently being -executed. Notice that this makes some operations difficult. For -example, one might try to retract from dynamically asserted -predicates, {\tt p/1} and {\tt q/1}, exactly their intersection, by -issuing the following query: -\begin{center} -{\tt :- p(X), q(X), retract(p(X)), retract(q(X)), fail.} -\end{center} -Neither {\tt retract/1} nor {\tt retractall/1} support this behavior, -due to their techniques for space reclamation. One alternative is to -use {\tt findall/3} to collect the intersection first, before retracting. -Another is to use the predicates {\tt retract\_nr/1} and {\tt -reclaim\_space/1}, described below. +| This means that significant care must be taken when +| modifying the definition of a predicate which is currently being +| executed. Notice that this makes some operations difficult. For +| example, one might try to retract from dynamically asserted +| predicates, {\tt p/1} and {\tt q/1}, exactly their intersection, by +| issuing the following query: +| \begin{center} +| {\tt :- p(X), q(X), retract(p(X)), retract(q(X)), fail.} +| \end{center} +| Neither {\tt retract/1} nor {\tt retractall/1} support this behavior, +| due to their techniques for space reclamation. One alternative is to +| use {\tt findall/3} to collect the intersection first, before retracting. +| Another is to use the predicates {\tt retract\_nr/1} and {\tt +| reclaim\_space/1}, described below. } If a dynamic predicate is given an indexing directive of {\tt trie}, @@ -339,20 +339,20 @@ \comment{ Now obsolete, what with GC. -\ouritem{retract\_nr(+Clause)}\index{\texttt{retract\_nr/1}} -Performs just as {\tt retract/1} does, except that it does not reclaim the -space used by the retracted clause. This is provided to allow programmers -to modify dynamic clauses while executing them (a practice that is -discouraged.) For example, to retract an intersection, as described above, -one could do: -\begin{center} -{\tt :- p(X), q(X), retract\_nr(p(X)), retract\_nr(q(X)), fail.} -\end{center} -In order to reclaim space after using {\tt retract\_nr/1}, see -{\tt reclaim\_space/1} below. Predicate {\tt retract\_nr/1} -is not a standard predicate and must be imported from module {\tt assert}. -{\tt retract\_nr/1} is provided for (partial) -compatibility with the {\tt retract/1} predicate of SB-Prolog. +| \ouritem{retract\_nr(+Clause)}\index{\texttt{retract\_nr/1}} +| Performs just as {\tt retract/1} does, except that it does not reclaim the +| space used by the retracted clause. This is provided to allow programmers +| to modify dynamic clauses while executing them (a practice that is +| discouraged.) For example, to retract an intersection, as described above, +| one could do: +| \begin{center} +| {\tt :- p(X), q(X), retract\_nr(p(X)), retract\_nr(q(X)), fail.} +| \end{center} +| In order to reclaim space after using {\tt retract\_nr/1}, see +| {\tt reclaim\_space/1} below. Predicate {\tt retract\_nr/1} +| is not a standard predicate and must be imported from module {\tt assert}. +| {\tt retract\_nr/1} is provided for (partial) +| compatibility with the {\tt retract/1} predicate of SB-Prolog. %In this case, the {\tt retract\_nr/1} deletes the clauses, but will not %drastically modify the clause data structure, @@ -363,24 +363,24 @@ %compatibility with the {\tt retract/1} predicate provided by SB-Prolog that %did not reclaim space. -\ouritem{reclaim\_space(+Head)}\index{\texttt{reclaim\_space/1}} Runs -through the dynamic code for the predicate indicated by {\tt Head}, -and reclaims space for any clauses that have been deleted from that -predicate by {\tt retract\_nr/1}. This cannot safely be used when -execution is still within some invocation of the specified predicate, -or will backtrack into such a scope. To complete our example of -retracting the intersection of dynamic predicates: -\begin{center} -{\tt :- p(X), q(X), retract\_nr(p(X)), retract\_nr(q(X)), fail\ ;\\ - reclaim\_space(p(\_)), reclaim\_space(q(\_)).} -\end{center} -would do the trick. Notice that the {\tt reclaim\_space} calls -must be made after execution has completely failed -out of choice points for {\tt q(X)} and {\tt p(X)}. Predicate -{\tt reclaim\_space/1} is not -standard but must be imported from module {\tt assert}. -As with {\tt retract\_nr}, the use of this predicate is discouraged; -it is provided for (partial) compatibility with SB-Prolog. +| \ouritem{reclaim\_space(+Head)}\index{\texttt{reclaim\_space/1}} Runs +| through the dynamic code for the predicate indicated by {\tt Head}, +| and reclaims space for any clauses that have been deleted from that +| predicate by {\tt retract\_nr/1}. This cannot safely be used when +| execution is still within some invocation of the specified predicate, +| or will backtrack into such a scope. To complete our example of +| retracting the intersection of dynamic predicates: +| \begin{center} +| {\tt :- p(X), q(X), retract\_nr(p(X)), retract\_nr(q(X)), fail\ ;\\ +| reclaim\_space(p(\_)), reclaim\_space(q(\_)).} +| \end{center} +| would do the trick. Notice that the {\tt reclaim\_space} calls +| must be made after execution has completely failed +| out of choice points for {\tt q(X)} and {\tt p(X)}. Predicate +| {\tt reclaim\_space/1} is not +| standard but must be imported from module {\tt assert}. +| As with {\tt retract\_nr}, the use of this predicate is discouraged; +| it is provided for (partial) compatibility with SB-Prolog. } \comment{ TLS: I dont think we need hashtable size given that we use dynamic Index: state.tex =================================================================== RCS file: /cvsroot/xsb/XSB/docs/userman/state.tex,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- state.tex 15 Nov 2006 16:46:23 -0000 1.25 +++ state.tex 30 Mar 2007 10:27:07 -0000 1.26 @@ -693,6 +693,12 @@ retracted clauses is allowed, and off otherwise. Default is {\tt on}. This flag is private to each thread. \\ \hline % +{\tt string\_garbage\_collection} & {\tt on} if garbage collection for +atomic constants is allowed, and off otherwise. Default is {\tt on}. +This flag is global for all threads (currently, string garbage +collection will only be invoked if there is a single active thread.) +\\ \hline +% {\tt goal} & the goal passed to XSB on command line with the `-e' switch; `{\tt true.}' if nothing is passed. \\ \hline % @@ -871,14 +877,25 @@ \> \> Yes master > } -\ouritem{garbage\_collection(+Option)}\index{texttt{garbage\_collection/1}} - Sets the system so that subsequent heap garbage collecting will be - done according to the specified {\tt Option}. {\tt Option} may be - the atom \verb|none| indicating that heap garbage collection is - turned off; it may be the atom \verb|sliding| indicating that - sliding garbage collection will be done; the atom \verb|copying| - indicating that the copying garbage collector will be used; or it - may be the atom +\ournewitem{trimcore}{machine}\index{\texttt{trimcore/0}} +% +A call to {\tt trimcore/0} reallocates an XSB thread's execution +stacks (and some tabling stacks) to their initial allocation size, the +action affecting only the memory areas for the calling thread. When +XSB is called in standalone or server mode, {\tt trimcore/0} is +automatically called when the top interpreter level is reached. When +XSB is embedded in a process, {\tt trimcore/0} is called at the top +interpreter level for any thread created through +{\ xsb\_ccall\_thread\_create()} (see Volume 2, Chapter 3 {\em + Embedding XSB in a Process}). + +\ouritem{garbage\_collection(+Option)}\index{texttt{garbage\_collection/1}} +Sets the system so that subsequent heap garbage collecting will be +done according to the specified {\tt Option}. {\tt Option} may be the +atom \verb|none| indicating that heap garbage collection is turned +off; it may be the atom \verb|sliding| indicating that sliding garbage +collection will be done; the atom \verb|copying| indicating that the +copying garbage collector will be used; or it may be the atom \verb|indirection| indicating that the indirect-sliding garbage collector will be used. |