On Mon, Aug 12, 2002 at 12:34:28PM -0700, Sean O'Rourke wrote: > On Mon, 12 Aug 2002, Steve Fink wrote: > > farther yet. Oh, and I do have your recent patch to set > > interpreter->lo_var_ptr early. > > How early is "early"? It looks like setting lo_var_ptr in Parrot_runcode > instead of runops should be necessary/sufficient. If not, does > initializing it to the address of a local in main make this go away?
Nope. lo_var_ptr was getting set plenty early. This was the problem, which I'll apply once I make a few more problems go away: diff -p -u -r1.11 dod.c --- dod.c 12 Aug 2002 07:46:35 -0000 1.11 +++ dod.c 12 Aug 2002 20:07:48 -0000 @@ -350,9 +350,9 @@ trace_system_stack(struct Parrot_Interp cur_var_ptr = (size_t)( (ptrdiff_t)cur_var_ptr + direction * PARROT_PTR_ALIGNMENT ) ) { size_t ptr = *(size_t *)cur_var_ptr; - if (pmc_min < ptr && ptr < pmc_max && is_pmc_ptr(interpreter,(void *)ptr)) { + if (pmc_min <= ptr && ptr <= pmc_max && is_pmc_ptr(interpreter,(void *)ptr)) { last = mark_used((PMC *)ptr, last); - } else if (buffer_min < ptr && ptr < buffer_max && is_buffer_ptr(interpreter,(void *)ptr)) { + } else if (buffer_min <= ptr && ptr <= buffer_max && +is_buffer_ptr(interpreter,(void *)ptr)) { buffer_lives((Buffer *)ptr); } }