Speaking of the OCaml GC in general, wouldn't it make sense to replace the 
current generational collector with a collector framework that requires less 
copying in the common case. For example, dividing the heap into two parts, 
"large object space" and "small object space", where LOS is managed by 
mark-sweep/mark-compact (could use the current major heap) and SOS is managed 
by a recent mark-copy/mark-region collector (Immix [1] comes to mind here). 
That way objects would no longer need to be copied between generations, and 
using Immix may also reduce cache misses and improve locality of small/medium 
sized objects (with proper evacuation heuristics). This should be doable with a 
moderate amount of work, and should require no incompatible changes, while 
opening the door for concurrent/parallel garbage collection (this would require 
incompatible changes then, replacing caml_young_ptr/caml_young_limit with TLS 
vars, etc.).

Benedikt

[1] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.144.3640
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to