Revision 29637
- Date:
- 2008/07/21 01:08:30
- Files:
Legend:
- Added
- Removed
- Modified
-
branches/gsoc_pdd09/include/parrot/dod.h
391 391 mark the new item too. */ 392 392 # define GC_WRITE_BARRIER(interp, agg, old, _new) do { \ 393 393 if ((agg)) \ 394 pobject_lives(interp, (PObj*)(agg)); \ 394 pobject_lives((interp), (PObj*)(agg)); \ 395 395 if ((_new)) \ 396 pobject_lives(interp, (PObj*)(_new)); \ 396 pobject_lives((interp), (PObj*)(_new)); \ 397 397 } while (0) 398 398 /* Mark the aggregate, the new object and the new_key, they are all 399 399 apparently being used and I want to make sure they don't get lost */ 400 400 # define GC_WRITE_BARRIER_KEY(interp, agg, old, old_key, _new, new_key) do {\ 401 401 if ((agg)) \ 402 pobject_lives(interp, (PObj*)(agg)); \ 402 pobject_lives((interp), (PObj*)(agg)); \ 403 403 if ((_new)) \ 404 pobject_lives(interp, (PObj*)_new); \ 404 pobject_lives((interp), (PObj*)(_new)); \ 405 405 if ((new_key)) \ 406 pobject_lives(interp, (PObj*)new_key); \ 406 pobject_lives((interp), (PObj*)(new_key)); \ 407 407 } while (0) 408 408 #endif 409 409 -
branches/gsoc_pdd09/include/parrot/smallobject.h
305 305 # define ARENA_to_PObj(p) (p) 306 306 #endif 307 307 308 #define GC_NEXT_OBJECT_IN_POOL(ptr, size) (void*)((char*)ptr + size) 308 #define GC_NEXT_OBJECT_IN_POOL(ptr, size) (void*)((char*)(ptr) + (size)) 309 309 310 310 311 311 /* HEADERIZER BEGIN: src/gc/smallobject.c */ -
branches/gsoc_pdd09/src/gc/gc_it.c
520 520 { 521 521 const Arenas * const arena_base = interp->arena_base; 522 522 Gc_it_data * const gc_priv_data = (Gc_it_data *)arena_base->gc_private; 523 524 523 register INTVAL i; 525 524 526 # define gc_it_sweep_sized_arenas(i, d, p) gc_it_sweep_header_arenas(i, d, p) 527 528 525 for (i = arena_base->num_sized - 1; i >= 0; i--) { 529 526 Small_Object_Pool * const pool = arena_base->sized_header_pools[i]; 530 527 if (pool) 531 gc_it_sweep_sized_arenas(interp, gc_priv_data, pool); 528 gc_it_sweep_header_arenas(interp, gc_priv_data, pool); 532 529 } 533 530 534 531 }