Revision 29664

Date:
2008/07/22 01:38:55
Author:
Whiteknight
Revision Log:
[gsoc_pdd09] Fixes to implementation:
* Added long-missing support for GC_trace_normal and GC_trace_stack_FLAG
* Re-added trace_system_areas() into Parrot_dod_trace_root()
Files:

Legend:

 
Added
 
Removed
 
Modified
  • branches/gsoc_pdd09/src/gc/dod.c

     
    386 386 unsigned int i = 0;
    387 387
    388 388 if (trace_stack) {
    389 /* trace_system_areas(interp); */
    389 trace_system_areas(interp);
    390 390 if (trace_stack == 2)
    391 391 return 0;
    392 392 }
  • branches/gsoc_pdd09/src/gc/gc_it.c

     
    239 239 {
    240 240 const Arenas * const arena_base = interp->arena_base;
    241 241 Gc_it_data * const gc_priv_data = (Gc_it_data *)(arena_base->gc_private);
    242 const UINTVAL gc_trace = flags & (GC_trace_normal | GC_trace_stack_FLAG);
    243 const UINTVAL gc_stack = flags & GC_trace_stack_FLAG;
    244 const UINTVAL gc_lazy = flags & GC_lazy_FLAG;
    245 const UINTVAL gc_volatile = flags & GC_no_trace_volatile_roots;
    242 246
    247
    243 248 if (flags & GC_finish_FLAG) {
    244 249
    245 250 # if GC_IT_DEBUG
     
    278 283 case GC_IT_MARK_ROOTS:
    279 284 if (Parrot_is_blocked_GC_mark(interp))
    280 285 break;
    281 Parrot_dod_trace_root(interp, 1);
    286 if (gc_trace && gc_stack)
    287 Parrot_dod_trace_root(interp, 1);
    288 else if (gc_stack)
    289 Parrot_dod_trace_root(interp, 2);
    290 else if (gc_trace)
    291 Parrot_dod_trace_root(interp, 0);
    282 292 gc_priv_data->state = GC_IT_RESUME_MARK;
    283 293 GC_IT_BREAK_AFTER_2;
    284 294
  • branches/gsoc_pdd09/src/gc/gc_it.readme

     
    12 12 commented out the code in src/gc/resources.c for now.
    13 13 # src/cpu_dep.c:trace_system_areas is causing segfaults (can't imagine why).
    14 14 I commented out the call to it in src/gc/dod.c:Parrot_dod_trace_root.
    15 (Actually, this is back in now and seems to be working well)
    15 16 # Allocating lists causes problems in src/list.c:list_new. When I allocate
    16 17 directly from the system (not from the GC) it doesnt cause problems. (this might be fixed)
    17 18 # Sweep code causes problems. Sweep_pmc_pools causes more problems more often,