pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:291: Inside #if defined(PROFILING)
  #ifdef PROFILING    interpreter->unlocked_time = 0;    interpreter->accounted_time = 0;   #endif       interpreter->trace_level = default_t_flag;       return 0; /* OK. */   }    + static struct pike_frame *free_pike_frame = NULL; +    PMOD_EXPORT void init_interpreter(void)   { -  + #ifdef HAVE_VALGRIND_MACROS +  VALGRIND_CREATE_MEMPOOL(&free_pike_frame, 0, 0); + #endif    if (low_init_interpreter(Pike_interpreter_pointer)) {    Pike_fatal("Out of memory initializing the interpreter stack.\n");    }      #ifdef PIKE_DEBUG    {    static struct callback *spcb;    if(!spcb)    {    spcb=add_gc_callback(gc_check_stack_callback,0,0);
pike.git/src/interpret.c:1929:    SNPRINTF(buf, sizeof (buf), "%s:", file);    fprintf(stderr,"- %-20s %s\n",buf,s);    }       if (filep) {    free_string(filep);    }    free(s);   }    - static struct pike_frame *free_pike_frame; +    static struct pike_frame_chunk {    struct pike_frame_chunk *next;   } *pike_frame_chunks;   static int num_pike_frame_chunks;   static int num_pike_frames;      PMOD_EXPORT void really_free_pike_frame( struct pike_frame *X )   {    free_object(X->current_object);    if(X->current_program)
pike.git/src/interpret.c:1958:    X->current_program=0;    X->context=0;    X->scope=0;    X->current_object=0;    X->flags=0;    X->expendible=0;    X->locals=0;    DO_IF_SECURITY( X->current_creds=0; )    );    X->next = free_pike_frame; -  PIKE_MEM_NA(*X); + #ifdef HAVE_VALGRIND_MACROS +  VALGRIND_MEMPOOL_FREE(&free_pike_frame, X); + #endif    free_pike_frame = X;   }      struct pike_frame *alloc_pike_frame(void)   {    struct pike_frame *res;    if( free_pike_frame )    {    res = free_pike_frame; -  PIKE_MEM_RW(res->next); + #ifdef HAVE_VALGRIND_MACROS +  VALGRIND_MEMPOOL_ALLOC(&free_pike_frame, res, sizeof(struct pike_frame)); +  VALGRIND_MAKE_MEM_DEFINED(&res->next, sizeof(void*)); + #endif    free_pike_frame = res->next; -  PIKE_MEM_WO(*res); + #ifdef HAVE_VALGRIND_MACROS +  VALGRIND_MAKE_MEM_UNDEFINED(&res->next, sizeof(void*)); + #endif    res->refs=0;    add_ref(res); /* For DMALLOC... */    res->flags=0;    res->next=0;    res->scope=0;       DO_IF_SECURITY(    if(CURRENT_CREDS) {    add_ref(res->current_creds=CURRENT_CREDS);    } else {