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);
         }
     }

Reply via email to