pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:2200:    } else C.frame = NULL;    }       callsite_prepare(&C);    callsite_execute(&C);    callsite_free(&C);       return NULL;   }    + static void pike_pop_locals(struct svalue *save_sp, ptrdiff_t n); +    void low_return(void)   {    struct svalue *save_sp = frame_get_save_sp(Pike_fp);    struct object *o = Pike_fp->current_object;    int fun = Pike_fp->fun;    int pop = Pike_fp->flags & PIKE_FRAME_RETURN_POP;       if (PIKE_FN_DONE_ENABLED()) {    /* DTrace leave probe    arg0: function name
pike.git/src/interpret.c:2239: Inside #if defined(PIKE_DEBUG)
     #ifdef PIKE_DEBUG    if(Pike_mark_sp < Pike_fp->save_mark_sp)    Pike_fatal("Popped below save_mark_sp!\n");    if(Pike_sp<Pike_interpreter.evaluator_stack)    Pike_fatal("Stack error (also simple).\n");   #endif    Pike_mark_sp=Pike_fp->save_mark_sp;    POP_PIKE_FRAME();    -  if (pop) -  pop_n_elems(Pike_sp-save_sp); -  else -  stack_pop_n_elems_keep_top (Pike_sp - save_sp - 1); +  pike_pop_locals(save_sp, !pop);    -  { -  /* consider using a flag for immediate destruct instead... */ -  extern struct object *objects_to_destruct; -  if( objects_to_destruct ) -  destruct_objects_to_destruct(); -  } -  +    #ifdef PIKE_DEBUG    if(save_sp+1 > Pike_sp && !pop)    Pike_fatal("Pike function did not leave a return value\n");   #endif       if(UNLIKELY(Pike_interpreter.trace_level>1))    do_trace_func_return (o, fun, 1);      #if defined (PIKE_USE_MACHINE_CODE) && defined (OPCODE_RETURN_JUMPADDR)    free_object (o);
pike.git/src/interpret.c:3465:    struct svalue *sp = Pike_sp;    ptrdiff_t pop = sp - save_sp - n;       if (!pop) return;       free_svalues(save_sp, pop, T_MIXED);    Pike_sp -= pop;       if (n) memmove(save_sp, save_sp+pop, n*sizeof(struct svalue));    +  { +  extern struct object *objects_to_destruct; +  if (UNLIKELY(objects_to_destruct))    low_destruct_objects_to_destruct();    } -  + }      PMOD_EXPORT void callsite_reset_pikecall(struct pike_callsite *c) {    struct pike_frame *frame;      #ifdef PIKE_DEBUG    if (c->type != CALLTYPE_PIKEFUN)    Pike_fatal("Calling callsite_reset_pikecall() on non pike frame.\n");   #endif       frame = c->frame;