guile-user
[Top][All Lists]
Advanced

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

Re: cell


From: Martin Grabmueller
Subject: Re: cell
Date: Mon, 23 Apr 2001 18:37:25 +0200 (MET DST)

> From: Masao Uebayashi <address@hidden>
> Date: Tue, 24 Apr 2001 01:04:16 +0900
> 
> Hmm. I imagined, by reading the section 33.2.2 of the reference, that
> `a table of heap segment' is throughly aligned by two words like this:
> 
>      a table of heap segment
>  --------------------------------
>  |                              |
>  |       |_:_|_:_|              |
>  |       |_:_|_:_|              |
>  |       |_:_|_:_|              |
>  |                              |
>  |       |___|___| <--- a cell  |
>  |                              |
>  |       |___|___|              |
>  |       |___|_----> (...)      |
>  |       |___|___|              |
>  |       |___|_----------> (...)|
>  |       |___|___|              |
>  |       |___|___|              |
>  |       |_:_|_:_|              |
>  |       |_:_|_:_|              |
>  |       |_:_|_:_|              |
>  |     -->   <--                |
>  |       word (usually 32bit)   |
>  |                              |
>  --------------------------------
> 
> If four-word cells were introduced, all the tables are aligned by four
> words?

No, Guile actually maintains two different kinds of heap segments, one
like you sketched above, and the other like this:

 .
 .
 .
|__|__|__|__|
|__|__|__|__|
|__|__|__|__|
|__|__|__|__| <- a double cell
|__|__|__|__|
 .
 .
 .

But, as already mentioned: this is an optimization and only important
if you are interested in Guile internals.

If you want to know more, you can have a look at libguile/gc.c, where
all of this is implemented.

Regards,
  'martin



reply via email to

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