/[guile]/guile/guile-core/libguile/gc-segment.c
ViewVC logotype

Diff of /guile/guile-core/libguile/gc-segment.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by hanwen, Sun Aug 4 00:18:33 2002 UTC revision 1.2 by hanwen, Sun Aug 4 14:09:14 2002 UTC
# Line 195  scm_i_sweep_some_cards (scm_t_heap_segme Line 195  scm_i_sweep_some_cards (scm_t_heap_segme
195    
196    scm_gc_cells_swept +=  cards_swept * (SCM_GC_CARD_N_CELLS - SCM_GC_CARD_N_HEADER_CELLS);    scm_gc_cells_swept +=  cards_swept * (SCM_GC_CARD_N_CELLS - SCM_GC_CARD_N_HEADER_CELLS);
197    scm_gc_cells_collected += collected * seg->span;    scm_gc_cells_collected += collected * seg->span;
198    
199      if (!seg->first_time)
200        scm_cells_allocated -= collected * seg->span;
201      
202    seg->freelist->collected += collected  * seg->span;    seg->freelist->collected += collected  * seg->span;
203      
204    
205    if(next_free == seg->bounds[1])    if(next_free == seg->bounds[1])
206      {      {
# Line 212  scm_i_sweep_some_cards (scm_t_heap_segme Line 217  scm_i_sweep_some_cards (scm_t_heap_segme
217    statistics, it just frees the memory pointed to by to-be-swept    statistics, it just frees the memory pointed to by to-be-swept
218    cells.    cells.
219    
220    Implementation is slightly ugh, and how do we handle the swept_cells    Implementation is slightly ugh.
221    statistic?  
222      FIXME: if you do scm_i_sweep_segment(), and then allocate from this
223      segment again, the statistics are off.
224   */   */
225  void  void
226  scm_i_sweep_segment (scm_t_heap_segment * seg)  scm_i_sweep_segment (scm_t_heap_segment * seg)
# Line 221  scm_i_sweep_segment (scm_t_heap_segment Line 228  scm_i_sweep_segment (scm_t_heap_segment
228    scm_t_cell * p = seg->next_free_card;    scm_t_cell * p = seg->next_free_card;
229    int yield = scm_gc_cells_collected;    int yield = scm_gc_cells_collected;
230    int coll = seg->freelist->collected;    int coll = seg->freelist->collected;
231      int alloc = scm_cells_allocated ;
232      
233    while (scm_i_sweep_some_cards (seg) != SCM_EOL)    while (scm_i_sweep_some_cards (seg) != SCM_EOL)
234      ;      ;
235    
236    scm_gc_cells_collected = yield;    scm_gc_cells_collected = yield;
237      scm_cells_allocated = alloc;
238    seg->freelist->collected = coll;    seg->freelist->collected = coll;
239        
240    seg->next_free_card =p;    seg->next_free_card =p;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26