pike.git / src / interpret.h

version» Context lines:

pike.git/src/interpret.h:92:    char *current_storage;      #ifdef PROFILING    cpu_time_t children_base; /** Accounted time when the frame started. */    cpu_time_t start_time; /** Adjusted time when thr frame started. */   #endif /* PROFILING */   };      #define PIKE_FRAME_RETURN_INTERNAL 1   #define PIKE_FRAME_RETURN_POP 2 + #define PIKE_FRAME_REUSABLE 4   #define PIKE_FRAME_MALLOCED_LOCALS 0x8000    -  + struct reuse_frame_context + { +  LOW_JMP_BUF *saved_jmpbuf; +  ONERROR *err; +  PIKE_OPCODE_T *orig_pc; +  struct pike_frame *frame; +  struct svalue *sval; +  INT32 args; + }; +    struct external_variable_context   {    struct object *o;    struct inherit *inherit;    int parent_identifier;   };      #ifdef HAVE_COMPUTED_GOTO   extern PIKE_OPCODE_T *fcode_to_opcode;   extern struct op_2_f {
pike.git/src/interpret.h:513:   #define free_pike_scope(F) do{ struct pike_frame *f_=(F); if(!sub_ref(f_)) really_free_pike_scope(f_); }while(0)      /* Without fancy accounting stuff. This one can't assume there is an    * identifier corresponding to the frame (i.e. _fp_->ident might be    * bogus). */   #define LOW_POP_PIKE_FRAME(_fp_) do { \    struct pike_frame *tmp_=_fp_->next; \    if(!sub_ref(_fp_)) \    { \    really_free_pike_frame(_fp_); \ -  }else{ \ +  } else if (_fp_->refs == 1 && _fp_->flags & PIKE_FRAME_REUSABLE) { \ +  ; \ +  } else { \    ptrdiff_t num_expendible = _fp_->expendible - _fp_->locals; \    DO_IF_DEBUG( \    if( (_fp_->locals + _fp_->num_locals > Pike_sp) || \    (Pike_sp < _fp_->expendible) || \    (num_expendible < 0) || (num_expendible > _fp_->num_locals)) \    Pike_fatal("Stack failure in POP_PIKE_FRAME %p+%d=%p %p %p!\n", \    _fp_->locals, _fp_->num_locals, \    _fp_->locals+_fp_->num_locals, \    Pike_sp,_fp_->expendible)); \    debug_malloc_touch(_fp_); \
pike.git/src/interpret.h:783:   struct pike_frame *alloc_pike_frame(void);   void really_free_pike_scope(struct pike_frame *scope);   void *lower_mega_apply( INT32 args, struct object *o, ptrdiff_t fun );   void *low_mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2);   void low_return(void);   void low_return_pop(void);   void unlink_previous_frame(void);   int apply_low_safe_and_stupid(struct object *o, INT32 offset);      PMOD_EXPORT struct Pike_interpreter_struct * pike_get_interpreter_pointer(); +  + PMOD_EXPORT void + mega_apply_reuse_context(enum apply_type type, INT32 args, +  void *arg1, void *arg2, +  struct reuse_frame_context *reuse_ctx); +    PMOD_EXPORT void mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2);   PMOD_EXPORT void mega_apply_low(INT32 args, void *arg1, ptrdiff_t arg2);   PMOD_EXPORT void f_call_function(INT32 args);   PMOD_EXPORT void call_handle_error(void);   PMOD_EXPORT int safe_apply_low(struct object *o,int fun,int args);   PMOD_EXPORT int safe_apply_low2(struct object *o,int fun,int args,    const char *fun_name);   PMOD_EXPORT int safe_apply(struct object *o, const char *fun ,INT32 args);   int low_unsafe_apply_handler(const char *fun,    struct object *handler,
pike.git/src/interpret.h:812:    INT32 args,    TYPE_FIELD rettypes);   PMOD_EXPORT void apply_lfun(struct object *o, int fun, int args);   PMOD_EXPORT void apply_shared(struct object *o,    struct pike_string *fun,    int args);   PMOD_EXPORT void apply(struct object *o, const char *fun, int args);   PMOD_EXPORT void apply_svalue(struct svalue *s, INT32 args);   PMOD_EXPORT void safe_apply_svalue (struct svalue *s, INT32 args, int handle_errors);   PMOD_EXPORT void apply_external(int depth, int fun, INT32 args); +  + PMOD_EXPORT struct reuse_frame_context* + init_frame_reuse_context(struct svalue *s, INT32 args); +  + PMOD_EXPORT void free_frame_reuse_context (struct reuse_frame_context *ctx); +  + PMOD_EXPORT void + apply_svalue_reuse_context(struct reuse_frame_context *reuse_ctx); +    void slow_check_stack(void);   PMOD_EXPORT void custom_check_stack(ptrdiff_t amount, const char *fmt, ...)    ATTRIBUTE((format (printf, 2, 3)));   PMOD_EXPORT void cleanup_interpret(void);   PMOD_EXPORT void low_cleanup_interpret(struct Pike_interpreter_struct *interpreter);   void really_clean_up_interpret(void);   /* Prototypes end here */      /* These need to be after the prototypes,    * to avoid implicit declaration of mega_apply().