* PATCH: docs GC protection functions
@ 2003-09-05 0:48 Aaron VanDevender
2003-09-05 22:57 ` Kevin Ryde
2003-09-05 23:41 ` Neil Jerram
0 siblings, 2 replies; 3+ messages in thread
From: Aaron VanDevender @ 2003-09-05 0:48 UTC (permalink / raw)
I wrote some documentation for the
scm_gc_protect/unprotect_object and scm_permanent_object.
Would anyone care to commit it (or comment on it)? I submitted
something earlier as a patch to scheme-memory.texi, but I think
it fits better in data-rep.texi.
cya
.sig
--- data-rep.texi 29 Aug 2003 23:32:21 -0000 1.14
+++ data-rep.texi 5 Sep 2003 00:17:51 -0000
@@ -1397,6 +1397,7 @@
* Creating Instances::
* Type checking::
* Garbage Collecting Smobs::
+* Protecting Smobs from Garbage Collection::
* A Common Mistake In Allocating Smobs::
* Garbage Collecting Simple Smobs::
* Remembering During Operations::
@@ -1793,8 +1794,44 @@
very simple. Since collections occur at unpredictable times, it is easy
for any unusual activity to interfere with normal code.
+@node Protecting Smobs from Garbage Collection
+@subsection Protecting Smobs from Garbage Collection
-@node A Common Mistake In Allocating Smobs, Garbage Collecting Simple Smobs, Garbage Collecting Smobs, Defining New Types (Smobs)
+Since the garbage collector traverses the stack looking for scheme
+objects to mark, if you have create a scheme object from C code, and
+there are no references to it on the stack (because they are all on
+the heap), then the garbage collector might free that object even
+though it is still in use. These functions let you tell the garbage
+collector that they should not be freed, even though they are not on
+the stack.
+
+@deftypefn {C Function} SCM scm_gc_protect_object (SCM @var{obj})
+Protects @var{obj} from being freed by the garbage collector, when it
+otherwise might be. @code{scm_gc_protect_object}
+causes the collector to mark the object whenever it runs. When you are
+done with the object, call @code{scm_gc_unprotect_object} on the
+object. Calls to scm_gc_protect/unprotect_object can be nested, and
+the object remains protected until it has been unprotected as many
+times as it was protected. It is an error to unprotect an object more
+times than it has been protected. Returns the SCM object it was
+passed.
+@end deftypefn
+
+@deftypefn {C Function} SCM scm_gc_unprotect_object (SCM @var{obj})
+Unprotects an object from the garbage collector which was protected by
+@code{scm_gc_unprotect_object}. Returns the SCM object it was passed.
+@end deftypefn
+
+@deftypefn {C Function} SCM scm_permanent_object (SCM @var{obj})
+Similar to @code{scm_gc_protect_object} in that it causes the
+collector to always mark the object, except that it should not be
+nested (only call @code{scm_permanent_object} on an object once), and
+it has no corresponding unpermanent function. Once an object is
+declared permanent, it will never be freed. Returns the SCM object it
+was passed.
+@end deftypefn
+
+@node A Common Mistake In Allocating Smobs
@subsection A Common Mistake In Allocating Smobs
When constructing new objects, you must be careful that the garbage
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PATCH: docs GC protection functions
2003-09-05 0:48 PATCH: docs GC protection functions Aaron VanDevender
@ 2003-09-05 22:57 ` Kevin Ryde
2003-09-05 23:41 ` Neil Jerram
1 sibling, 0 replies; 3+ messages in thread
From: Kevin Ryde @ 2003-09-05 22:57 UTC (permalink / raw)
Cc: guile-user
Aaron VanDevender <sig@netdot.net> writes:
>
> +* Protecting Smobs from Garbage Collection::
I don't think this applies specifically smobs, but to all objects.
And smobs would protect their internals with the mark function rather
than scm_gc_protect_object I think.
Somewhere under the "Memory Management" node looks like a better spot
to me (maybe that's where you had it before).
> +@deftypefn {C Function} SCM scm_gc_protect_object (SCM @var{obj})
Could probably put scm_gc_unprotect_object together here
(ie. @deftypefnx).
> +@deftypefn {C Function} SCM scm_permanent_object (SCM @var{obj})
> +Similar to @code{scm_gc_protect_object}
I'd be inclined to give this an independent description, rather than
referring to another function.
Could mention the typical use of scm_permanent_object in creating
globals for use by C code (either constants like symbols or strings,
or variables like hash tables or whatever).
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PATCH: docs GC protection functions
2003-09-05 0:48 PATCH: docs GC protection functions Aaron VanDevender
2003-09-05 22:57 ` Kevin Ryde
@ 2003-09-05 23:41 ` Neil Jerram
1 sibling, 0 replies; 3+ messages in thread
From: Neil Jerram @ 2003-09-05 23:41 UTC (permalink / raw)
Cc: guile-user
>>>>> "Aaron" == Aaron VanDevender <sig@netdot.net> writes:
Aaron> I wrote some documentation for the
Aaron> scm_gc_protect/unprotect_object and scm_permanent_object.
Aaron> Would anyone care to commit it (or comment on it)?
Don't worry; it won't be lost. I'm a bit busy but will take a look in the next few days,
if no one else does first.
Aaron> I submitted something earlier as a patch to
Aaron> scheme-memory.texi, but I think it fits better in
Aaron> data-rep.texi.
So, just to be clear, this patch replaces the scheme-memory.texi one,
right?
Neil
_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-09-05 23:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-05 0:48 PATCH: docs GC protection functions Aaron VanDevender
2003-09-05 22:57 ` Kevin Ryde
2003-09-05 23:41 ` Neil Jerram
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).