cvsuser     02/12/12 23:42:51

  Modified:    .        interpreter.c
  Log:
  Eliminate two warnings, simplify the code a little.
  
  Revision  Changes    Path
  1.122     +29 -39    parrot/interpreter.c
  
  Index: interpreter.c
  ===================================================================
  RCS file: /cvs/public/parrot/interpreter.c,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -w -r1.121 -r1.122
  --- interpreter.c     30 Nov 2002 03:07:56 -0000      1.121
  +++ interpreter.c     13 Dec 2002 07:42:50 -0000      1.122
  @@ -1,7 +1,7 @@
   /* interpreter.c
    *  Copyright: (When this is determined...it will go here)
    *  CVS Info
  - *     $Id: interpreter.c,v 1.121 2002/11/30 03:07:56 josh Exp $
  + *     $Id: interpreter.c,v 1.122 2002/12/13 07:42:50 sfink Exp $
    *  Overview:
    *     The interpreter api handles running the operations
    *  Data Structure and Algorithms:
  @@ -567,48 +567,38 @@
       mem_sys_free(interpreter->warns);
   
       /* XXX move this to register.c */
  -    for (i = 0; i< 4; i++) {
  +    {
  +        struct IRegChunk *stacks[4];
           struct IRegChunk *top, *next;
  -        switch(i) {
  -            case 0:
  -                top = interpreter->ctx.int_reg_top;
  -                break;
  -            case 1:
  -                top = (struct IRegChunk*) interpreter->ctx.num_reg_top;
  -                break;
  -            case 2:
  -                top = (struct IRegChunk*) interpreter->ctx.string_reg_top;
  -                break;
  -            case 3:
  -                top = (struct IRegChunk*) interpreter->ctx.pmc_reg_top;
  -                break;
  -        }
  +        stacks[0] = interpreter->ctx.int_reg_top;
  +        stacks[1] = (struct IRegChunk*) interpreter->ctx.num_reg_top;
  +        stacks[2] = (struct IRegChunk*) interpreter->ctx.string_reg_top;
  +        stacks[3] = (struct IRegChunk*) interpreter->ctx.pmc_reg_top;
  +        for (i = 0; i< 4; i++) {
  +            top = stacks[i];
           for (; top ; ) {
               next = top->next;
               mem_sys_free(top);
               top = next;
           }
       }
  +    }
  +
       /* XXX move this to stacks.c */
  +    {
  +        Stack_Chunk_t *chunks[3];
  +        chunks[0] = interpreter->ctx.pad_stack;
  +        chunks[1] = interpreter->ctx.user_stack;
  +        chunks[2] = interpreter->ctx.control_stack;
       for (i = 0; i< 3; i++) {
  -        Stack_Chunk_t *top, *next;
  -        switch(i) {
  -            case 0:
  -                top = interpreter->ctx.pad_stack;
  -                break;
  -            case 1:
  -                top = interpreter->ctx.user_stack;
  -                break;
  -            case 2:
  -                top = interpreter->ctx.control_stack;
  -                break;
  -        }
  +            Stack_Chunk_t *top = chunks[0];
           while (top->next)
               top = top->next;
           while(top) {
  -            next = top->prev;
  +                Stack_Chunk_t *next = top->prev;
               mem_sys_free(top);
               top = next;
  +            }
           }
       }
       /* intstack */
  
  
  


Reply via email to