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 */