Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Diff of /impnotes/final.html [000000] .. [458129] Maximize Restore

  Switch to side-by-side view

--- a
+++ b/impnotes/final.html
@@ -0,0 +1,391 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML
+><HEAD
+><TITLE
+>Extensions-1.7. Finalization</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
+REV="MADE"
+HREF="mailto:clisp-list@sf.net"><LINK
+REL="HOME"
+TITLE="Implementation Notes for GNU CLISP."
+HREF="impnotes-top.html"><LINK
+REL="UP"
+TITLE="Extensions-1: Platform independent Extensions"
+HREF="p-indep.html"><LINK
+REL="PREVIOUS"
+TITLE="Extensions-1.6. Weak Pointers"
+HREF="weak.html"><LINK
+REL="NEXT"
+TITLE="Extensions-1.8. The Prompt"
+HREF="prompt.html"><LINK
+REL="STYLESHEET"
+TYPE="text/css"
+HREF="impnotes.css"></HEAD
+><BODY
+CLASS="section"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>Implementation Notes for <A
+HREF="http://www.gnu.org"
+TARGET="_top"
+>GNU</A
+> <A
+HREF="http://clisp.cons.org"
+TARGET="_top"
+><B
+CLASS="command"
+>CLISP</B
+></A
+>.: These notes document <A
+HREF="http://clisp.cons.org"
+TARGET="_top"
+><B
+CLASS="command"
+>CLISP</B
+></A
+> version 2.31.</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="weak.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+>Chapter 29. Extensions-1: Platform independent Extensions</TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="prompt.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="section"
+><H1
+CLASS="section"
+><A
+NAME="final"
+></A
+>29.7. Extensions-1.7. Finalization</H1
+><P
+ALIGN="justify"
+>Calling
+ <TT
+CLASS="sexp"
+>(<A
+HREF="final.html"
+><TT
+CLASS="function"
+>EXT:FINALIZE</TT
+></A
+> <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+> <TT
+CLASS="replaceable"
+><I
+>function</I
+></TT
+>)</TT
+>
+ has the effect that when the specified object is being <A
+HREF="gc.html"
+>garbage-collect</A
+>ed,
+ <TT
+CLASS="sexp"
+>(<A
+HREF="http://www.lisp.org/HyperSpec/Body/fun_funcall.html"
+TARGET="_top"
+><TT
+CLASS="function"
+>FUNCALL</TT
+></A
+> <TT
+CLASS="replaceable"
+><I
+>function</I
+></TT
+> <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+>)</TT
+>
+ will be executed.</P
+><P
+ALIGN="justify"
+>Calling
+ <TT
+CLASS="sexp"
+>(<A
+HREF="final.html"
+><TT
+CLASS="function"
+>EXT:FINALIZE</TT
+></A
+> <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+> <TT
+CLASS="replaceable"
+><I
+>function</I
+></TT
+>
+                       <TT
+CLASS="replaceable"
+><I
+>guardian</I
+></TT
+>)</TT
+>
+ has a similar effect, but only as long as the
+ <TT
+CLASS="replaceable"
+><I
+>guardian</I
+></TT
+> has not been <A
+HREF="gc.html"
+>garbage-collect</A
+>ed:
+ when <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+> is being <A
+HREF="gc.html"
+>garbage-collect</A
+>ed,
+ <TT
+CLASS="sexp"
+>(<A
+HREF="http://www.lisp.org/HyperSpec/Body/fun_funcall.html"
+TARGET="_top"
+><TT
+CLASS="function"
+>FUNCALL</TT
+></A
+> <TT
+CLASS="replaceable"
+><I
+>function</I
+></TT
+> <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+>
+                       <TT
+CLASS="replaceable"
+><I
+>guardian</I
+></TT
+>)</TT
+>
+ will be executed.
+ If the <TT
+CLASS="replaceable"
+><I
+>guardian</I
+></TT
+> is <A
+HREF="gc.html"
+>garbage-collect</A
+>ed before <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+>
+ is, nothing happens.</P
+><P
+ALIGN="justify"
+>Note: The time when <SPAN
+CLASS="QUOTE"
+>"the <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+> is being <A
+HREF="gc.html"
+>garbage-collect</A
+>ed"</SPAN
+>
+ is not defined deterministically.
+ (Actually, it might possibly never occur.)
+ It denotes a moment at which no references to <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+> exist
+ from other Lisp objects.
+ When the <TT
+CLASS="replaceable"
+><I
+>function</I
+></TT
+> is called, <TT
+CLASS="replaceable"
+><I
+>object</I
+></TT
+>
+ (and possibly <TT
+CLASS="replaceable"
+><I
+>guardian</I
+></TT
+>)
+ enter the "arena of live Lisp objects" again.</P
+><P
+ALIGN="justify"
+>No finalization request will be executed more than once.</P
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="weak.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="impnotes-top.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="prompt.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Extensions-1.6. Weak Pointers</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="p-indep.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Extensions-1.8. The Prompt</TD
+></TR
+></TABLE
+></DIV
+><div
+class="custom-footer"
+><hr
+width="100%"><table
+width="100%"
+><tr
+><td
+align="left"
+><a
+href="http://clisp.cons.org"
+><img
+src="clisp.png"
+width="48"
+height="48"
+alt="[CLISP home]"></a
+></td
+><td
+align="center"
+><a
+href="http://www.gnu.org"
+><img
+src="http://www.gnu.org/graphics/gnubanner.jpg"
+width="468"
+height="60"
+alt="[Come and see what GNU creates for YOU]"></a
+></td
+><td
+align="right"
+><a
+href="http://sourceforge.net"
+><img
+src="http://sourceforge.net/sflogo.php?group_id=1355&amp;type=2"
+width="125"
+height="37"
+alt="[SourceForge]"></a
+></td
+></tr
+></table
+></div
+></BODY
+></HTML
+>