Changeset 10186


Ignore:
Timestamp:
Jul 23, 2008, 4:03:10 PM (11 years ago)
Author:
gb
Message:

In purify(), only purify dynamic ivectors that aren't frozen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-gc.c

    r10172 r10186  
    23052305  TCR  *other_tcr;
    23062306  natural max_pure_size;
    2307   BytePtr new_pure_start;
    2308 
    2309 
    2310 
    2311   max_pure_size = unboxed_bytes_in_range((LispObj *)(a->low + (static_dnodes_for_area(a) << dnode_shift)),
    2312                                          (LispObj *) a->active);
     2307  BytePtr new_pure_start,
     2308    low = (a->low + (static_dnodes_for_area(a) << dnode_shift)),
     2309    high = a->active;
     2310
     2311
     2312  max_pure_size = unboxed_bytes_in_range((LispObj *) low, (LispObj *) high);
    23132313  new_pure_area = extend_readonly_area(max_pure_size);
    23142314  if (new_pure_area) {
     
    23272327
    23282328   
    2329     purify_areas(a->low, a->active, new_pure_area);
     2329    purify_areas(low, high, new_pure_area);
    23302330   
    23312331    other_tcr = tcr;
    23322332    do {
    2333       purify_tcr_xframes(other_tcr, a->low, a->active, new_pure_area);
    2334       purify_tcr_tlb(other_tcr, a->low, a->active, new_pure_area);
     2333      purify_tcr_xframes(other_tcr, low, high, new_pure_area);
     2334      purify_tcr_tlb(other_tcr, low, high, new_pure_area);
    23352335      other_tcr = other_tcr->next;
    23362336    } while (other_tcr != tcr);
    23372337
    2338     purify_gcable_ptrs(a->low, a->active, new_pure_area);
     2338    purify_gcable_ptrs(low, high, new_pure_area);
    23392339    {
    23402340      natural puresize = (unsigned) (new_pure_area->active-new_pure_start);
Note: See TracChangeset for help on using the changeset viewer.