gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: after gbc hook


From: Camm Maguire
Subject: [Gcl-devel] Re: after gbc hook
Date: 01 Dec 2005 15:32:48 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

Robert Boyer <address@hidden> writes:

> I am studying your last two messages intently.  I can at least answer one
> question.
> 
> > Have you tried not collecting anything, and letting the area fill up
> > as long as possible?
> 
> Things work very well at least until a GC happens.  Even after many GCs,
> things often continue working very well.  But occasionally, after a GC call,
> or the subsequent *after-gbc-hook* call, or the unfortunate absence of same,
> things get screwy.
> 

Does this imply a problem with the unmarking, as opposed to the collecting?

> > Also please know that only the honses reachable from the 'root set' will be
> > marked -- i.e the lisp stacks, the C stack, explicitly entered mark
> > origins, and internal and external symbols of known packages.  If the mark
> > tree would start at a hons (on a contiguous page), said tree will remain
> > unmarked.
> 
> I think I understand this point very well, even intuitively.  Marking has got
> to start from known places, such as symbols.
> 
> > While gcl never directly modifies data stored in contiguous
> > pages during the mark phase
> 
> This remark of yours makes my head spin with certainty that I don't know what
> I am doing.  Consider the following transcript, in which the contents of
> location 0 of the array foo, located in contiguous space, because of the
> :static t declaration, is obviously marked by the explicitly invoked gc.
> 

You are correct.  I had forgotten about the possibility of static
object arrays.  Without any special keywords, etc., array bodies are
on relocatable pages, and contiguous pages are just for compiled code
and system calls to malloc, i.e. opaque data. 

> Bob
> 
> -------------------------------------------------------------------------------
> 
> 
> GCL (GNU Common Lisp)  2.7.0 ANSI    Nov 29 2005 17:37:12
> Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd)
> Binary License:  GPL due to GPL'ed components: (BFD UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
> 
> Use (help) to get some basic information on how to use GCL.
> 
> >(setq foo (make-array 2 :element-type 'fixnum :static t))
> 
> #(0 0)
> 
> >(setf (aref foo 0) (si::address t))
> 
> 149959512
> 
> > 
> (setf (aref foo 1) (si::address nil))
> 
> 151272920
> 
> (si::nani (si::address (cdr (si::nani (+ 12 (si::address foo))))))
> 
> (NIL . T)
> 
> >(si::gbc t)
> 
> T
> 
> >(aref foo 0)
> 
> 149959514               <= here, the value has magically increased by 2 
> because of marking, no?
> 
> >
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]