2010-05-06 Rodrigo Kumpera <rkumpera@novell.com>
commit8e861d5d6f758a87ede445be3ecf1fd9dee4d7f7
authorkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Thu, 6 May 2010 20:16:36 +0000 (6 20:16 +0000)
committerkumpera <kumpera@e3ebcda4-bce8-0310-ba0a-eca2169e7518>
Thu, 6 May 2010 20:16:36 +0000 (6 20:16 +0000)
treee5a6bd1d1ae464579b4660755008f993603ab29a
parent68f5878ed751907cbd9a36683b3e42f20f2032b1
2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>

* gc-internal.h: Add new functions required for ephemeron support.

* gc.c: Implement ves_icall_System_GC_register_ephemeron_array.

* icall-def.h: Add GC::register_ephemeron_array.

* object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
under sgen. Its fields must not be marked.

* sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.

* sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
handling finalizable objects. Clean dead ones after all finalizable
handling.

* sgen-gc.c (dump_heap): Add new kind of internal memory.

* sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
arrays from the dead domain.

* sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.

* sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
whose keys are reachable.

* sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
list of live ephemeron arrays.

git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mono@156847 e3ebcda4-bce8-0310-ba0a-eca2169e7518
mono/metadata/ChangeLog
mono/metadata/gc-internal.h
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/object.c
mono/metadata/sgen-gc.c