Branch: Tag:

2000-04-15

2000-04-15 05:05:28 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

more and better debug, some cleanup in gc()

Rev: src/dmalloc.h:1.25
Rev: src/gc.c:1.65
Rev: src/gc.h:1.29
Rev: src/interpreter.h:1.37
Rev: src/las.c:1.175
Rev: src/main.c:1.89
Rev: src/mapping.c:1.73
Rev: src/object.c:1.109
Rev: src/pike_macros.h:1.15
Rev: src/pike_memory.c:1.65
Rev: src/program.c:1.226
Rev: src/stralloc.c:1.82
Rev: src/svalue.h:1.51
Rev: src/threads.c:1.119
Rev: src/threads.h:1.81

5:   \*/   /**/   #include "global.h" - RCSID("$Id: program.c,v 1.225 2000/04/13 12:16:14 grubba Exp $"); + RCSID("$Id: program.c,v 1.226 2000/04/15 05:05:28 hubbe Exp $");   #include "program.h"   #include "object.h"   #include "dynamic_buffer.h"
546:    ID_FROM_INT(new_program, *(unsigned short *)b)->name);   }    + #ifdef PIKE_DEBUG + char *find_program_name(struct program *p, INT32 *line) + { +  INT32 pos; +  + #ifdef DEBUG_MALLOC +  char *tmp=dmalloc_find_name(p); +  *line=0; +  if(tmp) return tmp; + #endif +  +  /* Didn't find a given name, revert to ad-hoc method */ +  +  for(pos=0;pos<100;pos++) +  { +  tmp=get_line(p->program+pos, p, line); +  if(tmp && *line) return tmp; +  if(pos+1>=(long)p->num_program) break; +  } +  *line=0; +  return 0; + } + #endif +    void fixate_program(void)   {    INT32 i,e,t;
600:    {   #define DBSTR(X) ((X)?(X)->str:"")    int e,v; -  struct memory_map *m=dmalloc_alloc_mmap( DBSTR(lex.current_file), -  lex.current_line); +  INT32 line; +  char *tmp; +  struct memory_map *m=0;; +  if(lex.current_file && +  lex.current_file->str && +  lex.current_file->len && +  !strcmp(lex.current_file->str,"-")) +  { +  m=dmalloc_alloc_mmap( DBSTR(lex.current_file), lex.current_line); +  } +  else if( (tmp=find_program_name(new_program, &line)) ) +  { +  m=dmalloc_alloc_mmap( tmp, line); +  }else{ +  m=dmalloc_alloc_mmap( "program id", new_program->id); +  } +     for(e=0;e<new_program->num_inherits;e++)    {    struct inherit *i=new_program->inherits+e;
624:    if(i->name)    {    tmp=i->name->str; -  }else if(!(tmp=dmalloc_find_name(i->prog))){ -  /* Didn't find a given name, revert to ad-hoc method */ -  INT32 line,pos; -  -  for(pos=0;pos<100;pos++) -  { -  tmp=get_line(i->prog->program+pos, i->prog, &line); -  if(tmp && line) break; -  if(pos+1>=(long)i->prog->num_program) break; +     } -  if(!(tmp && line)) +  else if(!(tmp=find_program_name(i->prog, &line)))    {    sprintf(buffer,"inherit[%d]",e);    tmp=buffer;    } -  } +     dmalloc_add_mmap_entry(m,    tmp,    OFFSETOF(object, storage) + i->storage_offset,