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:   \*/      /* -  * $Id: svalue.h,v 1.50 2000/04/12 10:39:09 grubba Exp $ +  * $Id: svalue.h,v 1.51 2000/04/15 05:05:28 hubbe Exp $    */   #ifndef SVALUE_H   #define SVALUE_H
250:   }while(0)      #ifdef PIKE_DEBUG + extern void describe(void *); /* defined in gc.c */   #define check_type(T) if(T > MAX_TYPE && T!=T_LVALUE && T!=T_SHORT_LVALUE && T!=T_VOID && T!=T_DELETED && T!=T_ARRAY_LVALUE) fatal("Type error: %d\n",T) - #define check_refs(S) if((S)->type < MAX_REF_TYPE && (!(S)->u.refs || (S)->u.refs[0] < 0)) fatal("Svalue to object without references.\n") - #define check_refs2(S,T) if((T) < MAX_REF_TYPE && (S)->refs && (S)->refs[0] <= 0) fatal("Svalue to object without references.\n") +     -  + #define check_refs(S) do {\ +  if((S)->type < MAX_REF_TYPE && (!(S)->u.refs || (S)->u.refs[0] < 0)) { \ +  describe((S)->u.refs); \ +  fatal("Svalue to object without references.\n"); \ + } }while(0) +  + #define check_refs2(S,T) do { \ + if((T) < MAX_REF_TYPE && (S)->refs && (S)->refs[0] <= 0) {\ +  describe((S)->refs); \ +  fatal("(short) Svalue to object without references.\n"); \ + } }while(0) +    #ifdef DEBUG_MALLOC   #define add_ref(X) ((INT32 *)debug_malloc_pass( &((X)->refs)))[0]++   #else