pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h" - RCSID("$Id: docode.c,v 1.115 2001/06/08 01:41:53 hubbe Exp $"); + RCSID("$Id: docode.c,v 1.116 2001/06/11 18:50:52 grubba Exp $");   #include "las.h"   #include "program.h"   #include "pike_types.h"   #include "stralloc.h"   #include "interpret.h"   #include "constants.h"   #include "array.h"   #include "pike_macros.h"   #include "pike_error.h"   #include "pike_memory.h"
pike.git/src/docode.c:1190:    emit1(F_APPLY, DO_NOT_WARN((INT32)tmp1));    }    }    free_node(foo);    POP_AND_DONT_CLEANUP;    return 1;    }       case F_ARG_LIST:    case F_COMMA_EXPR: -  tmp1 = do_docode(CAR(n), (INT16)(flags & ~WANT_LVALUE)); -  tmp1+=do_docode(CDR(n),flags); +  tmp1 = 0; +  /* Avoid a bit of recursion by looping... */ +  do { +  tmp1 += do_docode(CAR(n), (INT16)(flags & ~WANT_LVALUE)); +  } while ((n = CDR(n)) && +  ((n->token == F_ARG_LIST) || (n->token == F_COMMA_EXPR))); +  tmp1 += do_docode(n, flags);    return DO_NOT_WARN((INT32)tmp1);          /* Switch:    * So far all switches are implemented with a binsearch lookup.    * It stores the case values in the programs area for constants.    * It also has a jump-table in the program itself, for every index in    * the array of cases, there is 2 indexes in the jumptable, and one extra.    * The first entry in the jumptable is used if you call switch with    * a value that is ranked lower than all the indexes in the array of