Hello.

After recent play with Boehm GC and Parrot's GC I have next "roadmap" for properly encapsulate GC in Parrot. It will give us ability to implement almost any kind of GC without reworking all things.

1. Extend GC_Subsystem struct with next functions:
  a) allocate_pmc_header(flags)
  b) allocate_string_header(flags?)
  c) allocate_attributes(pmc_enum)
d) allocate_raw_buffer - to allocate buffer without pointers. Useful for Strings, FixedIntegerArray, etc.
  e) allocate_buffer - buffer which can contains pointers.

2. Change various Parrot_gc_foo functions to use it instead of interp->mem_pools and remove interp->mem_pools.

3. Change current MS GC to allocate mem_pools in GC_Subsystem->gc_private attribute.

Any thought/ideas/objections? If no one will complain I'll try to implement it over weekend so we can ship it with 2.0.

--
Bacek
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to