Ruby with Concurrent GC
See README for information on Ruby itself.
This is built on version 1.9.3-p429.
Concurrent GC Plan
[x] update init_heap()
- initialize shared memory page [x] update gc_newobj()
- check freelist: do we need to GC (low)?
- can we go concurrent? if so: call concurrent_garbage_collect()
- always return new object [x] add concurrent_garbage_collect()
- same as garbage_collect except only collects a freelist into shared memory
- disallow to go concurrent
- prepare shared memory
- call fork(). if child: call child_garbage_collect(), else: return [x] add child_garbage_collect()
- actions as child process
- call mark
- update memory page
- signal changes
- exit [x] add signal handler for changes
- actions as parent process
- merge changes
- allow to go concurrent again