1*37da2899SCharles.Forsyth #include "lib9.h" 2*37da2899SCharles.Forsyth #include "isa.h" 3*37da2899SCharles.Forsyth #include "interp.h" 4*37da2899SCharles.Forsyth 5*37da2899SCharles.Forsyth static int depth; 6*37da2899SCharles.Forsyth 7*37da2899SCharles.Forsyth void memchk(void * p,Type * t)8*37da2899SCharles.Forsythmemchk(void *p, Type *t) 9*37da2899SCharles.Forsyth { 10*37da2899SCharles.Forsyth Heap *h; 11*37da2899SCharles.Forsyth int i, j; 12*37da2899SCharles.Forsyth ulong *v, **base; 13*37da2899SCharles.Forsyth 14*37da2899SCharles.Forsyth if(depth > 100) 15*37da2899SCharles.Forsyth return; 16*37da2899SCharles.Forsyth depth++; 17*37da2899SCharles.Forsyth base = p; 18*37da2899SCharles.Forsyth for(i = 0; i < t->np; i++) { 19*37da2899SCharles.Forsyth for(j = 0; j < 8; j++) { 20*37da2899SCharles.Forsyth if(t->map[i] & (1<<(7-j))) { 21*37da2899SCharles.Forsyth v = base[(i*8)+j]; 22*37da2899SCharles.Forsyth if(v != H) { 23*37da2899SCharles.Forsyth h = D2H(v); 24*37da2899SCharles.Forsyth hmsize(h); 25*37da2899SCharles.Forsyth if(h->ref <= 0) 26*37da2899SCharles.Forsyth abort(); 27*37da2899SCharles.Forsyth if(h->t != nil) 28*37da2899SCharles.Forsyth memchk(v, h->t); 29*37da2899SCharles.Forsyth } 30*37da2899SCharles.Forsyth } 31*37da2899SCharles.Forsyth } 32*37da2899SCharles.Forsyth } 33*37da2899SCharles.Forsyth depth--; 34*37da2899SCharles.Forsyth } 35*37da2899SCharles.Forsyth 36*37da2899SCharles.Forsyth void validstk(void)37*37da2899SCharles.Forsythvalidstk(void) 38*37da2899SCharles.Forsyth { 39*37da2899SCharles.Forsyth Type *t; 40*37da2899SCharles.Forsyth Frame *f; 41*37da2899SCharles.Forsyth uchar *fp; 42*37da2899SCharles.Forsyth 43*37da2899SCharles.Forsyth fp = R.FP; 44*37da2899SCharles.Forsyth while(fp != nil) { 45*37da2899SCharles.Forsyth f = (Frame*)fp; 46*37da2899SCharles.Forsyth t = f->t; 47*37da2899SCharles.Forsyth if(t == nil) 48*37da2899SCharles.Forsyth t = SEXTYPE(f)->reg.TR; 49*37da2899SCharles.Forsyth 50*37da2899SCharles.Forsyth memchk(f, t); 51*37da2899SCharles.Forsyth fp = f->fp; 52*37da2899SCharles.Forsyth } 53*37da2899SCharles.Forsyth } 54