Branch: Tag:

2003-09-08

2003-09-08 20:05:21 by Martin Stjernholm <mast@lysator.liu.se>

Cleaned up the gc check stuff a bit (large indentantion changes). Added more
tracking in the gc to help track down bugs when the gc follows munged
pointers in the mark pass. That's activated with GC_MARK_DEBUG.

Rev: src/array.c:1.149
Rev: src/backend.cmod:1.47
Rev: src/error.c:1.115
Rev: src/gc.c:1.228
Rev: src/gc.h:1.104
Rev: src/interpret.c:1.329
Rev: src/mapping.c:1.170
Rev: src/multiset.c:1.78
Rev: src/object.c:1.247
Rev: src/program.c:1.524
Rev: src/security.c:1.45
Rev: src/svalue.c:1.173
Rev: src/svalue.h:1.123
Rev: src/threads.c:1.220

2:   || 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: threads.c,v 1.219 2003/06/30 17:06:10 mast Exp $ + || $Id: threads.c,v 1.220 2003/09/08 20:05:21 mast Exp $   */      #ifndef CONFIGURE_TEST   #include "global.h" - RCSID("$Id: threads.c,v 1.219 2003/06/30 17:06:10 mast Exp $"); + RCSID("$Id: threads.c,v 1.220 2003/09/08 20:05:21 mast Exp $");      PMOD_EXPORT int num_threads = 1;   PMOD_EXPORT int threads_disabled = 0;
1543:   {    struct thread_state *tmp=THIS_THREAD;    if(tmp->thread_local != NULL) -  debug_gc_check2(tmp->thread_local, T_OBJECT, o, +  debug_gc_check (tmp->thread_local,    " as mapping for thread local values in thread");      #ifdef PIKE_DEBUG
1551: Inside #if defined(PIKE_DEBUG)
   {    struct pike_frame *f;    debug_malloc_touch(o); -  debug_gc_xmark_svalues(tmp->state.evaluator_stack, -  tmp->state.stack_pointer-tmp->state.evaluator_stack-1, +  gc_mark_external_svalues(tmp->state.evaluator_stack, +  tmp->state.stack_pointer-tmp->state.evaluator_stack,    " in idle thread stack");       for(f=tmp->state.frame_pointer;f;f=f->next)    {    debug_malloc_touch(f);    if(f->context.parent) -  gc_external_mark2(f->context.parent,0," in Pike_fp->context.parent of idle thread"); -  gc_external_mark2(f->current_object,0," in Pike_fp->current_object of idle thread"); -  gc_external_mark2(f->context.prog,0," in Pike_fp->context.prog of idle thread"); +  gc_mark_external (f->context.parent, " in Pike_fp->context.parent of idle thread"); +  gc_mark_external (f->current_object, " in Pike_fp->current_object of idle thread"); +  gc_mark_external (f->context.prog, " in Pike_fp->context.prog of idle thread");    }    }   #endif
1682: Inside #if defined(PIKE_DEBUG)
   FOR_EACH_THREAD (s, {    if (s->thread_local &&    (val = low_mapping_lookup(s->thread_local, &key))) -  debug_gc_check_svalues2(val, 1, T_OBJECT, o, +  debug_gc_check_svalues (val, 1,    " as thread local value in Thread.Local object"    " (indirect ref)");    });