Branch: Tag:

2012-06-28

2012-06-28 21:52:57 by Per Hedbor <ph@opera.com>

Do not try to verify that the stack points correctly in FILL_STACK when d_flag is set. It will not be, since that is the funciton that actually initializes the locals.

913:    ADD_RUNNED(instr);   #endif /* HAVE_COMPUTED_GOTO */    -  if(d_flag) +  if(d_flag )    {    backlogp++;    if(backlogp >= BACKLOG) backlogp=0;
956:    if(Pike_sp > Pike_interpreter.evaluator_stack+Pike_stack_size)    Pike_fatal("stack error (overflow).\n");    +  +  /* The locals will not be correct when running FILL_STACK +  (actually, they will always be incorrect before running FILL_STACK, +  but at least currently that is the first opcode run). +  */ +  if( instr+F_OFFSET != F_FILL_STACK ) +  {    if(/* Pike_fp->fun>=0 && */ Pike_fp->current_object->prog &&    Pike_fp->locals+Pike_fp->num_locals > Pike_sp) -  Pike_fatal("Stack error (stupid!).\n"); +  Pike_fatal("Stack error (stupid! %p %p+%x).\n",Pike_sp, +  Pike_fp->locals, Pike_fp->num_locals*sizeof(struct svalue)); +  }       if(Pike_interpreter.recoveries &&    (Pike_sp-Pike_interpreter.evaluator_stack <