pike.git / src / interpret.h

version» Context lines:

pike.git/src/interpret.h:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: interpret.h,v 1.151 2004/05/01 16:46:19 marcus Exp $ + || $Id: interpret.h,v 1.152 2004/05/20 20:13:38 grubba Exp $   */      #ifndef INTERPRET_H   #define INTERPRET_H      #include "global.h"   #include "program.h"   #include "pike_error.h"   #include "object.h" -  + #include "pike_rusage.h"      struct Pike_interpreter {    /* Swapped variables */    struct svalue *stack_pointer;    struct svalue *evaluator_stack;    struct svalue **mark_stack_pointer;    struct svalue **mark_stack;    struct pike_frame *frame_pointer;    int evaluator_stack_malloced;    int mark_stack_malloced;
pike.git/src/interpret.h:26: Inside #if defined(PIKE_THREADS)
  #ifdef PIKE_THREADS    struct thread_state *thread_state;   #endif    char *stack_top;    DO_IF_SECURITY(struct object *current_creds;)       int svalue_stack_margin;    int c_stack_margin;      #ifdef PROFILING - #ifdef HAVE_GETHRTIME -  long long accounted_time; -  long long time_base; - #endif +  cpu_time_t accounted_time; /* Time spent and accounted for so far. */ +  cpu_time_t unlocked_time; /* Time spent unlocked so far. */    char *stack_bottom;   #endif       int trace_level;   };      #ifndef STRUCT_FRAME_DECLARED   #define STRUCT_FRAME_DECLARED   #endif   struct pike_frame
pike.git/src/interpret.h:69:    /* This tells us the current level of    * svalues on the stack that can be discarded once the    * current function is done with them    */    struct svalue *expendible;    struct svalue **save_mark_sp;    struct svalue **mark_sp_base;    struct object *current_object;       DO_IF_SECURITY(struct object *current_creds;) - #if defined(PROFILING) && defined(HAVE_GETHRTIME) -  long long children_base; -  long long start_time; -  INT32 self_time_base; + #if defined(PROFILING) +  cpu_time_t children_base; /* Accounted time when the frame started. */ +  cpu_time_t start_time; /* Adjusted time when thr frame started. */ +  cpu_time_t self_time_base; /* ??? */   #endif    struct inherit context;    char *current_storage;   };      #define PIKE_FRAME_RETURN_INTERNAL 1   #define PIKE_FRAME_RETURN_POP 2   #define PIKE_FRAME_MALLOCED_LOCALS 0x8000      struct external_variable_context
pike.git/src/interpret.h:460:   }while(0)      #define free_pike_frame(F) do{ struct pike_frame *f_=(F); if(!sub_ref(f_)) really_free_pike_frame(f_); }while(0)      /* A scope is any frame which may have malloced locals */   #define free_pike_scope(F) do{ struct pike_frame *f_=(F); if(!sub_ref(f_)) really_free_pike_scope(f_); }while(0)      #define POP_PIKE_FRAME() do { \    struct pike_frame *_fp_ = Pike_fp; \    struct pike_frame *tmp_=_fp_->next; \ +  DO_IF_PROFILING({ \ +  /* Time spent in this frame + children. */ \ +  cpu_time_t time_passed = \ +  get_cpu_time() - Pike_interpreter.unlocked_time; \ +  /* Time spent in children to this frame. */ \ +  cpu_time_t time_in_children; \ +  /* Time spent in just this frame. */ \ +  cpu_time_t self_time; \ +  struct identifier *function; \ +  DO_IF_PROFILING_DEBUG({ \ +  fprintf(stderr, "%p}: Pop got %" PRINT_CPU_TIME \ +  " (%" PRINT_CPU_TIME ")" \ +  " %" PRINT_CPU_TIME " (%" PRINT_CPU_TIME ")\n", \ +  Pike_interpreter.thread_state, time_passed, \ +  _fp_->start_time, Pike_interpreter.accounted_time, \ +  _fp_->children_base); \ +  }); \ +  time_passed -= _fp_->start_time; \ +  DO_IF_DEBUG(if (time_passed < 0) { \ +  Pike_fatal("Negative time_passed: %" PRINT_CPU_TIME \ +  " now: %" PRINT_CPU_TIME \ +  " unlocked_time: %" PRINT_CPU_TIME \ +  " start_time: %" PRINT_CPU_TIME \ +  "\n", time_passed, get_cpu_time(), \ +  Pike_interpreter.unlocked_time, \ +  _fp_->start_time); \ +  }); \ +  time_in_children = \ +  Pike_interpreter.accounted_time - _fp_->children_base; \ +  DO_IF_DEBUG(if (time_in_children < 0) { \ +  Pike_fatal("Negative time_in_children: %" \ +  PRINT_CPU_TIME \ +  " accounted_time: %" PRINT_CPU_TIME \ +  " children_base: %" PRINT_CPU_TIME \ +  "\n", time_in_children, \ +  Pike_interpreter.accounted_time, \ +  _fp_->children_base); \ +  }); \ +  self_time = time_passed - time_in_children; \ +  DO_IF_DEBUG(if (self_time < 0) { \ +  Pike_fatal("Negative self_time: %" PRINT_CPU_TIME \ +  " time_passed: %" PRINT_CPU_TIME \ +  " time_in_children: %" PRINT_CPU_TIME \ +  "\n", self_time, time_passed, \ +  time_in_children); \ +  }); \ +  Pike_interpreter.accounted_time += self_time; \ +  /* FIXME: Can context.prog be NULL? */ \ +  function = _fp_->context.prog->identifiers + _fp_->ident; \ +  /* function->total_time = \ +  Pike_fp->self_time_base + time_passed; */ \ +  function->total_time += time_passed; \ +  function->self_time += self_time; \ +  }); \    if(!sub_ref(_fp_)) \    { \    really_free_pike_frame(_fp_); \    }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", \