It won't go in cleanly any more:

patching file stacks.c
Hunk #1 FAILED at 108.
Hunk #2 FAILED at 153.
Hunk #3 succeeded at 227 (offset 46 lines).
Hunk #4 succeeded at 243 with fuzz 1 (offset 46 lines).
2 out of 4 hunks FAILED -- saving rejects to file stacks.c.rej

If you can submit a patch against the current code, i'll apply it as long 
as it doesn't break anything and you think it's a good thing :)

--Josh

At 18:30 on 03/29/2002 EST, Michel J Lambert <[EMAIL PROTECTED]> wrote:

> The following was applied by Dan, but from what I can tell, seems to have
> become unapplied since.
> 
> Mike Lambert
> 
> Bryan C. Warnock wrote:
> 
> > Date: Fri, 22 Mar 2002 01:47:02 -0500
> > From: Bryan C. Warnock <[EMAIL PROTECTED]>
> > To: [EMAIL PROTECTED]
> > Subject: [PATCH] stacks.c
> >
> > Defer allocation as long as possible.  Make logic parallel.
> >
> > Index: stacks.c
> > ===================================================================
> > RCS file: /home/perlcvs/parrot/stacks.c,v
> > retrieving revision 1.23
> > diff -u -r1.23 stacks.c
> > --- stacks.c    8 Mar 2002 03:04:03 -0000       1.23
> > +++ stacks.c    22 Mar 2002 06:45:39 -0000
> > @@ -108,7 +108,21 @@
> >             void *thing, INTVAL type, stack_cleanup_method_t cleanup)
> >  {
> >      Stack_Chunk chunk = stack->prev;
> > -    Stack_Entry entry = &chunk->entry[chunk->used];
> > +    Stack_Entry entry;
> > +
> > +    /* Do we need a new chunk? */
> > +    if (chunk->used == STACK_CHUNK_DEPTH) {
> > +        /* Need to add a new chunk */
> > +        Stack_Chunk new_chunk = mem_allocate_aligned(sizeof(*new_chunk));
> > +        new_chunk->used = 0;
> > +        new_chunk->next = stack;
> > +        new_chunk->prev = chunk;
> > +        chunk->next = new_chunk;
> > +        stack->prev = new_chunk;
> > +        chunk = new_chunk;
> > +    }
> > +
> > +    entry = &chunk->entry[chunk->used];
> >
> >      /* Remember the type */
> >      entry->entry_type = type;
> > @@ -139,16 +153,7 @@
> >          break;
> >      }
> >
> > -    /* Register the new entry */
> > -    if (++chunk->used == STACK_CHUNK_DEPTH) {
> > -        /* Need to add a new chunk */
> > -        Stack_Chunk new_chunk = mem_allocate_aligned(sizeof(*new_chunk));
> > -        new_chunk->used = 0;
> > -        new_chunk->next = stack;
> > -        new_chunk->prev = chunk;
> > -        chunk->next = new_chunk;
> > -        stack->prev = new_chunk;
> > -    }
> > +    chunk->used++;
> >  }
> >
> >  /* Pop off an entry and return a pointer to the contents */
> > @@ -176,7 +181,10 @@
> >          internal_exception(ERROR_STACK_EMPTY, "No entries on stack!\n");
> >      }
> >
> > -    entry = &chunk->entry[chunk->used - 1];
> > +    /* Now decrement the SP */
> > +    chunk->used--;
> > +
> > +    entry = &chunk->entry[chunk->used];
> >
> >      /* Types of 0 mean we don't care */
> >      if (type && entry->entry_type != type) {
> > @@ -189,8 +197,6 @@
> >          (*entry->cleanup) (entry);
> >      }
> >
> > -    /* Now decrement the SP */
> > -    chunk->used--;
> >
> >      /* Sometimes the caller doesn't care what the value was */
> >      if (where == NULL)
> > --
> > Bryan C. Warnock
> > [EMAIL PROTECTED]
> >
>
> 
> 


Reply via email to