pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.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: interpret.c,v 1.145 2000/04/21 00:29:48 hubbe Exp $"); + RCSID("$Id: interpret.c,v 1.146 2000/04/21 20:08:08 hubbe Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"   #include "svalue.h"   #include "array.h"   #include "mapping.h"   #include "error.h"   #include "language.h"   #include "stralloc.h"   #include "constants.h"
pike.git/src/interpret.c:481:   {    fp=0;    pop_n_elems(sp - evaluator_stack);   }      #ifdef PIKE_DEBUG   #define BACKLOG 512   struct backlog   {    INT32 instruction; -  INT32 arg; +  INT32 arg,arg2;    struct program *program;    unsigned char *pc;   };      struct backlog backlog[BACKLOG];   int backlogp=BACKLOG-1;      void dump_backlog(void)   {    int e;
pike.git/src/interpret.c:507:    {    e++;    if(e>=BACKLOG) e=0;       if(backlog[e].program)    {    char *file;    INT32 line;       file=get_line(backlog[e].pc-1,backlog[e].program, &line); +  if(backlog[e].instruction < 0 || backlog[e].instruction+F_OFFSET > F_MAX_OPCODE) +  { +  fprintf(stderr,"%s:%ld: ILLEGAL INSTRUCTION %d\n", +  file, +  (long)line, +  backlog[e].instruction + F_OFFSET); +  continue; +  } +  +  +  if(instrs[backlog[e].instruction].flags & I_HASARG2) +  { +  fprintf(stderr,"%s:%ld: %s(%ld,%ld)\n", +  file, +  (long)line, +  low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program), +  (long)backlog[e].arg, +  (long)backlog[e].arg2); +  } +  else if(instrs[backlog[e].instruction].flags & I_HASARG) +  {    fprintf(stderr,"%s:%ld: %s(%ld)\n",    file,    (long)line,    low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program),    (long)backlog[e].arg); -  +  }else{ +  fprintf(stderr,"%s:%ld: %s\n", +  file, +  (long)line, +  low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program));    } -  +  }    }while(e!=backlogp);   }      #endif   static int o_catch(unsigned char *pc);      #ifdef PIKE_DEBUG   #define eval_instruction eval_instruction_with_debug   #include "interpreter.h"