Changeset 14494


Ignore:
Timestamp:
Dec 18, 2010, 8:40:37 AM (10 years ago)
Author:
gb
Message:

GC integrity checks check exception frames, thread-local special
bindings on ARM.

File:
1 edited

Legend:

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

    r14472 r14494  
    144144
    145145void
     146check_xp(ExceptionInformation *xp)
     147{
     148  natural *regs = (natural *) xpGPRvector(xp);
     149  LispObj lr_value;
     150  int r;
     151
     152  for (r = arg_z; r <= Rfn; r++) {
     153    check_node((regs[r]));
     154  }
     155}
     156
     157
     158
     159void
     160check_tcrs(TCR *first)
     161{
     162  xframe_list *xframes;
     163  ExceptionInformation *xp;
     164 
     165  TCR *tcr = first;
     166  LispObj *tlb_start,*tlb_end;
     167
     168  do {
     169    xp = tcr->gc_context;
     170    if (xp) {
     171      check_xp(xp);
     172    }
     173    for (xframes = (xframe_list *) tcr->xframe;
     174         xframes;
     175         xframes = xframes->prev) {
     176      check_xp(xframes->curr);
     177    }
     178    tlb_start = tcr->tlb_pointer;
     179    if (tlb_start) {
     180      tlb_end = tlb_start + ((tcr->tlb_limit)>>fixnumshift);
     181      check_range(tlb_start,tlb_end,false);
     182    }
     183    tcr = tcr->next;
     184  } while (tcr != first);
     185}
     186
     187void
    146188check_all_areas(TCR *tcr)
    147189{
     
    173215    code = (a->code);
    174216  }
     217  check_tcrs(tcr);
    175218}
    176219
Note: See TracChangeset for help on using the changeset viewer.